不同的技术流派
在虚拟化领域有着众多的分支,包括虚拟机、存储虚拟化、内存虚拟化、操作系统虚拟化、网络虚拟化、数据中心虚拟化等。每种虚拟化都有着其所对应的方案和技术,而在工业应用的各方面也都存在着虚拟化的应用。可以说,虚拟化产品是多种多样的。
目前,硬件虚拟化、并行虚拟化和操作系统虚拟化是比较主流的技术。并行虚拟化也被称做泛虚拟化(para-virtualization),而操作系统虚拟化也被称做容器技术(container),它们在近几年都得到了长足的进步。
硬件虚拟化技术由于不需要修改客户机操作系统,可以支持各种Windows和其他商业操作系统客户机,从而提高了虚拟化技术的应用范围。同时,硬件虚拟化技术简化了虚拟机监控器(Virtual Machine Monitor或hypervisor)实现的复杂度,增加了系统的稳定性。近年来,随着硬件虚拟化技术的飞速发展,尤其是Intel VT技术的发展,各种基于硬件虚拟化技术的虚拟化实现方案迅速出现,如Xen、KVM、Virtual Box等。
泛虚拟化技术因为需要修改客户机操作系统以绕开传统体系结构中的虚拟化漏洞,因而产生了对现有操作系统的兼容性问题。不过,同时它也因此可以按照需求变动客户机的体系结构,并以此来提高虚拟机的总体性能。因此,泛虚拟化技术比较适合在Linux等开源操作系统上使用。
对于操作系统虚拟化,虚拟化的对象不是实际的物理资源(如处理器、内存或外设),而是从用户角度出发而抽象的操作系统内部资源,例如独立的根文件系统、独立的权限控制、用户和组管理等。因此,容器虚拟化技术可能有更好的效率,但却无法支持不同操作系统的同时运行,在某些应用场合它可能是一个不错的选择,但在另外一些场合它可能就不一定合适了。
去年,Gartner发布了一份服务器技术发展的研究报告,其中有一个很有意思的预测: 到2010年,共享的操作系统虚拟化将成为主流虚拟化技术。在此之前,虚拟化和虚拟机是同义词,而操作系统虚拟化并不被认为是虚拟化,可以说,Gartner的研究报告首次打破了这一神话。
SWsoft就是操作系统虚拟化的积极倡导者,其CEO张自力曾表示: “硬件虚拟化的主要优势在于能够实现异构操作系统并存于一台物理硬件之上,从而为比较标准化的资源配备和系统管理提供了服务器整合的机会。并行虚拟化是硬件虚拟化的一种改良,其提高了I/O性能,但却要对Guest OS进行改动,这会影响到它的推广。”
由于CPU、BIOS等层面都在从指令集等方面提供性能优化的手段,那么原始的并行虚拟化存在的必要性就不大了。操作系统虚拟化的特点是自身损耗比较低,而且与虚拟服务器的数量线性无关,从而能够给虚拟服务器容器内的应用提供更多可用资源。在同等硬件条件和应用负载情况下,操作系统虚拟化的效率是最高的—一般而言,操作系统虚拟化的密度可以做到虚拟机的2~10倍。另外,由于节省了Guest OS层次,就从开通到管理上都节省了操作时间和层次。操作系统虚拟化的缺点是不能实现异构并存,多个虚拟服务器要共享同一个操作系统内核,在一些需要支持老操作系统或旧Patch level的场景下是无法适用的。
“事实上,虚拟化的主要趋势是要融入到未来整体的IT基础设施管理中,变成一个基础的、无处不在的核心组成部分。”张自力表示。