1 - 安装esxi7.0.2

在物理机器上安装最新7.0.2版本的esxi

准备工作

硬件准备

准备了一台性能还可以的物理机器:

  • cpu:intel 7960x
  • 主板:华硕 x299 ws pro/se
  • 内存:32g * 4 @ddr4 3600
  • 显卡:amd r5 240 亮机卡
  • 硬盘:
    • 一块256g sata ssd安装windows10以备不时之需
    • 一块3.94t的服务器u2接口的nvme ssd用来给esxi使用
  • 网卡
    • 主板自带两个intel i210 千兆网卡,连接在千兆交换机上,可以访问外网
    • 一块 aqn-108 五千兆网卡,用网线和另外一台开发主机(同样也有一个五千兆网卡)直连,不走交换机
    • (计划)HP 544+ 40G网卡一对,分别插在 esxi 主机和开发主机上,也是直连

软件准备

从vmware官方下载页面下载 esxi 的最新版本 7.0.2:

Download VMware vSphere - VMware Customer Connect

备注

  1. 默认下载速度超级的慢,几K几K的速度,剩余2-3天,无法忍受。

  2. 由于vmware网站没有被墙,所以一般不会自动开启代理,因此需要在科学上网软件中设置全局代理或者手动将vmware.com网站设置为启用代理,之后便可以用几M的速度下载。

  3. 在 clash 中可以在控制面板临时将规则 “漏网之鱼” 从默认的 DIRECT 设置为 总模式,先临时启用,待下载完成之后再恢复为 DIRECT。

也可以在一些整理好的网站上下载:

然后刻录启动U盘。

安装

从u盘启动,然后按照提示一路安装,没有什么特别。

默认虚拟闪存的调整

在全新安装ESXI 7后,系统默认将会在数据存储中划分120G空间作为虚拟闪存。我目前硬盘足够大所以不介意这点占用。如果敏感则可以在安装过程中进行调整。

参考:虚拟闪存的作用

利用虚拟闪存可以通过使用本地 SSD 磁盘(为 ESXi 主机上运行的所选虚拟机提供闪存缓存)提高虚拟机性能。Virtual Flash Read Cache 可以为对延迟极度敏感的应用程序提供低延迟,从而使之前认为 I/O 过于密集因而似乎不可能实现虚拟化的一些计算机系统/应用程序实现虚拟化。

参考:

2 - 配置esxi

对安装好的esxi进行基本配置

2.1 - 配置esxi控制台

配置esxi的页面控制台

在主机界面上进行配置

设置控制台的IP地址

主板自带两块intel千兆网卡,mac地址分别是:

  • 04:d4:c4:5a:e2:77
  • 04:d4:c4:5a:e2:78

在路由器的dhcp中手工指定这两个网卡的IP地址,分别为 192.168.0.40 和 192.168.0.41

在 esxi 主机的界面上(不是web页面)上,按 F2 Customize System/View Logs,输入root密码。

选择 “Configuration Management Network” -> “Network Adapter”,选择mac地址为 “04:d4:c4:5a:e2:77” 的网卡。如果默认选择的是另外一块网卡,注意取消勾选。

“Restart management network” 之后,就可以使用 192.168.0.40 这个IP地址访问 exsi 控制台了。

设置esxi主机的hostname

同样在 “Configuration Management Network” 选择 “DNS Configuration”,设置:

  • Primary DNS Server: 192.168.0.1
  • Hostname: skyserver

再次 “Restart management network” 即可生效。

使用控制台进行配置

用上面的IP地址 192.168.0.40,登录控制台页面。

开启ssh

登录 esxi web管理界面,进入 “管理” –> “服务”,在列表中找到 TSM-SSH,右键点启动。

也可以在策略中选择"随主机启动和停止"。

设置swap

登录 esxi web管理界面,进入 “管理” –> “系统” –> “交换”,点击"编辑设置"。

数据存储下拉框中选择需要使用的 datastore:

设置好之后需要重启 esxi 主机。

新增数据存储

为了方便备份数据,增加了一块闲置的3T容量的普通机械硬盘。

进入 “存储” -> “设备”,可以看到当前的存储设备:

config-swap

点击这块硬盘,选择"操作" -> “清除分区表”。

