虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
虚拟化核心思想是提高硬件资源的利用率,通过在系统中加入一个虚拟化层,将下层资源池化后,向上层操作系统提供一个预期一致的服务器硬件环境,并允许不同操作系统的虚拟机互相隔离且并发运行在一台物理机上。
现在主流的虚拟化技术主要是XEN和KVM,而且这两种虚拟化技术都是开源免费的。
目前国内的云厂商基本已经使用KVM虚拟化方案了。KVM拥有更好的生态,更多的开源支持。而XEN诞生时间较长,是目前最成熟的虚拟化技术。
第一步,XEN的定义。
XEN是Linux下的虚拟化解决方案,XEN的实现是基于支持XEN功能的kernel,在XEN控制下的kernel,称之为Domain 0,使用kernel启动的机器可以使用Qemu软件,虚拟出多个系统。
XEN包含三个基本组件:Hypervisor、Domain 0、Domain U。
其中Hypervisor运行在硬件之上,承载所有的操作系统,提供CPU和内存调度的作用。
Domain 0是管理员,相当于一个大管家,主要负责IO虚拟化。
Domain U则是真正的XEN中的虚拟客户机,而Domain U又分为两类:一类全虚拟客户机,一类半虚拟客户机,后者是运行在经过修改的操作系统之上。
第二步,XEN的特点。
1)XEN无需特殊硬件支持,就能达到高性能的虚拟化。
操作系统必须进行显式地修改(“移植”)才可以在XEN上运行。
2)XEN采用的是混合模型。
从技术上讲,XEN可以装在系统上,也可以装在裸机上。
3)XEN能够控制虚拟机,并给多个客户机分配资源。
XEN是一个外部的Hypervisor程序(虚拟机管理程序)。
4)XEN属于硬件虚拟化(硬件提供结构支持帮助创建虚拟机监视并允许客户机操作系统独立运行)。XEN同时支持全虚拟化和半虚拟化。
全虚拟化:虚拟机完整地模拟了底层硬件,linux系统直接内核支持,不需要对操作系统进行修改。简单来讲,虚拟机以为自己运行在硬件上。
半虚拟化:虚拟机能够感知是运行在Hypervisor(虚拟机器监视器)之中,且为了支持Hypervisor,需要对操作系统进行专门的更改。
5)XEN支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。
第三步,XEN的优缺点。
1)优点。
XEN是开源免费的虚拟化软件。
XEN具有更好的处理性能(接近于本地处理)。
XEN支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。
XEN是业界最快速、最安全的虚拟化软件。
XEN提供了大量的功能,可以满足各种各样的需求。
XEN出现得更早,也更成熟。
2)缺点。
XEN工作环境的补丁包不能够和Linux内核兼容,因此想要使用XEN,就必须对内核补丁。
XEN版本更新,需要重新编译整个内核,而且稍有不慎,系统就会崩溃。
XEN将会使Linux内核的负担越来越重,因为XEN没有整合到Linux中,XEN只是一个安装在Linux内核下层的产品。
XEN的I/O性能较弱。
XEN操作复杂,因为操作系统必须进行显式地修改(“移植”)才可以在XEN上运行。
XEN维护成本较高,因为XEN必须有个单独的内核,而原有的Linux内核是作为模块加载的。
第一步,KVM的定义。
KVM是基于Linux环境的全虚拟化的解决方案,是轻量级的虚拟化管理程序模块(模块主要来自Linux内核)。KVM的虚拟化需要硬件支持,如具有VT功能的Intel CPU和具有AMD-V功能的AMD CPU,KVM只能在具有虚拟化支持的CPU上运行。KVM并不是一个完善的模拟器,而只是一个提供虚拟化功能的内核插件,具体的模拟器工作是借助Qemu工具来完成。
KVM主要两个部分组成:KVM驱动和Qemu。
KVM驱动直接被集成到linux系统(Intel-VT或AMD-V)中,主要负责虚拟机创建、CPU和内存的分配等等。
Qemu是用于模拟虚拟机的用户空间组件,提供I/O设备模型,访问外设的途径。
第二步,KVM的特点。
1)KVM需要硬件支持虚拟化扩展(Intel VT 或AMD-V)。
KVM由一个载入时内核模块kvm.ko(提供核心虚拟化基础设施)和一个处理器特殊模块kvm-intel.ko或kvm-amd.ko组成,在上层需要修改过的Qemu。
2)KVM对处理器有着特殊的要求。
# 在安装前检查一下机器是否与KVM兼容
命令:egrep -c '(vmx|svm)' /proc/cpuinfo
若结果返回0,则表示不支持KVM;若结果返回1,则表示支持KVM。
3)KVM没有提供官方的管理界面,但有大量第三方工具可以管理KVM域。
Red Hat的virt-manager(RHEV-M)是使用最多的,它提供了一个简单但高效的图形界面。
4)KVM是Linux内核的一部分, 可使用通常的Linux调度器和内存管理,这使得KVM更小且更容易地使用。KVM在Linux内核内部部署,可以很容易控制虚拟化进程。
5)KVM属于硬件虚拟化(硬件提供结构支持帮助创建虚拟机监视并允许客户机操作系统独立运行)。KVM只支持全虚拟化。
全虚拟化:虚拟机完整地模拟了底层硬件,linux系统直接内核支持,不需要对操作系统进行修改。简单来讲,虚拟机以为自己运行在硬件上。
6)KVM支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。
第三步,KVM的优缺点。
1)优点。
KVM是开源免费的虚拟化软件。
KVM具备高性能,并且稳定,因此使用KVM无需修改客户机系统。
KVM是Linux内核的一部分,可以和Linux内核一起优化和改进。
KVM出错的可能性比较小,因为KVM不需要重新编译内核,也不需要对当前kernel做任何修改,KVM只是几个可以动态加载的.ko模块,而且结构更加精简、代码量更小。
KVM的I/O性能较强。
KVM维护成本较底,且灵活、操作简单,因为操作系统直接和整合到Linux内核中的虚拟化管理程序交互,在任何场景下都可以直接和硬件进行交互,而不需要修改虚拟化的操作系统。
2)缺点。
KVM具有较差的处理性能。
KVM的性能随着工作负载的增加逐渐下降。
KVM在试图支持四个以上的客体虚拟机时就会崩溃。
KVM不太成熟,并且缺少某些关键特性。
第一,开源免费。
XEN和KVM都是开源免费的虚拟化软件。
第二,配置。
从配置方面来说,KVM比XEN简单太多了。
XEN没有整合到Linux中,XEN只是一个安装在Linux内核下层的产品,要想使用XEN,就必须有个单独的内核,而原有的Linux内核是作为模块加载的。
KVM是Linux内核的一部分,可以和Linux内核整合。
第三,是否修改操作系统。
操作系统必须进行显式地修改(“移植”)才可以在XEN上运行。
KVM具备高性能,并且稳定,因此使用KVM无需修改客户机系统。
第四,硬件虚拟化。
XEN同时支持全虚拟化和半虚拟化。
KVM只支持全虚拟化。
第五,动态迁移。
XEN和KVM都支持非中断的动态迁移,可以允许动态工作负载平衡和例行维护而几乎没有任何宕机时间。
第六,处理性能。
XEN具有更好的处理性能(接近于本地处理)。XEN支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。XEN是业界最快速、最安全的虚拟化软件。
KVM具有较差的处理性能。KVM的性能随着工作负载的增加逐渐下降。KVM在试图支持四个以上的客体虚拟机时就会崩溃。
第七,产品成熟度。
XEN出现得更早,也更成熟。
KVM不太成熟,并且缺少某些关键特性。
第八,版本更新。
XEN版本更新,需要重新编译整个内核,而且稍有不慎,系统就会崩溃。
KVM是Linux内核的一部分,可以和Linux内核一起优化和改进。
第九,出错的可能性。
XEN出错的可能性比较大。XEN工作环境的补丁包不能够和Linux内核兼容,因此想要使用XEN以及进行XEN版本更新,就必须对内核补丁,需要重新编译整个内核。重新编译整个内核稍有不慎,系统就会崩溃。
KVM出错的可能性比较小,因为KVM不需要重新编译内核,也不需要对当前kernel做任何修改,KVM只是几个可以动态加载的.ko模块,而且结构更加精简、代码量更小。
第十,I/O性能。
XEN的I/O性能较弱。
KVM的I/O性能较强。
第十一,维护成本。
XEN操作复杂,维护成本较高。
KVM维护成本较底,且灵活、操作简单。