Linux虚拟化技术分析(下)
在本文的上半部分中,我们介绍了虚拟化的历史及其分类。在下半部分中,我们将继续分析虚拟化的重要性和硬件支持。
为什么虚拟化如此重要?
在了解目前Linux可以使用的虚拟化方法之前,让我们先来了解一下虚拟化的优点。
从商业角度来看,使用虚拟化技术有很多原因。大部分原因都可以归结于服务器的巩固(server consolidation)。简单来说,如果您可以对一个服务器上多个未经充分利用的系统进行虚拟化,由于服务器的数量少了,显然可以节省大量电力、空间、制冷和管理成本。由于很难确定服务器的利用情况,虚拟化技术支持称为动态迁移的技术。动态迁移(Live migration)允许操作系统及其应用程序迁移到新的服务器上,从而实现负载在可用硬件上的均衡。
虚拟化技术对于开发人员来说也非常重要。Linux内核占据了一个单一的地址空间,这意味着内核或任何驱动程序的故障都会导致整个操作系统的崩溃。虚拟化技术意味着您可以运行多个操作系统,如果其中一个系统由于某个bug而崩溃了,那么hypervisor和其他操作系统都依然可以继续运行。这可以使内核的调试非常类似于用户空间应用程序的调试。
与Linux有关的虚拟化项目
表1给出了几个Linux系统上的虚拟化项目,并着重介绍了其中的开源解决方案。

表1. 与Linux有关的虚拟化项目
Bochs是一个x86计算机仿真器,它在很多平台上(包括x86、PowerPC、Alpha、SPARC和MIPS)都可以移植和运行。使Bochs更为有趣的是它不仅可以对处理器进行仿真,还可以对整个计算机进行仿真,包括计算机的外围设备,比如键盘、鼠标、视频图像硬件、网卡(NIC)等。
Bochs可以配置作为一个老式的Intel 386或其后继处理器使用,例如486、Pentium、Pentium Pro或64位处理器。它甚至还可以对一些可选的图形指令进行仿真,例如MMX和3DNow。
使用Bochs仿真器,您可以运行任何Linux上的Linux发行版、Linux上的Microsoft Windows 95/98/NT/2000(以及各种应用程序),甚至Linux上的BSD(Berkeley Software Distribution)操作系统(FreeBSD、OpenBSD等)。
QEMU(仿真)
QEMU是另外一个仿真器,它与Bochs非常类似,不过也有一些值得一提的区别。QEMU支持两种操作模式。第一种是Full System Emulation(完全系统仿真)模式。这种模式与Bochs非常类似,它可以对一个具有处理器和外围设备的完整个人计算机(PC)进行仿真。这种模式可以仿真很多处理器架构,例如x86、x86_64、ARM、SPARC、PowerPC和MIPS,其动态转换的速度也比较理想。使用这种模式,您可以在Linux、Solaris和FreeBSD上仿真Windows操作系统(包括XP)和Linux。很多其他操作系统的组合也都可以得到支持(更多信息请参看参考资料部分)。
QEMU还可以支持第二种模式,称为User Mode Emulation(用户模式仿真)。这种模式只能宿主于Linux,在这种模式下,可以启动不同体系结构的二进制文件。例如,在x86平台上运行的Linux系统上可以执行为MIPS体系架构编译的二进制文件。这种模式支持的其他体系结构还包括ARM、SPARC和PowerPC,而且还有很多尚在开发之中。
VMware(完全虚拟化)
VMware是完全虚拟化的一个商业解决方案。在客户操作系统和裸硬件之间有一个hypervisor作为抽象层使用。这个抽象层允许任何操作系统在硬件上运行,而不需要了解任何其他客户操作系统。
VMware也会对可用的I/O硬件进行虚拟化,并将一些高性能的设备驱动程序加入到hypervisor中。
整个虚拟化后的环境都作为一个文件保存,这意味着整个系统(包括客户操作系统、VM和虚拟硬件)可以很容易地快速迁移到新宿主机器上进行负载均衡。
z/VM(完全虚拟化)
尽管IBM System z是一个新品牌,不过它实际上已经有很长的一段历史,可以一直追溯到20世纪60年代。System/360在1965年就可以支持使用虚拟机进行虚拟化。有趣的是,System z保留了对之前的System/360产品线的向后兼容性。 |