虚拟化的模型
为什么要使用虚拟化?
1)使硬件资源利用率最大化
2)云计算领域
虚拟化分类
1)软件级别,所有硬件通过模拟器模拟出来,如qemu
2)硬件级别,通过VMM(Virtual Machine Monitor,虚拟机监视器)管理和分配硬件资源,操作系统运行在vm上,如xen,vmware,kvm,virtualbox
3)操作系统级别,虚拟机操作系统和宿主机操作系统共享,可以模拟上千台虚拟机,如openvz
半虚拟化(para-virtualization)
在半虚拟化中,宿主机和客户机都需要更改操作系统内核,客户机知道宿主机的存在,两者协同合作;
xen支持半虚拟化
全虚拟化(full virtualization)
全虚拟化为客户机提供了完整的虚拟硬件资源,客户机和宿主机内核不需更改,客户机不知道宿主机的存在
kvm,vmware
xen和lvm比较
1)xen无论cpu是否支持虚拟化,都可以安装;kvm需要cpu支持虚拟化技术
2)xen支持半虚拟化和全虚拟化,kvm支持半虚拟化
3)xen会替换原有的内核接管系统,较为“流氓”;kvm是linux内核的一个模块,不替代内核
4)xen被Ctrix收购,kvm被redhat收购
5)xen hypervisor相当于VMM,直接运行于硬件之上
KVM:kernel virtual machine是针对包含虚拟化扩展(Intel-VT或AMD-V)的x86硬件上,完全原生的虚拟化解决方案。
KVM是以色列QUmranet开发,基于linux内核,2008年被radhat收购
rhel5/centos5默认支持xen;rhel6/centos6默认支持kvm
KVM架构
1)KVM驱动:linux内核的一个模块,主要负责创建虚拟机,分配虚拟内存,VCPU寄存器的读写
2)Qemu:用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径
3)libvirt,virsh:由于Qemu的效率不高,redhat为KVM开发了辅助工具,如libvirt,libguestfs;libvirt是一种提供多种语言接口的API,支持xen;virsh是一套基于文本的管理命令
4)vir-manager是一套python编写的虚拟机管理图形界面