让ESXi7.0不支持的板载网卡发挥余热

今年上半年ESXi7.0发布后,大家发现螃蟹网卡和一些老旧的Intel网卡因为没有Native驱动而不被ESXi7.0支持了。

当然还可以继续使用ESXi6.7,因为里面有支持这些网卡的vmklinux驱动。

如果实在想使用7.0,有个折中的办法,接一个此驱动里提到的USB3.0网卡来做管理口(将驱动封装进7.0镜像,制作定制版启动U盘,此处步骤网上很多,就省略了)。

声明:以下纯属瞎折腾,请不要在重要环境里折腾。

下面以我的一台工控机为例,该机器使用6口Intel 82583V网卡,ESXi7.0已经不支持了。如果已经配置过USB3.0网卡,可以直接跳过从直通板载网卡部分开始看。

使用USB3.0网卡安装配置ESXi7.0

将USB3.0网卡(我的是使用AX88179芯片的某款绿联)连接工控机的USB3.0口,另一头插入网线,连接交换机或者路由器LAN口。

启动ESXi安装,小硬盘用户请记得调节autoPartitionOSDataSize=xxxx (参考如何不让ESXi7.0的虚拟闪存占掉你的小硬盘)。

安装一切顺利,直到遇到如下81%时的错误:

No vmknic
详细错误信息

从上面的错误信息来看,说的是没有成功的选取网卡作为管理口。真实原因是此过程正常是在查找vmnic#名字的网卡,我们的板载网卡在ESXi7.0中不支持,而usb网卡的名字是vusb#,所以没有匹配到。

经过测试,其实这个81%的时候ESXi已经安装好了,只是USB3.0网卡没有被成功当作管理口,还需要几步额外操作。

1. 移除安装U盘(已经不需要了)。

2. 重启。

3. 当ESXi加载完成后按F2, 使用root空密码登陆 (之前安装时虽然设置了密码,因为81%的错误,配置没有保存)。

4. 选择Network Restore Options

5. 保存退出,然后再F2进来。

6. 这时候Configure Management Network不是灰色了,可以选择了。

7. 在Network Adapters中选择vusb0,保存。

选择vusb0作为管理口

8. 这个时候稍等一下ESXi就会通过DHCP获取到IP了,如果需要设置静态IP,可以去IPv4 Configuration里设置。

9. 注意,因为USB3.0网卡的默认虚拟交换机设置会在ESXi下次重启后失效,所以要依照驱动中的Persisting USB NIC Bindings部分去设置/etc/rc.local.d/local.sh保存设置。

在/etc/rc.local.d/local.sh中添加图中部分

至此USB3.0网卡作为管理口已经设置好并且可以正常使用了,我们通过网页可以访问ESXi了。

在此基础上,创建虚拟机时就可以使用默认的vSwitch0的端口组VM Network了。

直通板载网卡

我们这里单独直通第六个口。

直通其中一个网口

创建一个虚拟机,这里以Windows10为例。网卡默认使用vSwitch0的端口组VM Network。安装成功后,确保Windows已经可以获取到局域网IP,比如192.168.1.188.

将Windows关机,添加PCI设备(直通的板载网卡第六口),预留内存。保存设置,开机。

添加PCI直通网卡

Windows网络连接中,显示有2个网卡(一个虚拟的,一个直通的82583V),两个一起选择,然后右键,选择桥接。

桥接虚拟网卡和直通网卡
查看桥接属性

这个时候,为了验证桥接的结果,用网线将工控机第六口和我的一台电脑连接,等一会后就能看到电脑的以太网连接自动获取到了局域网IP,为192.168.1.189。 这样工控机的板载网卡也被使用上了。

将直通的网口连接物理机

此时,每个直通的网口,只能被一个物理机使用,或者连接物理交换机,路由器继续扩展,而不能被ESXi的管理口或者其它虚拟机使用。

我们来进一步利用ESXi里的虚拟交换机来使用直通的网卡。

将直通的网卡桥接传回给vSwitch

添加一个标准虚拟交换机,记得把安全下面的设置从拒绝改成接受。

新建虚拟交换机

此虚拟交换机不需要上行链路。

如果想做管理口,那么去VMkernel网卡中添加一个vmk1,使用vSwitch1。

创建VMkernel
此时还获取不到IP

创建一个Bridge端口组。

Bridge端口组

查看vSwitch1的拓扑,vmk1还获取不到局域网IP。

vSwitch1拓扑

将之前的Win10虚拟机网络连接的桥接删除,关机,删除虚拟的VM Network网卡,添加一个新的虚拟网卡,使用Bridge端口组,保留直通的网卡。将直通的第六口用网线和局域网的交换机或者路由器LAN连接。开机。

修改虚拟网卡使用Bridge端口组

进入Windows网络连接,此时直通的网卡应该能够获取到局域网IP。

直通网卡的IP

将虚拟的Bridge和直通的网卡桥接。

稍等一会,去查看vSwitch1的拓扑。vmk1获取到了局域网IP:192.168.1.190

vmk1

如果想使此管理口在ESXi开机后可用,那么就要在ESXi中将此虚拟机改成随ESXi开机自动启动。

自动启动设置

接下来创建其它虚拟机,虚拟网卡使用Bridge端口组,就会通过此桥接的直通网卡获取到IP了。

其它虚拟机
vSwitch1拓扑

至此,板载的Intel 82583V也可以在ESXi7.0中做管理口(可以通过https://192.168.1.190访问ESXi网页客户端)和给虚拟机使用了。

使用Bridge端口组下的虚拟机进行局域网测速。

局域网iperf3测速

移除USB3.0网卡上的网线,单独使用直通的网卡

如果我们既使用USB3.0网卡,又使用桥接后的直通网卡做ESXi管理口,看起来是有点多余,当然我们也可以一个接WAN,一个接LAN,同时做管理口。

我们先尝试不用USB网卡来管理ESXi。

把ESXi关机,拔掉USB网卡上的网线,注意,这里只能拔掉网线,不能把USB网卡也拔掉,因为ESXi开机启动时,如果检测不到vusb0,就会报一个没有网卡的错误而不能正常完成启动,后面的win10虚拟机也没法跟着自动启动了,所以我们插着USB网卡不插网线可以让ESXi正常启动。

ESXi开机,用局域网里其它机器一直ping新的管理口192.168.1.190。因为我们上面修改过local.sh,在网口状态是down的情况下会最多重试20次,每次sleep10秒钟,再加上本身我们设置虚拟机开机自动启动还有60秒延时,导致整个过程比较长(可以酌情去修改local.sh中的重试次数和sleep时长),要好几分钟(ping icmp_seq大概有500+),耐心的一直等到ping通了,就可以通过https://192.168.1.190访问ESXi网页客户端,此时桥接的windows虚拟机已经自动启动。(请记得把Win10系统的自动休眠等电源选项关闭,防止一段时间后虚拟机休眠了,桥接就断了。)

ESXi中查看物理适配器vusb0是链路已断开的状态(没插网线)。

vusb0链路已断开

不过这里还是建议大家也发挥下USB3.0网卡的功能,给它插上网线,接WAN也好,接LAN也好。

一点不完美

不太完美的就是使用Win10做桥接会占用较多的系统资源,因为要预留内存,比如我给Win10分配了2G内存。如果把桥接的虚拟机从Windows换成Linux,分配少点资源应该也足够。我这里就不试了,想试的去研究下Linux中的bridge-utils即可。也非常简单,把虚拟的Bridge端口组网卡和直通的网卡一桥接就行了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据