我在 Hyper-V Server 2008 R2 SP1 上安装了 CentOS 6.0。VM 仅启用了合成网络适配器。安装成功(没有任何网络),然后我从 ISO 安装了 Linux Integration Services 3.1,一切正常。现在所有 Hyper-V 模块都已安装(包括 hv_netvsc),但没有检测到网络适配器。
运行 dmesg | grep eth 返回消息“由于没有校验和功能,因此删除 NETIF_F_SG。”通过互联网上的研究表明,校验和似乎是一些关键功能,没有它,CentOS 就无法使用网络适配器,而且微软的 LIS3.1 模块显然没有实现它。
我可以做些什么来在 CentOS 中使用合成网络适配器?还是我做错了什么,它应该可以正常工作?合成适配器功能是否取决于主机中使用的硬件以太网卡?CentOS 内核版本似乎是 2.6.32-71.el6.x86_64,虚拟机管理程序是 R2 SP1,安装了所有更新。
如果第一个问题的答案是“不,它不起作用”,那么第二个问题是:使用模拟(旧式)网络驱动程序是否会造成很大的性能损失?在生产环境中应该避免这种情况吗?
答案1
如果其他人遇到同样的问题,解决方案如下:成功安装 LIS3 后,必须通过添加文件 /etc/sysconfig/network-scripts/ifcfg-eth0 和 /etc/sysconfig/networking/profiles/default/ifcfg-eth0 来手动配置适配器。
对我有用的步骤:
- 创建同时具有网络适配器和旧网络适配器的虚拟机
- 安装 CentOS 6 和 Linux Integration Services 3.1
- 创建 /etc/sysconfig/network-scripts/ifcfg-eth1 和 /etc/sysconfig/networking/profiles/default/ifcfg-eth1 文件
- 重新启动并检查两个网络接口是否均已启动
- 删除 ifcft-eth0 并将 ifcfg-eth1 重命名为 ifcfg-eth0(两个位置均删除)
- 关闭并删除 hyper-v 机器属性中的旧适配器,然后打开
我发现最有用信息的来源:
答案2
(解决了)
请在 hyper-v 设置中分配静态 MAC 地址。MAC 应与您的 linux VM 中的 MAC 相同。您可以在 中找到 MAC 地址/etc/sysconfig/network-scripts/ifcfg-eth0
。
答案3
在 Google 上搜索“为什么 Hyper-v 2012 的以太网端口在 eth1 上而不是 eth0 上”?
删除现有的 NIC UDEV 规则。如果您添加/更改 NIC,udev 规则会检测到新设备并为其分配不同的接口名称。有关说明,请参阅将 CentOS Linux 上的以太网接口重新编号为 eth0或者强制 CentOS 6 重新检测网络设备
这是怎么发生的?当虚拟机被克隆时。例如,你拿一台网卡为 eth0 的机器,克隆映像,然后为该映像创建一个具有不同 MAC 地址的新虚拟机。网卡将是 eth1,而不是 eth0。
其他假设?我使用 Hyper-V 2012、CentOS6.3 x64 和 Microsoft Linux Integration Services 进行了测试3.4