QEmuでvirtio2やvirtio3などのデバイスを識別する

QEmuでvirtio2やvirtio3などのデバイスを識別する

QEmuで仮想マシンを実行しています。ゲスト仮想マシンで次のコマンドを実行すると、 cat /proc/interrupts | egrep 'virtio.*(input|output)'次の出力が得られます。

 26:          0       3376          0          0          0          0          0          0   PCI-MSI-edge      virtio2-input
 27:          0          1          0          0          0          0          0          0   PCI-MSI-edge      virtio2-output
 29:          0       3368          0          0          0          0          0          0   PCI-MSI-edge      virtio3-input
 30:          0          2          0          0          0          0          0          0   PCI-MSI-edge      virtio3-output
 32:          0       3490          0          0          0          0          0          0   PCI-MSI-edge      virtio4-input
 33:          0          1          0          0          0          0          0          0   PCI-MSI-edge      virtio4-output
 35:          0       4995          0          0          0          0          0          0   PCI-MSI-edge      virtio5-input
 36:          0          1          0          0          0          0          0          0   PCI-MSI-edge      virtio5-output
 38:          0    1818743          0          0          0          0          0          0   PCI-MSI-edge      virtio6-input
 39:          0          1          0          0          0          0          0          0   PCI-MSI-edge      virtio6-output
 41:          0    1822784          0          0          0          0          0          0   PCI-MSI-edge      virtio7-input
 42:          0          1          0          0          0          0          0          0   PCI-MSI-edge      virtio7-output
 44:          0       2470          0          0          0          0          0          0   PCI-MSI-edge      virtio8-input
 45:          0          0          2          0          0          0          0          0   PCI-MSI-edge      virtio8-output
 47:          0          0         94          0          0          0          0          0   PCI-MSI-edge      virtio9-input
 48:          0          0          1          0          0          0          0          0   PCI-MSI-edge      virtio9-output

virtio2...virtio9ネットワークカードが8枚あるようです。しかし、そのうちのどれがどのカードに該当するのかわかりません。 MACアドレスを取得したりvirtio3、ネットワークカードを識別する方法はありますか?

ベストアンサー1

私には方法があります(数回前に他のフォーラムで使用されています)

# vm mac address list
for vm in $(virsh list | grep running | awk '{print $2}'); do \
  echo -n "$vm "; \
  virsh dumpxml $vm| grep -oP "52:54:[\da-f:]+" ; 
done > vm_mac.list

# vm ip list
arp -i virbr0 | grep '52:' | while read addr ; do \
  ip=$(echo $addr | awk '{print $1}'); \
  mac=$(echo $addr | awk '{print $3}'); \
  vm=$(grep "$mac" vm_mac.list | awk '{print $1}'); \
  echo "$vm $ip $mac"; \
done | sort

おすすめ記事