科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Linux中虚拟化方法、技术及实现(6)

Linux中虚拟化方法、技术及实现(6)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

虚拟化的含义丰富,应用广泛。目前虚拟化技术主要关注于服务器虚拟化,即在一个宿主计算机上提供多个独立操作系统。本文将探索虚拟化背后的思想,然后讨论实现虚拟化的一些技术

作者:IBM 来源:IBM 2007年9月10日

关键字: 操作系统 虚拟化 Linux

  • 评论
  • 分享微博
  • 分享邮件
 

对完全虚拟化和超虚拟化的硬件支持

回想一下 IA-32(x86)体系结构在进行虚拟化时会产生的一些问题。特定的特权模式指令无法捕获,基于所使用的模式还可能返回不同的结果。例如,x86 STR 指令可以检索安全状态,但是所返回的值要取决于请求者特定的特权级别。在尝试在不同的层次对不同的操作系统进行虚拟化时,这会出现问题。例如,x86 支持 4 环保护,其中级别 0 (最高特权)通常运行操作系统,级别 1 和 2 支持操作系统服务,级别 3(最低级别)支持应用程序。不过硬件供应商已经认识到了这种缺陷(以及其他一些问题),并且已经开发了一些支持并加速虚拟化的新设计。

Intel 正在开发新虚拟化技术,能在 x86(VT-x)和 Itanium®(VT-i)体系架构上支持 hypervisor。VT-x 支持两种格式的操作,一种用于 VMM(root),另外一种用于客户操作系统(非 root)。root 格式完全是特权级的,而非 root 格式是非特权级的(即使对环 0 来说也是如此)。这种体系架构支持定义指令来使 VM(客户操作系统)退出到 VMM 和保存处理器状态。此外还添加了许多其他的功能,请参看 参考资料 部分。

AMD 也开发了硬件辅助虚拟化技术,称为 Pacifica。除了其他一些特性之外,Pacifica 还为在特殊指令执行时保存的客户操作系统维护了一个控制块。VMRUN 指令允许虚拟机(及其相关的客户操作系统)一直运行,直到 VMM 重新获得控制权为止(这也是可配置的)。这种可配置能力允许 CMM 为每个客户操作系统定制特权指令。Pacifica 还可以使用宿主和客户内存管理单元(MMU)表来进行地址转换。

这些新技术也可以应用到此处讨论的很多其他虚拟化技术中,包括 Xen、VMware、User-mode Linux 等。

Linux KVM(内核虚拟机)

Linux 传出的最新消息是将 KVM 合并到 Linux 内核中(2.6.20)。KVM 是一种完全虚拟化解决方案,它有一个方面非常独特:它将 Linux 内核转换为一个使用内核模块的 hypervisor。这个模块允许使用其他客户操作系统,然后在宿主 Linux 内核的用户空间中运行(参见图 7)。内核中的 KVM 通过 /dev/kvm 字符设备来公开虚拟化后的硬件。客户操作系统使用为 PC 硬件仿真修改过的 QEMU 进程与 KVM 模块接口。

图 7. 使用内核虚拟机(KVM)的虚拟化

KVM 模块向内核中引入了一个新的执行模块。普通内核支持内核 模式和用户 模式,而 KVM 则引入了一种客户 模式。客户模式用来执行所有非 I/O 客户代码,而普通用户模式支持客户 I/O。

KVM 的引入是 Linux 的一个有趣革新,因为它代表了作为主流 Linux 内核一部分的第一个虚拟化技术。它已经存在于 2.6.20 树中,不过也可以作为 2.6.19 内核的一个内核模块使用。当在支持虚拟化的硬件上运行时,KVM 支持 Linux(32 位和 64 位)和 Windows(32 位)客户机。有关 KVM 的更多信息,请参看 参考资料 部分。

结束语

如果 40 年前出现的技术还可以算是“新”技术的话,那么虚拟化就是一个重要的新技术领域。虚拟化技术已经在很多场合中应用过了,但现在主要的关注点是服务器和操作系统的虚拟化。与 Linux 非常类似,虚拟化为性能、可移植性和灵活性提供了很多选项。这意味着您可以选择最适合于您自己应用程序的虚拟化方法。

获得产品和技术

Bochs 和 QEMU 是 PC 仿真器,它们允许诸如 Windows 或 Linux 之类的操作系统在 Linux 操作系统的用户空间中运行。

VMware 是一个流行的完全虚拟化的商业解决方案,它可以对未经修改的操作系统进行虚拟化。

z/VM 是 64 位 z/Architecture 使用的最新的 VM 操作系统。z/VM 通过硬件辅助提供了完全虚拟化功能,并且可以支持很多操作系统,包括 Linux。

Xen 是一个开源的超虚拟化解决方案,它虽然需要对客户操作系统进行修改,但可以通过与 hypervisor 的协作获得接近原始系统的性能。

User-mode Linux 是另外一个超虚拟化解决方案,也是开源的。每个客户操作系统都是作为主机操作系统的一个进程执行的。

coLinux 或 Cooperative Linux,是一个允许两个操作系统协作式共享底层硬件的虚拟化解决方案。

Linux-Vserver 是一个 GNU/Linux 系统使用的操作系统级虚拟化解决方案,它安全地隔离了各个客户服务器。

OpenVZ 是一个操作系统级虚拟化解决方案,可以支持检查点和动态迁移。

Linux KVM 是第一个集成到主流 Linux 内核中的虚拟化技术。通过一个可加载的内核模块,运行于可虚拟化的硬件上的 Linux 内核可以充当 hypervisor 并可支持未经修改的 Linux 和 Windows 客户操作系统。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章