Xen 4.0.1 vifname 从配置文件中消失了吗?

Xen 4.0.1 vifname 从配置文件中消失了吗?

试用 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:

  1. dpkg—清除网络管理器
  2. 服务网络管理器停止
  3. man NetworkManager.conf 并搜索“未管理的设备...

解释:http://bugs.launchpad.net/bugs/191889

答案4

解决方案3实施:

使用以下命令更新 NetworkManager.conf:

[main]
plugins=keyfile

[keyfile]
unmanaged-devices=interface-name:vif*

相关内容