试用 xen 4.0.1,尝试设置一个简单的 domU。
当我将参数放入 vif 中时,如下所示:
vif = [ 'ip=192.168.1.41,mac=00:16:3E:2F:F4:78,bridge=xenbr0,vifname=domu1' ]
它失败
error: Device 0 (vif) could not be connected.
ip link set vif5.0 name domu1 failed
另外,从 dom0 运行命令:
ip link set vif5.0 name domu1
返回
RTNETLINK answers: Device or resource busy
任何想法 ?
答案1
据我所知,vifname=
许多版本的 Xen 都没有正确支持该命令。
我的猜测是,您只能在某些用途之前重命名设备,而 Xen vif 脚本执行此操作太晚了。
查看源代码vif-common.sh
:
vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "")
if [ "$vifname" ]
then
if [ "$command" == "online" ] && ! ip link show "$vifname" >&/dev/null
then
do_or_die ip link set "$vif" name "$vifname"
fi
vif="$vifname"
fi
我没有看到任何明显的错误。你应该看看你的vif-common.sh
并确认它与此相同。
编辑:我认为此时 vifX.Y 接口可能尚未启动。尝试注释掉该do_or_die
行。这应该可以设置vif="$vifname"
,如果稍后创建该设备,则无需重命名它。
答案2
您的链接vif5.0已使用...
这个解决方案效果很好。每次我都建议你不要在生产服务器上使用它...
*** scripts/vif-common.sh.old 2012-03-28 16:00:50.555630500 +0200
--- scripts/vif-common.sh 2012-03-28 15:59:58.775633091 +0200
***************
*** 70,88 ****
--- 70,90 ----
# Check presence of compulsory args.
XENBUS_PATH="${XENBUS_PATH:?}"
dev="${dev:?}"
vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "")
if [ "$vifname" ]
then
if [ "$command" == "online" ] && ! ip link show "$vifname" >&/dev/null
then
+ ip link set "$dev" down
do_or_die ip link set "$dev" name "$vifname"
+ ip link set "$vifname" up
fi
dev="$vifname"
fi
elif [ "$type_if" = tap ]; then
# Check presence of compulsory args.
: ${INTERFACE:?}
# Get xenbus_path from device name.
# The name is built like that: "tap${domid}.${devid}".
答案3
以下是发生此问题的一个原因:
ps auxw | grep -v grep | grep NetworkManager && service network-manager stop
xm create
... 还有祝你好运!
解决方案 1、2 或 3:
- dpkg—清除网络管理器
- 服务网络管理器停止
- man NetworkManager.conf 并搜索“未管理的设备...
答案4
解决方案3实施:
使用以下命令更新 NetworkManager.conf:
[main]
plugins=keyfile
[keyfile]
unmanaged-devices=interface-name:vif*