我在运行 Xen 内核的 CentOS 5.6 服务器上安装了 10 个 domU。所有 10 个 domU 都设置为在系统启动时启动;但是,只有其中 1 个机器出现了此错误:
Error: Device 0 (vif) could not be connected. Hotplug scripts not working.
所有 10 个 domU 都配置了三个网络接口,全部桥接到主机上的物理接口。这三个接口都运行良好 - eth 1、2 和 3 桥接到每个 VM 的 eth0、eth1 和 eth2。
我可以手动启动此虚拟机,它启动没有问题。我已尝试通过命令行启动:
xm create /path/to/vm-config.cfg
并且也存在于 virt-manager 中。
是什么原因导致了这个问题?我怎样才能让这台虚拟机在主机启动时启动,就像其他 9 台虚拟机一样?
答案1
我在创建和销毁虚拟机一段时间后遇到了这个问题。这是 udev 的问题。据我所知,udev 不会处理 DOMID 大于 10 的新 vif 设备。我在将以下字符串添加到 udev 规则后修复了此问题:SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="online", RUN+="$env{script} online" SUBSYSTEM=="xen-backend", KERNEL=="vif*", ACTION=="offline", RUN+="$env{script} offline"
我还重新启动了 udev(这可能是 xm create start 工作的原因?)。
答案2
显然,这是与 Xen < 4.1 中的脚本相关的问题network-bridge
。这些 shell 脚本似乎相当不可靠,而 Xen 最佳实践文档现在建议使用操作系统的网络脚本来代替它们。因此,例如,如果您正在运行 Debian,这意味着配置桥接器/etc/network/interfaces
而不是依赖 Xen 脚本。
示例配置:
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
bridge_ports eth0
address 10.0.0.2
netmask 255.0.0.0
gateway 10.0.0.1
...等等。然后br0
在 domU.cfg
文件中引用并注释掉(network-script network-bridge)
中的行/etc/xen/xend-config.sxp
。