Linux 虚拟化方法、架构和实现(3)

  为什么虚拟化如此重要?

  在了解目前 Linux 可以使用的虚拟化方法之前,让我们先来了解一下虚拟化的优点。

  从商业角度来看,使用虚拟化技术有很多原因。大部分原因都可以归结于服务器的巩固(server consolidation)。简单来说,如果您可以对一个服务器上多个未经充分利用的系统进行虚拟化,由于服务器的数量少了,显然可以节省大量电力、空间、制冷和管理成本。由于很难确定服务器的利用情况,虚拟化技术支持称为动态迁移的技术。动态迁移(Live migration)允许操作系统及其应用程序迁移到新的服务器上,从而实现负载在可用硬件上的均衡。

  虚拟化技术对于开发人员来说也非常重要。Linux 内核占据了一个单一的地址空间,这意味着内核或任何驱动程序的故障都会导致整个操作系统的崩溃。虚拟化技术意味着您可以运行多个操作系统,如果其中一个系统由于某个 bug 而崩溃了,那么 hypervisor 和其他操作系统都依然可以继续运行。这可以使内核的调试非常类似于用户空间应用程序的调试。

  与 Linux 有关的虚拟化项目

  表 1 给出了几个 Linux 系统上的虚拟化项目,并着重介绍了其中的开源解决方案。

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 产品线的向后兼容性。

  z/VM? 是 System z 上的操作系统 hypervisor。其核心是 Control Program(CP),它为客户操作系统,包括 Linux,提供了物理资源的虚拟化(参见图 5)。这样,多个处理器和其他资源就可以在多个客户操作系统上被虚拟化。

Linux 虚拟化方法、架构和实现

图 5. 使用 z/VM 的操作系统级虚拟化

  z/VM 也可以为想要相互通信的客户操作系统仿真一个客户局域网(LAN)。仿真完全是在 hypervisor 中进行的,因此相当安全。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5546619b18afbaf26d88df3e95d9eaac.html