联网重启后,KVM客户端将丢失连接

我们正在用kvmbuild立一个ubuntu服务器10.04主机。 主机使用绑定和接接口进行设置,以允许访客无需访问即可访问networking。 我们当前的configuration工作正常,除非我们用/etc/init.d/networking restart重新启动networking。 重新启动networking后,客户端将失去连接。 唯一的方法来恢复它是停止客人,并再次启动。

我一直在四处张望,但我似乎无法find任何已知的错误/问题/这种行为的报告。

以下是我们的networkingconfiguration文件:

auto lo iface lo inet loopback auto bond0 iface bond0 inet manual bond-slaves none bond-mode active-backup bond-downdelay 250 bond-updelay 120 bond-miimon 100 auto eth0 iface eth0 inet manual bond-master bond0 bond-primary eth0 eth1 auto eth1 iface eth1 inet manual bond-master bond0 bond-primary eth0 eth1 #bridge used by host auto br-vlan180 iface br-vlan180 inet static address 10.0.0.200 netmask 255.255.255.0 gateway 10.0.0.1 vlan-raw-device bond0 bridge_ports vlan180 bridge_maxwait 0 bridge_fd 0 bridge_stp off #bridge without address, used by vm auto br-vlan120 iface br-vlan120 inet manual vlan-raw-device bond0 bridge_ports vlan120 bridge_maxwait 0 bridge_fd 0 bridge_stp off 

谢谢

附录 – brctl在nw restart之前和之后显示输出:

BRCTL在NW重新启动前显示

 brctl show bridge name bridge id STP enabled interfaces br-vlan120 8000.984be1644072 no vlan120 vnet0 vnet1 br-vlan180 8000.984be1644072 no vlan180 virbr0 8000.000000000000 yes 

BRCTL在NW重新启动后显示

 brctl show bridge name bridge id STP enabled interfaces br-vlan120 8000.984be1644072 no vlan120 br-vlan180 8000.984be1644072 no vlan180 virbr0 8000.000000000000 yes 

显然,networking重启后两个虚拟接口无法恢复。

PS之前重新启动NW

 ps -ef | grep qemu root 1784 1 6 11:45 ? 00:00:40 /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 1 -name test02 -uuid ee6d84b6-dbf8-d93c-b32f-8ae6b7d9b80e -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/test02.monitor,server,nowait -monitor chardev:monitor -boot c -drive file=/dev/sysvg/test02,if=virtio,index=0,boot=on,format=raw -drive file=/root/ubuntu-10.04.2-server-amd64.iso,if=ide,media=cdrom,index=2,format=raw -net nic,macaddr=52:54:00:2c:d1:26,vlan=0,name=nic.0 -net tap,fd=48,vlan=0,name=tap.0 -chardev pty,id=serial0 -serial chardev:serial0 -parallel none -usb -vnc 127.0.0.1:0 -vga cirrus -soundhw es1370 root 2711 1 89 11:55 ? 00:00:14 /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 2 -name nttest -uuid 04ca381e-0510-7d3c-c7e2-8f7d7b6ea58f -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/nttest.monitor,server,nowait -monitor chardev:monitor -localtime -boot c -drive file=/dev/sysvg/nttest,if=ide,index=0,boot=on,format=raw -drive file=/root/SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_English_w_SP1_MLF_X17-22580.ISO,if=ide,media=cdrom,index=2,format=raw -net nic,macaddr=52:54:00:62:1b:2e,vlan=0,name=nic.0 -net tap,fd=51,vlan=0,name=tap.0 -chardev pty,id=serial0 -serial chardev:serial0 -parallel none -usb -usbdevice tablet -vnc 127.0.0.1:1 -vga cirrus -soundhw es1370 

PS在NW重新启动后

 ps -ef | grep qemu root 1784 1 4 11:45 ? 00:00:59 /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 1 -name test02 -uuid ee6d84b6-dbf8-d93c-b32f-8ae6b7d9b80e -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/test02.monitor,server,nowait -monitor chardev:monitor -boot c -drive file=/dev/sysvg/test02,if=virtio,index=0,boot=on,format=raw -drive file=/root/ubuntu-10.04.2-server-amd64.iso,if=ide,media=cdrom,index=2,format=raw -net nic,macaddr=52:54:00:2c:d1:26,vlan=0,name=nic.0 -net tap,fd=48,vlan=0,name=tap.0 -chardev pty,id=serial0 -serial chardev:serial0 -parallel none -usb -vnc 127.0.0.1:0 -vga cirrus -soundhw es1370 root 2711 1 39 11:55 ? 00:03:51 /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 512 -smp 2 -name nttest -uuid 04ca381e-0510-7d3c-c7e2-8f7d7b6ea58f -chardev socket,id=monitor,path=/var/lib/libvirt/qemu/nttest.monitor,server,nowait -monitor chardev:monitor -localtime -boot c -drive file=/dev/sysvg/nttest,if=ide,index=0,boot=on,format=raw -drive file=/root/SW_DVD5_Windows_Svr_DC_EE_SE_Web_2008_R2_64Bit_English_w_SP1_MLF_X17-22580.ISO,if=ide,media=cdrom,index=2,format=raw -net nic,macaddr=52:54:00:62:1b:2e,vlan=0,name=nic.0 -net tap,fd=51,vlan=0,name=tap.0 -chardev pty,id=serial0 -serial chardev:serial0 -parallel none -usb -usbdevice tablet -vnc 127.0.0.1:1 -vga cirrus -soundhw es1370 

那么问题是,当您重新启动networking时,vnetX tap设备不会重新连接,导致虚拟机失去与网桥的连接。

我想你可以手动将它们重新连接到网桥,因为它们仍然在运行,但是正确的做法是将虚拟机从networking更改的主机迁移出去,或者将虚拟机closures在一个单一的主机模式。 在大多数企业级系统中,这被称为“维护模式”,并且改变networkingconfiguration肯定是维护。