再点击"新增数据存储",选择这块硬盘(注意如果没有删除分区表,会显示没有空闲的设备可以添加)。

3 - 通过补丁方式升级esxi

通过打补丁的方式升级esxi的版本

3.1 - 升级到esxi 7.0.2

通过打补丁的方式升级esxi的版本到7.0.2

给 exsi 打补丁以升级版本。

在线升级

在 google 中搜索 exsi patch,找到 VMware ESXi 7.0 Patch History (v-front.de) 的网站,选择最新的patch:

点击之后会弹出一个窗口,提示更新补丁的命令如下:

需要用到的命令有三个:

esxcli network firewall ruleset set -e true -r httpClient
esxcli software profile update -p ESXi-7.0U2a-17867351-standard -d https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml
esxcli network firewall ruleset set -e false -r httpClient

报错

如果遇到报错 MemoryError ,则应该是esxi “设置swap” 的步骤没有做或者没有重启:

 [MemoryError]
 Please refer to the log file for more details.

如果报错 “Got no data from process”:

Got no data from process: LANG=en_US.UTF-8 /usr/lib/vmware/esxcli-software profile.update  -d "https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml" -p "ESXi-7.0U2a-17867351-standard"  

没有找到解决的办法,一般建议离线升级。

离线升级

下载升级文件

下载离线升级文件:

Product Patches - VMware Customer Connect

选择 esxi 7.0 版本(注意不是7.0.0或者7.0.1),找到 VMware-ESXi-7.0U2a-17867351-depot ,开始下载。

备注

  1. 默认下载速度超级的慢,最好能科学上网或者找到他人整理好的补丁包。

上传离线文件到exsi主机

将文件上传到 exsi 主机的存储上,在控制台进入 “存储” –> “datastore1” ,注意这里的UUID,后面会用到:

点 “数据存储浏览器” 就能看到当前已有的文件。点击 “上载” 选择 VMware-ESXi-7.0U2a-17867351-depot.zip 文件。

离线升级

ssh登录 esxi 主机,运行 vmware -l 命令看一下当前 exsi 的版本,如我当前是 7.0 GA 版本

VMware ESXi 7.0 GA

先让 esxi 主机进入维护模式,也可以在控制台页面操作:

esxcli system maintenanceMode set -e true
Maintenance mode is already enabled.

之后执行更新命令:

esxcli software profile update -p ESXi-7.0U2a-17867351-standard -d /vmfs/volumes/61090e61-7519507d-1c82-04d4c45ae278/VMware-ESXi-7.0U2a-17867351-depot.zip

注意:这里的路径 /vmfs/volumes/61090e61-7519507d-1c82-04d4c45ae278/ 中的 61090e61-7519507d-1c82-04d4c45ae278 就是前面看到的 datastore 的 UUID。

等待大概20秒就可以看到更新成功的提示信息:

Update Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: VMW_bootbank_atlantic_1.0.3.0-8vmw.702.0.0.17867351, VMW_bootbank_bnxtnet_216.0.50.0-34vmw.702.0.0.17867351, VMW_bootbank_bnxtroce_216.0.58.0-19vmw.702.0.0.17867351, VMW_bootbank_brcmfcoe_12.0.1500.1-2vmw.702.0.0.17867351, 
   ............
   VIBs Skipped: 

完成之后执行命令重启 exsi 主机:

boot

验证升级结果

exsi 启动时,界面上显示为 “vmware exsi 7.0.2 (vmkernel release build 17867351)” ,这说明已经更新成功。

登录控制台,在 “主机” 页面上 可以看到当前版本:

由于升级之前将主机设置为维护模式了,所以现在还要再修改为正常模式。可以通过控制台执行,点击 “操作” –> “推出维护模式”,或者ssh之后执行命令

esxcli system maintenanceMode set -e false

参考文章:

4 - 验证安装和配置

验证esxi的安装和配置

4.1 - 在esxi上运行iperf3

使用iperf3验证网卡的速度

准备软件

在esxi6.7上准备iperf

ssh 登录 esxi 6.7, 然后执行以下命令:

mkdir /temp
cd /temp
wget http://vibsdepot.v-front.de/depot/bundles/iperf-2.0.5-1-offline_bundle.zip 
esxcli software vib install -d /temp/iperf-2.0.5-1-offline_bundle.zip  --no-sig-check

