什么原因导致在带有 Xen 内核的 CentOS5.6 x86_64 上出现错误“错误:无法连接设备 0 (vif)。热插拔脚本不起作用。”?

什么原因导致在带有 Xen 内核的 CentOS5.6 x86_64 上出现错误“错误:无法连接设备 0 (vif)。热插拔脚本不起作用。”?

我在运行 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

相关内容