02 Linux虚拟化工具
2.1 Linux虚拟化简介
2.1.1 Linux虚拟化类型
本节介绍Linux中常用的3种虚拟化方法及其优缺点,业界有时会使用不同的术语来描述相同的虚拟化方法。
1.硬件仿真
毫无疑问,最复杂的虚拟化实现技术就是硬件仿真。在这种方法中,可以在宿主系统中创建一个硬件VM来仿真所想要的硬件,如图2-1所示。
图2-1 硬件仿真
硬件仿真的应用之一是进行固件和硬件的协作开发,固件开发人员可以使用目标硬件VM在仿真环境中验证实际代码,而不需要等到硬件实际可用时。由于每条指令都必须在底层硬件上仿真,因此速度减慢100倍的情况也并不稀奇。若要实现高度保真仿真,包括周期精度、所仿真的CPU管道及缓存行为,实际速度差距甚至可能会慢1000倍之多。硬件仿真的优点很多,如可以在一个ARM处理器主机上运行为PowerPC设计的操作系统,而不需要任何修改,甚至可以运行多台虚拟机,每台虚拟器仿真一个不同的处理器。
2.完全虚拟化(Full Virtualization)
完全虚拟化也称为“原始虚拟化”,是另外一种虚拟化方法,它使用一台虚拟机在客户操作系统和原始硬件之间进行协调(如图2-2所示)。“协调”是关键,因为VMM在客户操作系统和裸硬件之间提供协调。特定受保护的指令必须被捕获下来并在Hypervisor中处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过Hypervisor共享。
图2-2 完全虚拟化使用Hypervisor来共享底层硬件
虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了Hypervisor的协调过程。完全虚拟化的最大优点是操作系统无须任何修改就可以直接运行,唯一的限制是其必须支持底层硬件,如PowerPC。
3.超虚拟化(paravirtualization)
超虚拟化是另外一种流行的虚拟化技术,它使用一个Hypervisor来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中(如图2-3 所示)。这种方法不再需要重新编译或捕获特权指令,因为操作系统本身在虚拟化进程中会相互紧密协作。
图2-3 超虚拟化与客户操作系统共享进程
超虚拟化技术需要为Hypervisor修改客户操作系统,这是一个缺点。但是它提供了与未经虚拟化的系统相接近的性能,可以同时支持多个不同的操作系统。
4.操作系统级的虚拟化
操作系统级的虚拟化技术在操作系统本身之上实现服务器的虚拟化,这种方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来(如图2-4所示)。
图2-4 操作系统级虚拟化
操作系统级的虚拟化要求修改操作系统的内核,其优点是可以获得原始性能。
相关术语如下。
(1)VMM(Virtual Machine Monitor,虚拟机监视器):纯软件虚拟化解决方案存在很多限制,客户操作系统在很多情况下通过VMM来与硬件通信,由VMM来决定其对系统上所有虚拟机的访问。VMM在软件套件中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口模拟硬件环境,这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受到虚拟机环境的能力限制,从而阻碍特定技术的部署,如64 位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着这些环境难于管理,因而会加大确保系统可靠性和安全性的困难。
(2)Hypervisor(虚拟机监控器):一个虚拟化平台,允许多个操作系统在单一的主机中的完全虚拟化环境中同时运行,客户机(guest)是主机或主操作系统之外的运行在虚拟机上的操作系统。
(3)主机操作系统(Host Operating System):在物理计算机(宿主机)上运行的操作系统,在其之上运行虚拟机软件。
(4)客户操作系统(Guest Operating System):运行在虚拟机中的操作系统,它不等于桌面操作系统(Desktop Operating System)和客户端操作系统(Client Operating System),因为虚拟机中的客户操作系统可以是服务器操作系统。
2.1.2 Linux虚拟化项目
如表2-1所示为Linux操作系统中的虚拟技术。
表2-1 Linux操作系统中虚拟技术
表 2-2 虚拟化管理应用程序(包括命令行工具)
2.1.3 Linux服务器虚拟化的重要性
从商业角度来看,使用虚拟化技术的原因都可以归结于服务器的巩固(Server Consolidation)。如果可以虚拟化一个服务器上多个未经充分利用的系统,由于服务器的数量少了,因而可以节省大量电力、空间、制冷和管理成本。虚拟化技术支持作为动态迁移(Live Migration)技术,允许操作系统及其应用程序迁移到新的服务器上,从而实现负载在可用硬件上的均衡。该技术意味着可以运行多个操作系统,如果其中一个系统由于某个bug而崩溃,那么Hypervisor和其他操作系统依然可以继续运行,使得内核调试类似于用户空间应用程序的调试。
一台虚拟化的机器如同一台全功能的计算机或服务器,可以在其中安装任何操作系统、配置网络,并安装需要的全套软件。虚拟化能够使基础架构的作用发挥到最大化,这也是导致越来越多的用户投身虚拟化变革的原因。
虚拟化的3大好处如下。
(1)节省资金。
(2)整合服务器。
智能整合的第一步,就是列出所有服务器和软件的详细目录,以观察有多少台服务器只是运行单一的一种应用,甚至在运行一个遗留的应用。通过虚拟化,将有可能将20 台服务器的应用整合到5台!
(3)最大利用率。
将所有的传统应用软件聚集起来放置到一台具有多个虚拟实例的服务器上,可实现最大利率。
通过虚拟化充分利用现有的服务器资源,不仅可以削减成本,而且还能有效地整合应用中的服务器。