USB Network Native Driver for ESXi 8.0U1 (v1.12) and 8.0U2 (v1.13)

 因为 VMware 在被 Broadcom 收购后关闭了 Flings 网站,此社区版驱动文档迁移到了 USB Network Native Driver for ESXi Documentation – VMware Technology Network VMTN

之前发布的8.0U1 和 8.0U2 的下载链接暂时无法从 VMware 官网获得,不过有网友事先通过 archive.org留存了备份,如下https://archive.org/download/flings.vmware.com/Flings/USB%20Network%20Native%20Driver%20for%20ESXi/

请注意以下更新提示

Changelog

Sep 21, 2023 – v1.13

  • Added support for ESXi 8.0 Update 2
  • ESXi80U2-VMKUSB-NIC-FLING-67561870-component-22416446.zip (md5: bf62144b4e695c3d00cb614a4ecfb2c3)

Note:

This is ONLY for ESXi 8.0 Update 2, for other ESXi versions (including update releases), please ensure you are using the correct version of driver.


Apr 26, 2023 – v1.12

  • Added support for ESXi 8.0 Update 1
  • Added support for new DLINK RTL8156 device (0x2001:0xb301)
  • Fixed 2.5GbE link speed issue for RTL8156 adapter
  • Updated maximum supported USB Network devices to 12 and persists setting over module parameters
  • ESXi800-VMKUSB-NIC-FLING-64098182-component-21668107.zip (md5: 4a35899f77ce4635d0cfa76a7975504d)
  • ESXi80U1-VMKUSB-NIC-FLING-64098092-component-21669994.zip (md5: 9c41b5f488ec5cee325207e16b047c10)

Note 1:

This is ONLY for ESXi 8.0 & 8.0 Update 1, for other ESXi versions (including update releases), please ensure you are using the correct version of driver.

Note 2:

Known performance issue with RTL8156, TX up to 2.35Gbps while RX up to 2.15Gbps ​

ESXi for ARM 1.15

官方文档页面已从 Flings 迁移到 ESXi-Arm Fling 1.15 Refresh – VMware Technology Network VMTN

下载地址为 https://customerconnect.vmware.com/downloads/get-download?downloadGroup=ESXI-ARM

需要VMware Customer Connect 账号登录。

更新如下:

Changes in this release

  • Support Virtual CPU Performance Counters.
  • Fix Virtual UEFI for the Arm Architecture Compliance Suite.
  • Update EQOS driver:
    • Fix byte-swapped MAC address (important note below!)
    • Add IEEE 802.3x flow control support
  • Support for PCIe devices on Raspberry Pi Compute Module 4 (important note below!)
  • Report Arm DEN0028 defined SoC version and revision (as returned by the SMCCC_ARCH_SOC_ID SMC call) via telemetry.

其中有一点是对树莓派CM4的 PCIe 支持(只测试过 NVMe)。 ​

ESXi for ARM 最新下载地址

由于VMware决定关闭 flings.vmware.com 网站,内容被迁移到不同的地方,网站跳转到 https://developer.vmware.com/samples

ESXi for ARM的下载地址迁移到了 https://customerconnect.vmware.com/downloads/get-download?downloadGroup=ESXI-ARM,需要使用VMware Customer Connect账号登录。

相关文档迁移到了 https://communities.vmware.com/t5/ESXi-Arm-Fling-Documents/VMware-ESXi-Arm-Documentation/ta-p/2993062

目前最新版还是20230901的1.14版本。

USB Network Native Driver for ESXi更新支持ESXi8.0

 在ESXi8.0发布一个多月后,社区版的USB网卡驱动终于在flings上更新了,USB Network Native Driver for ESXi | VMware Flings

Nov 23, 2022 – v1.11
Added support for ESXi 8.0
      ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip
      md5: 55087041545d2500c1b22deb65107f22

Note: This is ONLY for ESXi 8.0, for other ESXi versions (including update releases), please ensure you are using the correct version of driver.

https://flings.vmware.com/usb-network-native-driver-for-esxi#changelog

来尝试下封装驱动,PowerCLI近期也更新到了13.0,https://www.powershellgallery.com/packages/VMware.PowerCLI/13.0.0.20829139

