Networking

有沒有辦法確定哪個虛擬介面屬於 kvm 主機中的虛擬機?

  • February 19, 2022

我正在使用帶有橋接網路的 qemu/kvm。在主機中有幾個沒有 IP 的“vnetX”網路介面。我正在尋找一種方法來知道哪個 vnetX 屬於虛擬機。

我嘗試將這些介面上的 MAC 地址值與虛擬機上的 MAC(或定義它們的 XML)匹配,但不匹配。

有 brctl show 顯示屬於網橋的 vnet 介面,但這不是有用的資訊。

有沒有辦法知道這種關係?謝謝!!

這個怎麼樣(例如vnet13):

$ VNET=vnet13; for vm in $(virsh list | grep running | awk '{print $2}'); do virsh dumpxml $vm|grep -q "$VNET" && echo $vm; done

這裡我們virsh dumpxml用來顯示有關 VM 的動態屬性,這些屬性在 /etc/libvirt/qemu/foo.xml 中的 VM 的靜態 XML 定義中不可用。哪個vnetX介面連接到哪個虛擬機就是這樣一個動態屬性。虛擬機的 MAC 地址也是如此。

試試virsh dumpxml $domain,你會看到類似的東西:

 <interface type='network'>
 <mac address='52:54:00:9d:9d:10'/>
 <source network='default'/>
 <target dev='vnet1'/>
 <model type='e1000'/>
 <alias name='net1'/>
 <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>

alias name是在 qemu-kvm 命令行中使用的,所以如果你ps -ef |grep qemu|grep net1從我的例子中執行,你會看到這個介面使用的實際命令語法。

引用自:https://serverfault.com/questions/396105