Linux 虚拟化和 PCI 透传技术

TuxedoLinux 2009-11-21

处理器已经演变为针对虚拟环境提高性能,但 I/O 方面发生了什么变化呢?了解一种名为设备(或 PCI)透传(passthrough)的 I/O 性能增强技术,这种创新技术通过使用来自 Intel? (VT-d) 或 AMD (IOMMU) 的硬件支持改进 PCI 设备的性能。

平台虚拟化是在两个或多个操作系统之间共享一个平台,以便更有效地利用资源。但平台 并不只是意味着一个以上的处理器,它还包含组成平台的其他重要元素,比如存储器、网络和其他硬件资源。某些硬件资源可以轻松虚拟化,比如处理器和存储器;而另一些硬件资源则不然,比如视频适配器和串口。当共享不可能或没用时,Peripheral Component Interconnect (PCI) 透传技术提供有效使用这些资源的方法。本文探索透传(passthrough)技术的概念及其在管理程序(hypervisor)中的实现,详细介绍支持这个最新创新技术的管理程序。

平台设备模拟

在探索透传技术之前,让我们先讨论一下如今设备模拟在两个管理程序架构中是如何工作的。第一个架构将设备模拟整合到管理程序中,而第二个架构将设备模拟推到管理程序之外的一个应用程序中。

管理程序中的设备模拟 是在 VMware 工作站产品(一个基于操作系统的管理程序)中实现的一个公共方法。在这个模型中,管理程序包含各种客户操作系统能够共享的公共设备,如虚拟磁盘、虚拟网络适配器和其他必需的平台元素。这个特定模型如图 1 所示。


图 1. 基于管理程序的设备模拟
Linux 虚拟化和 PCI 透传技术

第二个架构称为用户空间设备模拟(见图 2)。顾名思义,这种设备模拟是在用户空间中实现的,而不嵌入到管理程序中。QEMU(不仅提供设备模拟,还提供一个管理程序)提供设备模拟,用于大量独立管理程序,如 Kernel-based Virtual Machine (KVM) 和 VirtualBox 等。这个模型更具优势,因为设备模拟独立于管理程序,因而可以在多个管理程序之间共享。另外,这个模型还支持任意设备模拟,无须管理程序(以特权状态运行)负担这个功能。


图 2. 用户空间设备模拟
Linux 虚拟化和 PCI 透传技术

将设备模拟从管理程序推向用户空间有一些明显的优势,最大的优势涉及所谓的可信计算基础(trusted computing base,TCB)。一个系统的 TCB 是对该系统安全性很关键的所有安全组件的集合。有一点是显而易见的:如果系统被最小化,出现 bug 的可能性也就更小,因此系统也就越安全。这个原理也适用管理程序。管理程序的安全性很重要,因为它分隔多个独立的客户操作系统。管理程序中的代码越少(将设备模拟推到特权较低的用户空间中),将特权泄露给不可信用户的机率也就越少。

基于管理程序的设备模拟的另一个变体是准虚拟化(paravirtualized)驱动程序。在这个模型中,管理程序包含物理驱动程序,每个客户操作系统包含一个管理程序可以感知的驱动程序,这个驱动程序与管理程序驱动程序(称为准虚拟化PV 驱动程序)配合工作。

无论设备模拟发生在管理程序内还是在一个客户虚拟机(VM)之上,模拟方法都是相似的。设备模拟能够模拟一个特定设备(如 Novell NE1000 网络适配器)或一个特定磁盘类型(如 Integrated Device Electronics [IDE])。物理硬盘可以完全不同 — 例如,尽管一个 IDE 驱动器被模拟为客户操作系统,物理硬件平台可以使用一个串口 ATA (SATA) 驱动器。这种技术很有用,因为 IDE 支持在许多操作系统中都很普遍,可以用作一个通用标准,而不是要求所有操作系统都支持更高级的驱动器类型。

相关推荐