Install-Module -Name VMware.PowerCLI

接着验证下安装的版本

Get-Module -Name VMware.PowerCLI | Select-Object -Property Name,Version
验证安装的版本

需要注意的是,PowerCLI 13.0中的VMware.ImageBuilder 模块是依赖Python3.7的,参照https://developer.vmware.com/docs/15315/powercli-user-s-guide/GUID-9081EBAF-BF85-48B1-82A0-D1C49F3FF1E8.html

这里需要做几点:

  1. 下载 Python 3.7 https://www.python.org/downloads/release/python-370/.
  2. 安装Python 3.7.
  3. 保存 get-pip.py https://bootstrap.pypa.io/get-pip.py.
  4. 打开终端安装pip.<python3.7-directory>\python.exe <get-pip-directory>\get-pip.py
  5. 安装所需的Python模块.<python3.7-directory>\Scripts\pip3.7.exe install six psutil lxml pyopenssl
https://vdc-repo.vmware.com/vmwb-repository/dcr-public/9619cb6d-3975-4bff-aa1f-0e785283a1a9/4e10b776-59b2-42f9-af52-c8cca2b7ecbe/GUID-F98FF88D-D31F-48F0-8C3A-1C6492CD8AFB.html

在Powershell中配置Python3.7路径

  • 在Windows上 Set-PowerCLIConfiguration –PythonPath <python3.7-directory>\python.exe –Scope User

https://vdc-repo.vmware.com/vmwb-repository/dcr-public/9619cb6d-3975-4bff-aa1f-0e785283a1a9/4e10b776-59b2-42f9-af52-c8cca2b7ecbe/GUID-EB16871E-D52B-4B46-9675-241AD42C1BE6.html

https://github.com/VFrontDe-Org/ESXi-Customizer-PS 下载封装脚本,最新为2.9.0.

下载原版的ESXi 8.0离线包 VMware-ESXi-8.0-20513097-depot.zip

下载最新的 支持8.0的USB网卡驱动 ESXi800-VMKUSB-NIC-FLING-61054763-component-20826251.zip

以管理员权限运行Powershell

封装成功

由于我之前已经在机器上安装了原版ESXi 8.0,这里就不重新安装了。在现有ESXi上安装这个驱动再插上USB网卡试试。

成功安装驱动

安装后需要重启ESXi。

Web Console里有提示

我一般习惯把开机的VM Suspend,然后进入维护模式后重启ESXi。

重启开机就识别到了

vSphere 8 (ESXi 8.0.0)

VMware 最新发布了vSphere 8 VMware vSphere 8.0 Release Notes

Notes: 请注意Release Notes中提到的被抛弃支持的硬件。

另外,ESXi 引导的最低内存要求已从 4 GB 增加到 8 GB。运行虚拟机所需的最小内存量仍为 8 GB。

如果只是旧的CPU不被支持了,可以在安装ESXi启动时Shift+O 后面加上空格allowLegacyCPU=true

第一时间在我的SuperMicro E302-9D上安装了vSphere 8 (ESXi 8.0.0)。

安装界面区别不大

我是用的IPMI远程安装 安装完成

ESXi Host Client登录 界面颜色怪怪的

可直通的硬件能看到的温度传感器 

如果跟我一样不喜欢这个界面,那么可以找到右上角帮助菜单里的关于。

这里可以切换Light(默认),Dark ,Classic(7.0),以及在三个主题下去Customize。

我更喜欢Dark这个主题。

另外vCenter Server也来到了8.0版本。(我也顺便一起切换了Dark主题) 

 

另外,虽然VMware宣称不官方支持ESXi8.0 on Apple Device,或者在vSphere 8上虚拟macOS。

但网友实测,原有的一些Intel CPU的Mac设备,还是能继续安装使用ESXi8.0的。

比如Intel Mac Mini 2018(8,1),默认安装会失败,需要在安装镜像的 EFI/boot/boot.cfg 中最后添加一行norts=1,这样安装能够正常完成。但是安装完成后不要直接重启,需要到 /bootbank分区更新boot.cfg, 方法是ALT+F1进入ESXi Shell,然后去编辑文件加入norts=1,保存后再重起就没问题了。

