说明
最近验证各种网络场景,对网卡的配置数量不断在增加,现有虚拟机运行着好不容易搭的环境,实在不想重启虚拟机离线方式添加网卡。因为没有云平台都是本地libvirt管理的虚拟机,所以整理下使用网卡添加的使用方法,
添加网卡
热添加SR-IOV网卡
对于VF类型网卡,在执行至SR-IOV切分VF后,VF会被内核自动加载默认的iavf驱动。此时想要热添加到虚拟机中,需要先卸载VF设备的iavf驱动。
#0000:81:02.0是切分后待透传的VF设备的BDF号
echo 0000:81:02.0 > /sys/bus/pci/drivers/iavf/unbind
卸载后,设备下的driver_override为(null),是无法直接在/sys/bus/pci/drivers/vfio-pci下bind设备的,会提示没有device,需要先将设备的driver_override配置为vfio-pci,挂载驱动后再进行绑定。
echo vfio-pci > /sys/bus/pci/devices/0000:81:02.0/driver_override
echo 0000:81:02.0 > /sys/bus/pci/drivers/vfio-pci/bind
VF设备加载为vfio-pci后,使用virsh命令进行热添加。需要指定type类型为hostdev,VF设备也是一种主机设备透传的方式被使用。
virsh attach-interface rqw_ffr_t3 --type hostdev --source 0000:81:02.0 --model vfio --live --config --persistent
热添加virtio网卡
对于虚机间的网络流量使用主机上的虚拟网桥即可,当然如果对性能要求很高可以不考虑。
#主机上创建虚拟网桥
brctl addbr virbr13
ip link set virbr13 up
ip addr add 192.168.13.1/24 dev virbr13
#source指定virbr13,使用virtio驱动
virsh attach-interface rqw_ffr_t3 --type bridge --source virbr13 --model virtio --config --live --persistent
离线添加VF网卡
这里顺便记录下离线添加网卡的配置,避免到处去找网卡XML格式。
<interface type='hostdev' managed='yes'>
<driver name='vfio'/>
<source>
<address type='pci' domain='0x0000' bus='0x81' slot='0x02' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x0c' slot='0x00' function='0x0'/>
</interface>
后续补充其他遇到的网卡类型 。
热卸载网卡
先获取需要卸载的网卡type和mac地址。在使用detach-interface卸载
<interface type='bridge'>
<mac address='52:54:00:8d:fd:f2'/>
<source bridge='virbr13'/>
<target dev='vnet11'/>
<model type='virtio'/>
<alias name='net2'/>
<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</interface>
virsh detach-interface rqw_ffr_t3 --type bridge --mac 52:54:00:8d:fd:f2 --config --live