![什么原因导致在带有 Xen 内核的 CentOS5.6 x86_64 上出现错误“错误:无法连接设备 0 (vif)。热插拔脚本不起作用。”?](https://linux22.com/image/550000/%E4%BB%80%E4%B9%88%E5%8E%9F%E5%9B%A0%E5%AF%BC%E8%87%B4%E5%9C%A8%E5%B8%A6%E6%9C%89%20Xen%20%E5%86%85%E6%A0%B8%E7%9A%84%20CentOS5.6%20x86_64%20%E4%B8%8A%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%E2%80%9C%E9%94%99%E8%AF%AF%EF%BC%9A%E6%97%A0%E6%B3%95%E8%BF%9E%E6%8E%A5%E8%AE%BE%E5%A4%87%200%20(vif)%E3%80%82%E7%83%AD%E6%8F%92%E6%8B%94%E8%84%9A%E6%9C%AC%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%E3%80%82%E2%80%9D%EF%BC%9F.png)
我在运行 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
。