也有网友确认Intel Mac Pro 2019(7,1)也没有问题。

稍微老一点的Intel Mac Mini,就需要在安装启动时加入allowLegacyCPU=true了。比如2011(5,3), 2012(6,1, 6,2), 2014(7,1)。但是据说2011款内置的网卡不支持了,建议使用雷电2转以太网。

我自己还尝试了在Intel NUC 10上安装 ESXi8.0,没有遇到任何问题。 ​

ESXi 社区版网卡驱动

最近 VMware的flings网站里新增加了Community Networking Driver for ESXi | VMware Flings.

此驱动旨在对一些官方安装包里不支持的网卡提供一个相对稳定的网卡驱动,可以通过封装到安装镜像或者在现有的ESXi主机上安装来使用.

从requirements一页中可以看到此驱动支持了哪些网卡.

2.5GbE
1GbE

看了下NUC8和NUC11 Pro and Performance的网卡都属于这个驱动可以支持的.

PS: 此前也有一个类似的社区版网卡驱动,之前已经集成到了ESXi7.0.1里.

ESXi 7.0 Update 1c中加入的systemMediaSize启动选项

本周VMware发布了ESXi 7.0 Update 1c更新,查看Release notes,发现有一段比较有意思.

With ESXi 7.0 Update 1c, you can use the installer boot option systemMediaSize to limit the size of system storage partitions on the boot media. If your system has a small footprint that does not require the maximum 138 GB system-storage size, you can limit it to the minimum of 33 GB. The systemMediaSize parameter accepts the following values:

  • min (33 GB, for single disk or embedded servers)
  • small (69 GB, for servers with at least 512 GB RAM)
  • default (138 GB)
  • max (consume all available space, for multi-terabyte servers)

The selected value must fit the purpose of your system. For example, a system with 1TB of memory must use the minimum of 69 GB for system storage. To set the boot option at install time, for example systemMediaSize=small, refer to Enter Boot Options to Start an Installation or Upgrade Script. For more information, see VMware knowledge base article 81166.

对于这个启动选项,我的理解是之前ESXi 7.0默认最大会占用138GB左右硬盘,就是上文中提到的default(其中包括BOOTBANK1, BOOTBANK2, 还有OSDATA, 当硬盘为HDD时,OSDATA不会被当作虚拟闪存使用,此时OSDATA类型为VMFS-L. 当硬盘为SSD时,OSDATA会被同时当作虚拟闪存,此时OSDATA类型为VFFS.) 之前写过我们可以通过设置autoPartitionOSDataSize来调整OSDATA的大小. https://virtualtips.info/?p=42 ,但该方法并非官方提供的解决方案.

此次systemMediaSize参数可以理解官方为此提供了几种预设值(min, small, default, max). 我们可以在安装启动前Shift+O来加上参数systemMediaSize=min,或者在安装介质的boot.cfg文件中的kernelopt=runweasel这行后面加上诸如systemMediaSize=min的参数,让此安装程序自动设置参数.

kernelopt=runweasel systemMediaSize=min

此时,安装好以后的硬盘空间大致情况如下图,系统空间占用大概是33GB.

系统硬盘空间占用

vSphere虚拟网络02 – 虚拟交换机

在之前的 vSphere虚拟网络01中,提到了vSphere中的两种虚拟交换机类型:标准交换机和分布式交换机。这篇里就虚拟交换机的知识进行一些深入的了解。

首先,虚拟交换机就是从软件层面来模拟一个Layer2的交换机。在物理网络中,交换机在Layer2利用它维护的CAM表来做点到点的数据包传输。在虚拟网络中,虚拟交换机检测到连接到它的虚拟端口的虚拟机,然后用MAC来转发流量到正确的目的地(点到点)。虚拟交换机基本上是用来在虚拟网络和物理网络之间建立连接的。

这里可以再看一下上一篇中用到的示意图

vSphere虚拟网络示意图

