在虚拟化里管理PCI设备

日期: 2008-09-21 作者:Sander van Vugt翻译:唐琼瑶 来源:TechTarget中国 英文

在默认情况下,所有的PCI(外围部件互连)设备能用于所有虚拟机。在某些情况下却不可用。例如,仅仅只能用于一台具体虚拟机的软件狗或网络板(network board),你想要把它们保留以达到更好的性能。在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt将分析与PCI设备相关的选项。

本文使用的是Xen环境。   为一台虚拟机保留PCI设备,你必须确保不是由Dom0操作系统完成的。因此,你需要pciback模块。让这个模块自己工作,你必须确信它在每个启动程序的早期被激活。

一般说来,你必须把它放在服务器的initrd里。如果你正使用SUSE,打开/etc/sysconfi……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在默认情况下,所有的PCI(外围部件互连)设备能用于所有虚拟机。在某些情况下却不可用。例如,仅仅只能用于一台具体虚拟机的软件狗或网络板(network board),你想要把它们保留以达到更好的性能。在本文中,TechTarget中国的特约虚拟化专家Sander van Vugt将分析与PCI设备相关的选项。本文使用的是Xen环境。

  为一台虚拟机保留PCI设备,你必须确保不是由Dom0操作系统完成的。因此,你需要pciback模块。让这个模块自己工作,你必须确信它在每个启动程序的早期被激活。一般说来,你必须把它放在服务器的initrd里。如果你正使用SUSE,打开/etc/sysconfig/内核并添加pciback到initrd模块列表里。接下来,运行mkinitrd命令以产生新initrd。

  既然当你服务器启动时,你确定pciback模块首先装入,你能给它分配PCI接口。你需要用到表1所示的lspci命令。

  (表1请参见文章末尾部分的“代码”部分)

  在lspci命令输出的例子中,你看见一个简短的使用PCI设备ID的记法。在前面输入0000得到完整的设备ID。接下来,使用/etc/modprobe.conf.local配置文件告诉pciback应该排除某一个模块。例如,从上面的模块列表中包含IEEE 1394,在/etc/modprobe.conf里输入下面行:

  options pciback hide=(0000:03:01.0)

  确保随后编辑加载模块配置文件时,能使用mkinitrd命令重建initrd。同样不要忘记重新启动虚拟机。

  用这种方法排除PCI设备后,你需要把它与某个虚拟机捆绑在一起。因此,你必须把它放进它的配置文件中,或当启动虚拟机时指定设备的名字。如果你想把它永久地放进虚拟机的配置文件里,在文件中输入下面行:

  pci=[ ’0000:03:01.0’, ]

  接下来,开启虚拟机。你现在能看见虚拟机里的PCI设备。这台虚拟机将是唯一能访问这个PCI设备的机器。你也能执行一个手动捆绑。例如,当启动虚拟机时,将下面的命令暂时分配给一个PCI设备:

  xm create pci=0000:03:01.0 /etc/xen/vm/virtualserver

  当在一个使用Virtual Machine Manager的虚拟化平台上作出这样的设置时,接下来不要忘记使用xm new /etc/xen/vm/virtualserver命令。这也将添加虚拟机到托管的Xen环境。

  设备共享的好坏

  在虚拟环境工作的主要好处是共享物理设备的能力。然而某些情况下,不要共享设备,而是保留给具体的虚拟机。在下文中,你将学习如何保留PCI设备到虚拟机。

  代码

  表1:使用lspci命令找到你想要排除的PCI接口的PCI ID

BTN:~ # lspci


00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML
          and 945GT Express Memory Controller Hub (rev 03)
00:01.0 PCI bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML
          and 945GT Express PCI Express Root Port (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family)
          High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family)
         PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family)
         PCI Express Port 2 (rev 01)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family)
          PCI Express Port 3 (rev 01)
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family)
          PCI Express Port 4 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family)
           USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family)
           USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family)
          USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family)
         USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family)
         USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M)
          LPC Interface Bridge (rev 01)
00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family)
          SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus
          Controller (rev 01)
01:00.0 VGA compatible controller: nVidia Corporation GeForce
          Go 7950 GTX (rev a1)
03:01.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller
03:01.1 Generic system peripheral [Class 0805]: Ricoh Co
          Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 19)
03:01.2 System peripheral: Ricoh Co Ltd R5C843 MMC
          Host Controller (rev 01)
03:01.3 System peripheral: Ricoh Co Ltd R5C592 Memory
          Stick Bus Host Adapter (rev 0a)
03:01.4 System peripheral: Ricoh Co Ltd xD-Picture
          Card Controller (rev 05)
09:00.0 Ethernet controller: Broadcom Corporation NetXtreme
         BCM5752 Gigabit Ethernet PCI Express (rev 02)
0c:00.0 Network controller: Broadcom Corporation BCM4328
         802.11a/b/g/n (rev 01)

相关推荐