结果输出为:

Installation Result
   Message: Operation finished successfully.
   Reboot Required: false
   VIBs Installed: DAST_bootbank_iperf_2.0.5-1
   VIBs Removed: 
   VIBs Skipped: 

清理并进入目录:

rm -rf /temp
cd /opt/iperf/bin
cp iperf iperf.copy

准备网络

查看目前 esxi 的网络情况:

esxcli network ip interface ipv4 get

如果只有一个网卡(兼管理网络),输出类似:

Name  IPv4 Address  IPv4 Netmask   IPv4 Broadcast  Address Type  Gateway      DHCP DNS
----  ------------  -------------  --------------  ------------  -----------  --------
vmk0  192.168.0.58  255.255.255.0  192.168.0.255   STATIC        192.168.0.1     false

另外测试之前关闭esxi的防火墙:

esxcli network firewall set --enabled false

为了测试 hp544+ 网卡(连接为56G)在 esxi 下的性能,需要在 esxi 中取消直通,然后设置相关的网络

  • virtual switches 中添加 virtual switch, 如 “vSwitch-56G”, uplink 选择 hp544+ 网卡
  • port group 中添加新的 port group,如 “56G Network”,virtual switch 选择 “vSwitch-56G”
  • vmkernel NICs 中添加新的 VMkernel NIC,port group, 选择 “56G Network”

再次查看网络:

esxcli network ip interface ipv4 get

可以看到新加的 56g 网络的 IP 地址:

Name  IPv4 Address    IPv4 Netmask   IPv4 Broadcast   Address Type  Gateway      DHCP DNS
----  --------------  -------------  ---------------  ------------  -----------  --------
vmk0  192.168.0.28    255.255.255.0  192.168.0.255    STATIC        192.168.0.1     false
vmk1  192.168.100.28  255.255.255.0  192.168.100.255  STATIC        0.0.0.0         false

测试

作为服务器端启动:

/opt/iperf/bin/iperf.copy -s -B 192.168.100.28

作为客户端

作为客户端执行:

/opt/iperf/bin/iperf.copy -c 192.168.100.1 -t 10 -P 10

-t 表示测试的总时间长度,-P 启动多线程进行并发测试,一般 8-10 比较合适。

或者增加参数, -i 表示每隔多长时间打印一次测试结果,避免长时间等待(默认需要等测试时间 -t 结束才显示结果), -f g 表示用 Gbits 来显示带宽:

/opt/iperf/bin/iperf.copy -c 192.168.100.1 -t 10 -i 2 -f g -P 10

测试结果

场景1

  • 服务器端是直通 + ubuntu server:之前测试 56g eth 模式下测速打开 48G

  • 客户端为 esxi 6.7, 自带驱动,不直通,不开启

  • 测试带宽为: 32G左右

  • cpu使用率有点高,大概20%-30%

结果:和正常的48G相比,只有 2/3 的性能,估计是 rdma 没有开启的原因。

esxcli software vib list | grep mlx
net-mlx4-core                  1.9.7.0-1vmw.670.0.0.8169922          VMW      VMwareCertified     2023-03-19
net-mlx4-en                    1.9.7.0-1vmw.670.0.0.8169922          VMW      VMwareCertified     2023-03-19
nmlx4-core                     3.17.13.1-1vmw.670.2.48.13006603      VMW      VMwareCertified     2023-03-19
nmlx4-en                       3.17.13.1-1vmw.670.2.48.13006603      VMW      VMwareCertified     2023-03-19
nmlx4-rdma                     3.17.13.1-1vmw.670.2.48.13006603      VMW      VMwareCertified     2023-03-19
nmlx5-core                     4.17.13.1-1vmw.670.3.73.14320388      VMW      VMwareCertified     2023-03-19
nmlx5-rdma                     4.17.13.1-1vmw.670.2.48.13006603      VMW      VMwareCertified     2023-03-19

参考

4.2 - 在esxi上运行iperf3

使用iperf3验证网卡的速度

准备软件

在esxi7上准备iperf3

esxi 7 自带 iperf3,位于 /usr/lib/vmware/vsan/bin/iperf3,使用时注意先执行以下命令:

cp /usr/lib/vmware/vsan/bin/iperf3 /usr/lib/vmware/vsan/bin/iperf3.copy

复制一份作为服务器端使用,否则直接通过 iperf3 运行服务器端,会报错:

/usr/lib/vmware/vsan/bin/iperf3 -s -B 192.168.0.40
iperf3: error - unable to start listener for connections: Operation not permitted
iperf3: exiting

关于这一点请参考:

另外测试之前关闭esxi的防火墙:

esxcli network firewall set --enabled false

在windows10上准备iperf3

从 iperf 官方网站上下载 iperf3:

iPerf - Download iPerf3 and original iPerf pre-compiled binaries

准备网络

网络连接概述

两台机器之间一共有三组网络连接:

  1. 千兆网络:esxi主机和开发机器之间通过千兆交换机连接,都是千兆有线网卡, ip地址设置为 192.168.0.10 和 192.168.0.40
  2. 五千兆高速网络:esxi主机上插一块 aqn-108 五千兆网卡(支持windows、linux和exsi),开发机器主板自带一块 aqn-111c 五千兆网卡(支持windows、linux,不支持黑苹果),通过网线直连,ip地址设置为 10.0.0.10 和 10.0.0.40
  3. 40G超高速网络:esxi主机上插一块 hp 544+ 40G网卡(支持windows、linux,exsi不确定),开发机器同样插一块 hp 544+ 40G网卡(支持windows、linux,黑苹果不确定),通过40G QSFP网线直连,ip地址设置为 192.168.1.10 和 192.168.1.40

esxi网络设置

5G网络设置

首先确保5G物理网卡已经识别,链路速度为5000Mbps,全双工。

开始创建5g网络的虚拟交换机,上行链路选择上面的5g网卡:

再添加5g的端口组,虚拟交换机选择前面创建的5g交换机:

最后在vmkernel网卡中添加一个vmkernel网卡:

ip地址的设置为:

windows网络设置

5G网络设置

5g网卡的适配器设置如下:

测试

esxi7作为服务器端

测试千兆网络

服务器端 esxi ip地址为 192.168.0.40:

 /usr/lib/vmware/vsan/bin/iperf3.copy -s -B 192.168.0.40
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

客户端为windows10,启动iperf3.exe,走千兆网络,带宽接近千兆的:

iperf3.exe -n 1000M -c 192.168.0.40
Connecting to host 192.168.0.40, port 5201
[  4] local 192.168.0.10 port 65066 connected to 192.168.0.40 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   110 MBytes   923 Mbits/sec
[  4]   1.00-2.00   sec   110 MBytes   921 Mbits/sec
[  4]   2.00-3.00   sec   109 MBytes   917 Mbits/sec
[  4]   3.00-4.00   sec   110 MBytes   918 Mbits/sec
[  4]   4.00-5.00   sec   109 MBytes   918 Mbits/sec
[  4]   5.00-6.00   sec   110 MBytes   919 Mbits/sec
[  4]   6.00-7.00   sec   108 MBytes   902 Mbits/sec
[  4]   7.00-8.00   sec   109 MBytes   918 Mbits/sec
[  4]   8.00-9.00   sec   110 MBytes   918 Mbits/sec
[  4]   9.00-9.15   sec  16.0 MBytes   910 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-9.15   sec  1000 MBytes   917 Mbits/sec                  sender
[  4]   0.00-9.15   sec  1000 MBytes   917 Mbits/sec                  receiver

iperf Done.

测试五千兆网络

服务器端 esxi ip地址为 10.0.0.40:

 /usr/lib/vmware/vsan/bin/iperf3.copy -s -B 10.0.0.40
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

客户端为windows10,启动iperf3.exe,走五千兆直连网络,单线程带宽只有2g多一点:

iperf3.exe -n 5000M -c 10.0.0.40
Connecting to host 10.0.0.40, port 5201
[  4] local 10.0.0.10 port 63397 connected to 10.0.0.40 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   244 MBytes  2.05 Gbits/sec
[  4]   1.00-2.00   sec   251 MBytes  2.11 Gbits/sec
[  4]   2.00-3.00   sec   254 MBytes  2.13 Gbits/sec
[  4]   3.00-4.00   sec   251 MBytes  2.11 Gbits/sec
[  4]   4.00-5.00   sec   263 MBytes  2.20 Gbits/sec
[  4]   5.00-6.00   sec   257 MBytes  2.15 Gbits/sec
[  4]   6.00-7.00   sec   259 MBytes  2.17 Gbits/sec
[  4]   7.00-8.00   sec   263 MBytes  2.20 Gbits/sec
[  4]   8.00-9.00   sec   273 MBytes  2.29 Gbits/sec
[  4]   9.00-10.00  sec   265 MBytes  2.23 Gbits/sec
[  4]  10.00-11.00  sec   266 MBytes  2.23 Gbits/sec
[  4]  11.00-12.01  sec   252 MBytes  2.10 Gbits/sec
[  4]  12.01-13.00  sec   262 MBytes  2.22 Gbits/sec
[  4]  13.00-14.00  sec   273 MBytes  2.29 Gbits/sec
[  4]  14.00-15.00  sec   264 MBytes  2.21 Gbits/sec
[  4]  15.00-16.00  sec   268 MBytes  2.25 Gbits/sec
[  4]  16.00-17.00  sec   262 MBytes  2.20 Gbits/sec
[  4]  17.00-18.00  sec   261 MBytes  2.19 Gbits/sec
[  4]  18.00-19.00  sec   260 MBytes  2.18 Gbits/sec
[  4]  19.00-19.19  sec  52.1 MBytes  2.27 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-19.19  sec  4.88 GBytes  2.19 Gbits/sec                  sender
[  4]   0.00-19.19  sec  4.88 GBytes  2.19 Gbits/sec                  receiver

iperf Done.

通过 -P 参数指定多线程,可以使用更大的带宽,实测下来:

  • 单线程带宽2.2g
  • 两个线程带宽3.5g
  • 三个线程带宽3.3g
  • 四个线程带宽4.7g
  • 再往上加线程带宽还是4.7g
iperf3.exe -c 10.0.0.40 -t 20 -P 5
Connecting to host 10.0.0.40, port 5201
[  4] local 10.0.0.10 port 54228 connected to 10.0.0.40 port 5201
[  6] local 10.0.0.10 port 54230 connected to 10.0.0.40 port 5201
[  8] local 10.0.0.10 port 54231 connected to 10.0.0.40 port 5201
[ 10] local 10.0.0.10 port 54232 connected to 10.0.0.40 port 5201
[ 12] local 10.0.0.10 port 54233 connected to 10.0.0.40 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   106 MBytes   891 Mbits/sec
[  6]   0.00-1.00   sec   106 MBytes   890 Mbits/sec
[  8]   0.00-1.00   sec   106 MBytes   886 Mbits/sec
[ 10]   0.00-1.00   sec   125 MBytes  1.05 Gbits/sec
[ 12]   0.00-1.00   sec   123 MBytes  1.03 Gbits/sec
[SUM]   0.00-1.00   sec   567 MBytes  4.75 Gbits/sec
......
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-8.58   sec   921 MBytes   900 Mbits/sec                  sender
[  4]   0.00-8.58   sec  0.00 Bytes  0.00 bits/sec                  receiver
[  6]   0.00-8.58   sec   918 MBytes   897 Mbits/sec                  sender
[  6]   0.00-8.58   sec  0.00 Bytes  0.00 bits/sec                  receiver
[  8]   0.00-8.58   sec   912 MBytes   891 Mbits/sec                  sender
[  8]   0.00-8.58   sec  0.00 Bytes  0.00 bits/sec                  receiver
[ 10]   0.00-8.58   sec  1.04 GBytes  1.04 Gbits/sec                  sender
[ 10]   0.00-8.58   sec  0.00 Bytes  0.00 bits/sec                  receiver
[ 12]   0.00-8.58   sec  1023 MBytes   999 Mbits/sec                  sender
[ 12]   0.00-8.58   sec  0.00 Bytes  0.00 bits/sec                  receiver
[SUM]   0.00-8.58   sec  4.73 GBytes  4.73 Gbits/sec                  sender
[SUM]   0.00-8.58   sec  0.00 Bytes  0.00 bits/sec                  receiver
iperf3: interrupt - the client has terminated

参考: