免責事項: これは英文の記事Mapping PCI slot numbers to guest-visible PCI bus topologyの日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事を参照してください。
VMware 仮想マシンを記述する設定ファイル(拡張子 .vmx のファイル)には、仮想マシンの電源がオンになったときに、ハイパーバイザーによって NIC や HBA などの PCI または PCIe 仮想デバイスが接続される 永続的 PCI スロット番号のエンコード情報が含まれています。
この記事では、それらの 永続的 PCI スロット番号を、ゲスト OS 内で可視となる PCI バストポロジにマッピングするために使用される内部アルゴリズムについて説明します。この説明は、ゲスト OS 内のマルチインスタンス仮想デバイス(例:複数の VMXNET3 vNIC)を、仮想マシンの構成内にある仮想デバイスインスタンスにマッピングする際に役立ちます。
VMware vSphere ESXi
マッピングアルゴリズムは、以下のステップで説明できます:
# egrep "ethernet4.pciSlotNumber" /path/to/VM/VM.vmx
ethernet4.pciSlotNumber = "1216"
FFF.BBBBB.DDDDD
001.00110.00000 [1216 = 0x4C0]BBBBB が00000の場合、デバイスはプライマリ PCIバス上の Bus:Dev.Func 0:DDDDD.0に存在します:# egrep "pciBridge0.pciSlotNumber" /path/to/VM/VM.vmx
pciBridge0.pciSlotNumber = "17"
000.00000.10001 [17 = 0x11]Bus:Dev.Func = 00h:11h.00h
PCI ブリッジデバイス = BBBBB - 1 = 5 (仮想デバイス名 "pciBridge5")# egrep "pciBridge5.pciSlotNumber" /path/to/VM/VM.vmx
pciBridge5.pciSlotNumber = "22"
FFF.BBBBB.DDDDD
000.00000.10110 [22 = 0x16]Bus:Dev.Func = 00h:16h:01h
(ステップ6からDev = 0x16 , ステップ2からFunc = 0x1)00h:16h:01h の配下にあるセカンダリバス上の Dev.Func 00h:0h に位置するethernet4
備考: