在今天复杂的IT环境中,服务器虚拟化具有显而易见的积极意义。冗余服务器硬件可以迅速补充进企业的数据中心并形成容量;每一项新的采购都会将电力和制冷成本一路推高。为解决这一问题,方法之一就是将物理服务器划分到虚拟服务器中是恢复宁静并保持IT支持在受控的范围内。
利用虚拟化,您能够以动态方式启动和关闭虚拟服务器(也称作虚拟机),每台虚拟服务器基本上都会欺骗操作系统(以及任何在其上运行的应用),让它们相信虚拟机就是实实在在的硬件。运行多个虚拟机可以充分利用物理服务器的计算潜力-并且为不断变化的数据中心需求提供快速响应的机会。
虚拟化的概念由来已久。早在上世纪70年代,主流计算机就可以同时运行多个操作系统实例,每个系统都是相互独立的。然而,直到最近,软件和硬件方面的进步才使虚拟化在符合行业标准的商品服务器上成为可能。
完全虚拟化
在虚拟化的过程中,最常用的方法是使用一种称为监视程序的软件,在虚拟服务器和下层硬件之间创建一个抽象层。VMware和MicrosoftVirtualPC便是此类中两种典型的商品化实例,而KVM(基于内核的虚拟机)是一种适用于Linux的开源产品。
监视程序会捕获CPU指令,并协调硬件控制器和外设的存取。因此,完全虚拟化可允许几乎任意操作系统安装在虚拟服务器上,而且无需对操作系统做任何的修改,操作系统也不会感知自己是在一个虚拟环境中运行。这种作法的主要缺点是,监视程序会产生处理器开销,虽然很小但影响较大。
在一个完全虚拟化的环境中,监视程序运行在裸硬件上,并且担当主机操作系统的角色。由监视程序管理的虚拟服务器则被称为来宾服务器。
准虚拟化
完全虚拟化是处理器密集型的,因为监视程序需要管理多个虚拟服务器,并保持它们彼此独立。减轻这种负担的方法之一是对每个来宾操作系统进行修改,使它能够意识到自己是在虚拟环境中运行,并且能够与监视程序合作。这种方法被称为准虚拟化。
Xen是开源准虚拟化技术的典型例子。由于操作系统在Xen监视程序上作为虚拟服务器运行,它必须在内核一级经过特定的修改。因此,Xen非常适合用于BSD、Linux、Solaris和其它开源操作系统,但它不适合虚拟化Windows等无法修改的专有系统。
准虚拟化的优势在于性能。准虚拟化的服务器在与监视程序协调工作时,其响应能力几乎与未虚拟化的服务器一样。与完全虚拟化相比,准虚拟化的好处非常诱人,因此微软和VMware都开始研究准虚拟化技术,为各自的产品提供补充。
服务器虚拟化的面目
在服务器虚拟化中,监视程序充当主机操作系统,而来宾操作系统的实例及其应用会运行在自己的虚拟机上。因此,一台服务器能够完成更多的工作,而且能够针对不断变化的负载及时做出响应。
完全虚拟化准虚拟化操作系统级虚拟化
监视程序可以同时运行多个不同操作系统的虚拟实例,而且虚拟服务器不需要知道自己是运行在一个虚拟环境中。在这里,操作系统的版本经过了特别的修改,使之能够与监视程序合作,因此可提供更高的性能。在这种情况下,虚拟服务器仍然是彼此隔离开的,但它们都运行在同一个操作系统上,而操作系统则内建有监视程序。
操作系统级虚拟化
还有一种实现虚拟化的方法就是将虚拟服务器的能力内建在操作系统一级上。SolarisContainers就是一个典型的例子,还有 Virtuozzo/OpenVZ也可以在Linux上实现类似的功能,操作系统级虚拟化会丧失一些灵活性,但从根本上取得了更高的速度性能。此外,在所有虚拟服务器上使用单一标准操作系统的架构也要比异型环境更容易管理。
有了操作系统级的虚拟化,就不再需要独立的监视程序层。相反,主机操作系统本身会负责硬件资源在多个虚拟服务器间的分配,并且保护服务器之间彼此独立。操作系统级虚拟化最明显的特点是,所有的虚拟服务器都必须运行在同一个操作系统中(不过每个实例都有其自己的应用和用户账户)。
更简单,但更强大
与大型机不同,PC硬件在设计时并没有考虑到虚拟化,因此直到最近只能由软件来承担这一负担。但在最新一代的x86处理器上,AMD和Intel都首次在CPU层添加了虚拟化支持。