Libvirt 宿主机重启网络后brctl网桥丢失

昨晚在重启宿主机网络后,导致所有虚拟机网络全部断开,做个记录。

起因

由于要通过这台宿主机与上游起bgp session,我加了一个网卡专门用于bgp使用(br101):

image-20230103150613060

修改完配置文件照常重启:

1
systemctl restart networking

没有报错,但是不久后发现VM网络全不可用。

排查

首先尝试重启重启虚拟机,重启后该台VM的网络可以恢复。

因此考虑是不是网桥出现的问题,通过brctl查看桥接网卡的数量和正在运行的vm数量,发现确实不一致:

image-20230103151202009

找一台还没通网的vm,查看网卡情况:

1
2
3
4
5
6
7
8
9
10
11
root@Host-by-nero:~# ip a
// 出现问题的vm
53: 9964673281: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb state UNKNOWN group default qlen 1000
link/ether fe:7e:6b:56:ef:bd brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc7e:6bff:fe56:efbd/64 scope link
valid_lft forever preferred_lft forever
// 正常的vm
58: 7575009082: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc htb master br0 state UNKNOWN group default qlen 1000
link/ether fe:a5:ab:b1:48:bd brd ff:ff:ff:ff:ff:ff
inet6 fe80::fca5:abff:feb1:48bd/64 scope link
valid_lft forever preferred_lft forever

可以发现出现问题的网卡state变为了unknown,后续通过brctl也查不到该网卡的桥接信息。

由此可以确定,当宿主机重启网络后(systemctl restart networking),brctl的桥接信息将会丢失,且不会自动reconnect。

解决方案

Google后发现该问题确实存在,但都没有比较好的解决方案

ubuntu 10.04 - KVM guests lose connectivity after networking restart - Server Fault

virsh 重启虚拟网络以后,虚拟机的虚拟机网卡不会自动重连,能不能搞成自动把虚拟机的网卡加到网桥里? (github.com)

  • 通过brctl自行加入网桥:
1
brctl addif br0 7575009082

2023/01/09 Update:

  • 通过命令批量挂载:
1
virsh list --name | xargs -i virsh domiflist {} | grep bridge | awk '{print $1}' | xargs -i ip link set {} master br0

Libvirt 宿主机重启网络后brctl网桥丢失
http://example.com/2023/01/03/Libvirt-宿主机重启网络后brctl网桥丢失/
作者
Rae
发布于
2023年1月3日
许可协议