在ESXi安装之后,默认的配置有一个标准虚拟交换机,一个叫VM Network的端口组和一个作为ESXi管理口的叫vmk0的VMkernel port。这个默认配置可以用来实现基本的虚拟网络和物理网络的连通,如果你有更复杂的虚拟网络需求,我们就要自己来创建额外的VMkernel port,端口组或者虚拟交换机。

那么我们来查看下vSphere7版本的虚拟网络的一些限制https://configmax.vmware.com/guest?vmwareproduct=vSphere&release=vSphere%207.0&categories=2-0

从中我们能看到,ESXi主机支持最多4096个端口,其中8个作为预留口,但是最多活动端口是1024,其中8个作为预留口,那么最多可用并且活动端口就是1016。

关于隔离

在之前的vSphere虚拟网络01中提到了虚拟网络中的隔离,可以通过一个虚拟交换机的不同端口组设置不同VLAN ID来隔离,如下图

单虚拟交换机 – VLAN

那么也可以通过多个虚拟交换机来直接做“物理隔离”,如下图

多虚拟交换机 – 无VLAN

两种方式都可以做到隔离,但有什么不同呢?

首先,虚拟交换机是通过软件来模拟物理交换机的行为。那么在ESXi上创建越多的虚拟交换机就应该需要越多的资源来做交换功能。

其次,如果我们想做流量隔离,在单虚拟交换机上就需要配置VLAN,或者不用VLAN,用多虚拟交换机来“物理隔离”。因为在很多网络中,可能物理网络中也没有配置VLAN来做隔离,比如部门1连接物理交换机01,部门2连接物理交换机02,这样的物理隔离,那么我们就可以把部门1要用的虚拟资源连在虚拟交换机01上并且通过上行链路->物理网卡连接到物理交换机01上,然后部门2要用的虚拟资源连在虚拟交换机02上并且通过上行链路->物理网卡连接到物理交换机02上,这样部门1和部门2所需要的虚拟资源就“物理隔离”了,同时,Management和vMotion连接不同的物理交换机也可以实现管理和迁移的“物理隔离”。从整体上来说,我们也做到了业务部门的流量(部门1和部门2)和IT管理的流量(Management和vMotion)隔离。

最后我们看到图中每个虚拟交换机我们都设置了2个上行链路(冗余),这样单虚拟交换机需要2个物理网卡,4个虚拟交换机就需要8个物理网卡,这时候我们就要考量这台服务器是否有能力通过PCI插槽来接入这么多网卡了,因为PCI插槽还可能有连接阵列卡等设备的需求。

Tips:

不要因为你能创建多个虚拟交换机就去创建,要根据实际需求和硬件设备来具体分析,建议通过尽量少的虚拟交换机来实现需求。

标准交换机

标准交换机是通过ESXi主机来创建和管理的,这就意味着当你有多台ESXi主机时,你就要分别去每一台ESXi上创建标准交换机里的端口组等设置,可能这个工作量还不算什么,但是当一年之后你要去修改端口组,或者扩展端口组呢?(这种需求应该可以叫做Day2 operation吧)。

因为标准交换机不能集中管理,也许我们可以通过一些自动化脚本来实现,但自动化脚本也要适应上面提到的Day2 operation, 所以管理员的开销还是挺大的。

通过创建或者编辑标准交换机的操作界面,我们大致能了解到一些它的功能:

Layer2交换

IPv6

VLAN

网卡绑定

出口流量整形

安全策略

绑定和故障切换策略

总的来说,标准交换机可以解决大部分小型部署中的虚拟网络需求,我们应该避免在中型或大型部署中使用标准交换机,或者可以保留的使用有限的功能。更多的虚拟网络需求通过分布式交换机或者NSX来实现。

分布式交换机

分布式交换机在标准交换机的基础上,增加了一些额外的功能,而且提供了集中管理的接口。

比如:

入口流量整形

网卡绑定和故障切换策略中基于负载的绑定

端口洪泛控制

私有VLANs

以端口为单位的策略设置

端口镜像

NetFlow监控

端口状态监控

分布式交换机示意图

如图是个基于2台ESXi主机设置的分布式交换机示意图

