加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Linux 虚拟化和 PCI 透传技术

(2014-10-23 10:47:36)
标签:

杂谈

查看原文:http://www.noblog.cn/2923.html

介入 My developerWorks 上的绿色小组

在 My developerWorks 上的 GReen IT Report 空间 绿色竞赛争辩小组 上谈论关于动力、效率和情形的主题并同享成本。

平台虚拟化是在两个或多个操作零星之间同享一个平台,以便更有用地行使成本。但平台 其实不只是意味着一个以上的处置责罚器,它还包括组成平台的其他主要元素,好比存储器、汇集和其他硬件成本。某些硬件成本可以轻松虚拟化,好比处置责罚器和存储器;而其他一些硬件成本则否则,好比视频适配器和串口。当同享弗成能或没用时,Peripheral Component Interconnect (PCI) 透传手艺供应有用行使这些成本的方法。本文索求透传(passthrough)手艺的概念及其在治理轨范(hypervisor)中的完成,具体引见支持这个最新立异手艺的治理轨范。

平台配备模拟

在索求透传手艺之前,让我们先谈论一下现在配备模拟在两个治理轨范架构中是若何责任的。第一个架构将配备模拟整合到治理轨范中,而第二个架构将配备模拟推到治理轨范之外的一个运用轨范中。

治理轨范中的配备模拟 是在 VMware 责任站产物(一个基于操作零星的治理轨范)中完成的一个公共方法。在这个模子中,治理轨范包括各类客户操作零星可以同享的公共配备,如虚拟磁盘、虚拟汇集适配器和其他必需的平台元素。这个特定模子如图 1 所示。

图 1. 基于治理轨范的配备模拟

http://noblog.qiniudn.com/wp-content/uploads/2014/10/figure126.gif虚拟化和 PCI 透传技术" />

第二个架构称为用户空间配备模拟(见图 2)。望文生义,这类配备模拟是在用户空间中完成的,而不嵌入到治理轨范中。QEMU(不只供应配备模拟,还供应一个治理轨范)供应配备模拟,用于除夜量自力治理轨范,如 Kernel-based Virtual Machine (KVM) 和 VirtualBox 等。这个模子更具优势,因为配备模拟自力于治理轨范,是以可以在多个治理轨范之间同享。其他,这个模子还支持随意率性配备模拟,没需求治理轨范(以特权形态运转)肩负这个功用。

图 2. 用户空间配备模拟

http://noblog.qiniudn.com/wp-content/uploads/2014/10/figure220.gif虚拟化和 PCI 透传技术" />

将配备模拟从治理轨范推向用户空间有一些显著的优势,最除夜的优势触及所谓的可托竞赛争辩根蒂根抵(trusted computing base,TCB)。一个零星的 TCB 是对该零星平安性很症结的一切平安组件的鸠合。有一点是不言而喻的:假定零星被最小化,泛起 bug 的可以性也就更小,是以零星也就越平安。这个事理也适用治理轨范。治理轨范的平安性很主要,因为它分隔多个自力的客户操作零星。治理轨范中的代码越少(将配备模拟推到特权较低的用户空间中),将特权泄露给弗成信誉户的机率也就越少。

基于治理轨范的配备模拟的其他一个变体是准虚拟化(paravirtualized)驱动轨范。在这个模子中,治理轨范包括物理驱动轨范,每一个客户操作零星包括一个治理轨范可以感知的驱动轨范,这个驱动轨范与治理轨范驱动轨范(称为准虚拟化PV 驱动轨范)合营责任。

不管配备模拟发生发火在治理轨范内照样在一个客户虚拟机(VM)之上,模拟方法都是相反的。配备模拟可以模拟一个特定配备(如 Novell NE1000 汇集适配器)或一个特定磁盘类型(如 Integrated Device Electronics [IDE])。物理硬盘可以完整不合 — 例如,虽然一个 IDE 驱动器被模拟为客户操作零星,物理硬件平台可以行使一个串口 ATA (SATA) 驱动器。这类手艺很有用,因为 IDE 支持在许多操作零星中都很普及,可以用作一个通用尺度,而不是要求一切操作零星都支持更初级的驱动器类型。


配备透传手艺

正如上面引见的两个配备模子所示,配备同享是有价值的。不管设别模拟是在治理轨范照样在一个自力 VM 中的用户空间中实行,都存在开支。只需有多个客户操作零星需求同享这些配备,这个开支就是值得的。假定同享不是必需的,则有更有用的方法来同享这些配备。

是以,在最高层面上,配备透传就是向一个特定客户操作零星供应一种配备隔离,以便该配备可以被谁人客户操作零星独有行使(见图 3)。但这类手艺为什么有用?配备透传之所以有价值,启事有许多,个中两个最主要的启事是功效和供应实质上不能同享的配备的公用权。

图 3. 治理轨范内的配备透传

http://noblog.qiniudn.com/wp-content/uploads/2014/10/figure314.gif虚拟化和 PCI 透传技术" />

对功效而言,行使配备透传可以获得近乎本机的功效。对某些汇集运用轨范(或那些具有高磁盘 I/O 的运用轨范)来说,这类手艺真实其实是完善的。这些汇集运用轨范没有收受接管虚拟化,启事是穿过治理轨范(抵达治理轨范中的驱动轨范或从治理轨范到用户空间模拟)会致使竞争和功效下降。然则,当这些配备不能被同享时,也可以将它们分配到特定的客户机中。例如,假定一个零星包括多个视频适配器,则那些适配器可以被传递到特定的客户域中。

最初,可以有一些只需一个客户域行使的公用 PCE 配备,或有一些不受治理轨范支持是以理应被传递到客户机的配备。零丁的 USB 端口可以与一个给定域隔离,一个串口(自己不是可同享的)可以与一个特定客户机隔离。


配备模拟面前的隐秘

晚期的配备模拟类型在治理轨范中完成影子(shadow)方法的配备接口,以便为客户操作零星供应一个到硬件的虚拟接口。这个虚拟接口包括预期的接口,包括泄漏表现配备(如 shadow PCI)的虚拟地址空间和虚拟中缀。然则,因为有一个配备驱动轨范与虚拟接口通讯,且有一个治理轨范为理想硬件转换这类通讯,是以开支异长除夜 — 特殊是在诸如汇集适配器之类的高带宽配备中。

Xen 使 PV 方法(上一年夜节引见过)得以盛行,PV 方法经由进程使客户操作零星驱动轨范意想到它正在被虚拟化来增加功效下降幅度。在本例中,客户操作零星将不会看到一个配备(好比汇集适配器)的 PCI 空间,而是一个供应初级笼统(好比包接口)的汇集适配器运用轨范编程接口(API)。这类方法的瑕玷是客户操作零星必需针对 PV 中止改削,优点是在某些情形下您可以获得近乎本机的功效。

在配备透传手艺晚期成长进程傍边,垦荒人员行使一个瘦模拟模子,在该模子中,治理轨范供应基于软件的内存治理(将客户操作零星地址空间转换为可托主机地址空间)。虽然垦荒人员在晚期供应了隔离一个配备和一个客户操作零星的方法,但那种方法短少除夜型虚拟化情形需求的功效和伸缩性。侥幸的是,处置责罚器供应商已为下一代处置责罚器配备了一些指令,以支持治理轨范和用于配备透传的逻辑,包括终端虚拟化和直接内存接见(DMA)支持。是以,新的处置责罚器供应 DMA 地址转换和权限搜检以完成有用的配备透传,而不是捕捉并模拟对治理轨范下的物理配备的接见。

配备透传的硬件支持

Intel 和 AMD 都在它们的新一代处置责罚器架构中供应对配备透传的支持(和辅佐治理轨范的新指令)。Intel 将这类支持称为 Virtualization Technology for Directed I/O (VT-d),而 AMD 称之为 I/O Memory Management Unit (IOMMU)。不管是哪类情形,新的 CPU 都供应将 PCI 物理地址映照到客户虚拟零星的方法。当这类映照发生发火时,硬件将担负接见(和珍重),客户操作零星外行使该配备时,就恍如它不是一个虚拟系不合样。除将客户机映照到物理内存外,新的架构还供应隔离机制,以便事后阻拦其他客户机(或治理轨范)接见该内存。Intel 和 AMD CPU 供应更多虚拟化功用,您可以在 参考资料 部份意见更多信息。

其他一种匡助将中缀缩放为除夜量 VM 的手艺刷新称为 Message Signaled Interrupts (MSI)。MSI 将中缀转换为更随意疏忽虚拟化的旧事(缩放为数千个自力中缀),而不是依托将被联络关系到一个客户机的物理中缀 pin。从 PCI 2.2 最先,MSI 就已可用,但 PCI Express (PCIe) 也供应 MSI,在 PCIe 中,MSI 支持将组织缩放为多个配备。MSI 是理想的 I/O 虚拟化手艺,因为它支持多个中缀源的隔离(而不是必需经由进程软件多路传输或路由的物理 pin)。


配备透传的治理轨范支持

行使最新的支持虚拟化的处置责罚器架构,有多个治理轨范和虚拟化处置计划支持配备透传。您将在 Xen 和 KVM 和其他治理轨范中发明配备透传支持(行使 VT-d 或 IOMMU)。在多半情形下,客户操作零星(域为 0)必需被编译为支持透传,这常日作为一个内核构建时选项供应。也许还需求对主机 VM 潜藏配备(Xen 中行使 pciback 完成)。PCI 中有一些限制(例如,一个 PCIe-to-PCI 桥接器后面的 PCI 配备必需被分配到沟通的域),但 PCIe 没有这类限制。

其他,您将在 libvirt(和 virsh)中发明配备透传的设置配备铺排支持,这为底层治理轨范行使的设置配备铺排方法供应一个笼统。


配备透传成就

配备透传带来的一个成就表现在实时迁移方面。实时迁移 是指一个 VM 在迁移到一个新的物理主机时期暂停迁移,然后又连续迁移,该 VM 在这个时辰点上从新启动。实时迁移是在一个物理主机汇集上支持负载平衡的一个很好的特色,但行使透传配备时它会发生发火成就。PCI 热插拔(有几个关于它的尺度)就是需求处置的一个成就。PCI 热插拔准许 PCI 配备从一个给定内核进出,这很理想 — 特殊是将 VM 迁移到新主机上的治理轨范时(配备需求在这个新治理轨范中拔出然后再拔出)。当配备被模拟(好比虚拟汇集适配器)时,模拟供应一个笼统层以笼统物理硬件。这样,一个虚拟汇集适配器可以在该 VM 内轻松迁移(这个 VM 还获得 Linux® 绑定驱动轨范的支持,该驱动轨范支持将多个逻辑汇集适配器绑定到沟通的接口上)。


I/O 虚拟化的未来

I/O 虚拟化的未来理想上已在今天完成。例如,PCIe 包括虚拟化支持。一种适合干事器虚拟化的虚拟化概念被称为 Single-Root I/O Virtualization (SR-IOV),这类虚拟化手艺(经由进程 PCI-Special Interest Group 或 PCI-SIG 树立)在单根庞杂实例(在本例中为一个带有多个 VM 的干事器,这些 VM 同享一个配备)中供应配备虚拟化。其他一个变体(称为 Multi-Root IOV)支持除夜型拓扑(好比刀片干事器,个中多个干事器可以接见一个或多个 PCIe 配备)。从某种意义上说,这类手艺支持随意率性局限的除夜型配备汇集,该汇集可以包括干事器、终端配备和交流机(用于配备发明和包路由)。

经由进程 SR-IOV,一个 PCIe 配备不只可以导出多个 PCI 物理功用,还可以导出同享该 I/O 配备上的成本的一组虚拟功用。这个简化的干事器虚拟化架构如图 4 所示。在这个模子中,不需求任何透传,因为虚拟化在终端配备上发生发火,从而准许治理轨范庞杂地将虚拟功用映照到 VM 上以完成本机配备功效和隔离平安。

图 4. 经由进程 SR-IOV 完成透传

http://noblog.qiniudn.com/wp-content/uploads/2014/10/figure411.gif虚拟化和 PCI 透传技术" />


停止语

虚拟化的成长已历经 50 多年,但直到现在 I/O 虚拟化才激起普遍留意。商业处置责罚器虚拟化支持只泛起了 5 年时辰。是以,从实质上说,平台和 I/O 虚拟化将若何成长已燃眉之急。作为诸如云竞赛争辩之类的未来架构的症结元素,虚拟化一定会成为值得关注的幽默手艺。和日常平凡一样,Linux 处于支持这些熟手在行艺的前沿阵地,最新的内核(2.6.27 或更高)已最先包括对这些新的虚拟手艺的支持。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有