虚拟化

1.虚拟化介绍

(1)虚拟化模型

虚拟化_第1张图片

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


(3)为什么要虚拟化?

使硬件资源使用率最大化、云计算领域


(4)虚拟化分类

1)软件级别:所有硬件通过模拟器模拟出来(qemu)

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

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


2.半虚拟化、全虚拟化

(1)半虚拟化(para-virtualization)

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


(2)全虚拟化(full virtualization)

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


(3)半虚拟化性能要比全虚拟化高


3.Xen和KVM比较

(1)不管cpu支持不支持虚拟化,Xen都可以安装,而KVM必须要cpu支持虚拟化才行。

(2)Xen支持半虚拟化也支持全虚拟化,KVM仅支持全虚拟化

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

(4)KVM是后起之秀,历史没有Xen早,但是KVM出来后得到广大Linux内核喜爱,就是因为KVM不像Xen那样需要修改内核,接管内核。

(5)Xen被Ctrix收购,有商业版的Xen Server,而KVM被RedHat收购。

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


4.KVM介绍

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

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

(3)rhel5/centos5默认是Xen,rhel6/centos6版本默认是kvm。


5.KVM架构

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

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

(3)Libvirt,virsh:由于QEMU工具效率不高,RedHat为KVM开发了辅助工具,比如libvirt、libguestfs等。Libvirt是一套提供了多种语言接口的API,为各种虚拟化工具提供一套方便、可靠的编程接口,而且支持Xen。使用libvirt,你只需通过libvirt提供的函数连接到KVM或Xen宿主机,便可以用同样的命令控制不通的虚拟机了。Libvirt不仅提供API,还自带一套基于文本的管理虚拟机的命令virsh,可以通过使用virsh命令来使用libvirt的全部功能。

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


6.安装KVM准备