所谓的集中管理,分布式交换机不是在ESXi主机上创建的,而是vCenter。在vCenter中在数据中心的Actions菜单中可以选择分布式交换机,然后创建或者导入。分布式交换机上的流量并不会通过vCenter来转发,来看一个分布式交换机的架构图。

分布式交换机架构图

从图中我们可以看到,vCenter上是分布式交换机的一个模板,设定了端口组,上行链路的个数。需要把ESXi主机加入分布式交换机,这时候就把交换机的模板推送到了加入的ESXi主机上,并且可以指定ESXi上的哪个物理网卡为分布式交换机的上行链路使用。ESXi主机上有一个Host proxy switch,它用来接收vCenter推送的模板,这样交换功能其实还是在ESXi主机上实现的。Day2 operation需要的设置可以在vCenter的模板上修改,就会推送到各个连接该分布式交换机的ESXi主机上,这就是集中管理。

这种架构,在vCenter上的分布式交换机实例被叫做控制平面/Control plane,交换机的管理是在这里实现的。在ESXi上的Host proxy switch被叫做数据平面/Data plane,交换机的数据交换是在这里发生的。

最后,来看一个多台ESXi所连接的分布式交换机的拓扑图吧。

分布式交换机拓扑图

左侧为端口组,我把vCenter自己单独放了一个端口组,把VMkernel放在一个端口组,剩余VM放在一个端口组。因为没有设置VLAN,实际上这几个端口组是可以互通的。

右侧为上行链路,这里我每个ESXi主机只设置了一个上行链路,对应一个ESXi上的vmnic。

如果win10这台虚拟机在esxi01这台主机上,u2004这台虚拟机在esxi02这台主机上,两台同在一个端口组的虚拟机,从拓扑图看来,直接在虚拟交换机就能交换数据,实际上,还是要通过各自的上行链路走到物理交换机才能交换数据的。

vSphere虚拟网络01 – 入门

本篇为vSphere虚拟网络的一些基本理解,属于入门知识,先看下面的图来理解虚拟网络是如何构成的。

以单ESXi主机为例

vSphere虚拟网络示意图

从最上面虚拟机开始,上面配有虚拟网卡/vNIC(或者叫虚拟网络适配器),适配器的类型参考官方文档,以vSphere7.0为例https://docs.vmware.com/cn/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-AF9E24A8-2CFA-447B-AC83-35D563119667.html

最近几个版本的vSphere都限定了一台虚拟机最多可以配置10个虚拟网络适配器。

再看图中间的虚拟交换机,在vSphere的网络配置里,虚拟交换机分为标准交换机(Virtual Standard Switch)和分布式交换机(Virtual Distributed Switch),如下图。这里先以标准交换机为例,分布式交换机留到后面章节再展开讲。

虚拟交换机

在一个标准虚拟交换机里,我们可以设置三类连接类型

虚拟交换机连接类型

1. VMkernel网络适配器,这种连接类型是ESXi用来主机管理(通常所说的ESXi管理口),vMotion,iSCSI,NFS等服务的流量使用的连接类型,我们可以把不同的服务分到不同的VMkernel适配器上,也可以分配到同一个VMkernel适配器上,一般简写成vmk0,vmk1……VMkernel适配器需要分配IP地址,以vmk0作为主机管理端口为例,如它设置了IP地址192.168.1.50,我们就可以在局域网内通过192.168.1.50来管理这台ESXi主机。

2. 虚拟机端口组/PortGroup,端口组可以理解成虚拟机和虚拟交换机之间连接的一种模板,一般说来,虚拟机是将虚拟网卡连接到虚拟交换机上的端口组/PortGroup的一个端口上(想像成一台电脑的网线从物理网卡连接到了物理交换机上)来做网络交换(虚拟机使用直通的网络设备除外)。在创建端口组时还可以设置VLAN ID,这样同一个虚拟交换机下面还可以通过不同端口组来做VLAN隔离。

端口组VLAN ID

3.物理网络适配器,这是虚拟交换机和物理交换机连接的物理载体,桥梁。从示意图中,我们看到虚拟交换机中有一个端口(可以有多个)叫做上行链路/Uplink port,上行链路和物理网卡连接在一起,这个物理网卡在vSphere里可以标记为VMNIC, PNIC,UPLink,物理网卡作为连通虚拟网络和物理网络的桥梁,通常来说它本身不和IP地址绑定,所以当我们给ESXi主机分配IP时,并不是直接分配给了它的物理网卡,而是分配给了VMkernel适配器。

现在再回到开头的示意图,虚拟机虚拟网卡->虚拟交换机端口组->虚拟交换机内部交换->虚拟交换机上行链路->物理网卡->物理交换机,完成了虚拟机和物理网络的连通。

Tips:

如果物理交换机是VLAN交换机,我们还可以把ESXi物理网卡连接的物理交换机端口设置成Trunk口,tag上物理网络中的VLAN ID,在虚拟交换机的端口组里做VLAN ID的设置之后,就把虚拟机连接到了物理网络的VLAN里。

这就是vSphere虚拟网络的一些基本知识和示意图理解,后面我会深入的就其它虚拟网络内容进行展开。

ESXi忘记root密码后重置

声明:本文参考https://www.top-password.com/knowledge/reset-esxi-root-password.html中提到的挂载Ubuntu Live CD来清除ESXi原有密码,使ESXi再启动时可以通过空密码登陆后台,然后重新设置密码。如果英文阅读没问题的可以直接去看原文。

官方KB中虽然说ESXi的root密码只能通过重新安装来重置,但还是有网友成功通过上面提到的办法来重置。

由于物理机操作和拍照比较麻烦,我用ESXi中嵌套安装的ESXi挂载Live CD做演示。

以最新的ESXi7.0 Update1和Ubuntu 20.04 Live CD为例。

假设现在我们忘记root密码,无法登陆后台或者ESXi网页端了。

忘记root密码

关闭ESXi主机,插上Ubuntu Live CD启动盘(可以是光驱,U盘等),我这里是嵌套ESXi,直接挂载ISO。

为ESXi挂载Ubuntu Live CD

开机进入BIOS设置,确保LIVE CD启动在ESXi(硬盘)之前。

ESXi主机BIOS启动顺序

选择Try Ubuntu。

Try Ubuntu

系统加载完毕后,点选Show Applications(左下角)。

Show Applications

搜索并运行gparted。

运行GParted

在ESXi7中我们要找的分区应该是这个BOOTBANK1的/dev/sda5。

找到BOOTBANK1

关闭GParted并运行Terminal。

运行Terminal

运行下面这几行命令,将该分区挂载到/mnt。

sudo -s

mount /dev/sda5 /mnt

cd /mnt

ls

找到我们需要的state.tgz压缩包。

找到state.tgz

然后将压缩包复制到临时目录/tmp,解压,查找local.tgz压缩包。

cp state.tgz /tmp

cd  /tmp

tar xzf  state.tgz

ls

找到了local.tgz压缩包。

找到local.tgz

解压local.tgz进入etc目录,找到shadow文件。

tar xzf local.tgz

ls

cd etc

ls

找到shadow

使用vi或者nano编辑shadow文件,以nano为例。

nano shadow

nano编辑shadow

删除root后面第一个冒号和第二个冒号之间的内容(保留2个冒号)。

删除两个冒号之间的内容

在nano编辑器中,Ctrl+X退出,提示是否保存修改时Y。

保存修改

然后回车(使用当前文件名)。

不修改文件名直接保存

接下来我们退回到etc上级目录,将修改的文件反向的打包压缩并覆盖/mnt/挂载点里的内容,然后取消挂载。

cd ..

tar czf  local.tgz  etc

tar czf  state.tgz  local.tgz

cp  state.tgz  /mnt/

umount  /mnt

用修改内容后的文件替换挂载点里的源文件

这时候物理机可以关闭Ubuntu Live CD系统,并弹出光驱或者拔掉Live CD U盘,我这里在嵌套的ESXi虚拟机设置中把ISO文件停止挂载。

取消挂载Live CD

保存,开机,等待ESXi加载完成。

ESXi启动完成

按F2,使用root空密码,回车。

请使用空密码

成功,可以去设置新密码了。

可以配置新密码了