1.虚拟化模型


 __   __

|vm| |vm|

|__| |__|

 ____________

|   VMM      |

|____________|

 ____________

|  基础硬件  |

|____________|


2.通过虚拟化工具把CPU、内存、硬盘等真实硬件资源给模拟成更少的虚拟硬件资源



3.为什么要虚拟化

a.使硬件资源使用率最大化

b.云计算领域



4.虚拟化分类

a.软件级别,所有硬件通过模拟器模拟出来(qemu)

b.硬件级别,通过VMM(虚拟监视器)将硬件分配和管理,操作系统运行在建立好的VM上(xen、vmware[ESX,workstation]、kvm、virtualbox)

c.操作系统级别,虚拟机操作系统和宿主操作系统共享,可以模拟上千个虚拟机出来(openvz)



5.半虚拟化/全虚拟化

a.半虚拟化(para-virtualization)

b.半虚拟化宿主机和客户机都需要更改操作系统内核,客户机知道宿主机的存在,两者需要协同合作。(Xen支持半虚拟化)

c.全虚拟化(full virtualization)

d.全虚拟化为客户机提供了完整的虚拟硬件资源,客户机不需要做任何更改,它不知道宿主机的存在。(kvm属于全虚拟化,vmware也是全虚拟化)



6.Xen和KVM比较

a.不管CPU支持不支持虚拟化,Xen都可以安装,而KVM必须要CPU支持虚拟化才行。

b.Xen支持半虚拟化也支持全虚拟化,KVM仅支持全虚拟化

c.安装Xen后,Xen会替换原来的内核接管系统管理。而KVM仅仅是Linux内核的一个模块,依然由系统原来内核管理系统。

d.KVM是后起之秀,历史没有Xen早,但是KVM出来后得到光啦linux内核喜爱,就是因为KVM不像Xen那样需要修改内核,接管内核

e.Xen被Ctrix收购,有商业版的Xen Server,而KVM被RedHat收购

f.在Xen的体系结构中,Xen Hypervisor运行于硬件之上,并且将系统西苑进行了虚拟化,将虚拟化的资源分配给上层的虚拟机(VM),然后通过虚拟机VM来运行相应的客户机操作系统。



7.KVM介绍

a.KVM全称kernel virtual maching,是针对包含虚拟化扩展(intel-VT或AMD-V)的x86硬件上的完全原生的虚拟化解决方案。

b.是以色列Qumranet开发,基于Linux内核。2008年9月4日RedHat公司收购KVM。

c.rhel5/centos5默认是Xen,rhel6/centos6版本默认是KVM。



8.KVM架构

a.KVM驱动:作为Linux内核的一个模块,其主要负责虚拟机的创建,虚拟内存的分配,VCPU寄存器的读写以及VCPU的运行。

b.Qemu:用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径。

c.Libvirt,virsh:由于Qemu工具效率不高,RedHat为KVM开发了辅助工具,比如libvirt、libguestfs等。Libvirt是一套提供了多种语言接口的API,为各种虚拟化工具提供了一套方便、可靠的编程接口,而且支持Xen。使用libvirt,你只需要通过libvirt提供的函数连接到KVM或Xen宿主机,便可以用同样的命令控制不同的虚拟机了。

Libvirt不仅提供了API,还自带一套基于文本的管理虚拟机的命令virsh,可以通过使用virsh命令来使用libvirt的全部功能。

d.virt-manager是一套用python编写的虚拟机管理图形界面,用户可以通过它直观地操作不同的虚拟机,利用libvirt的API实现的。