这里参考了第三篇:虚拟化层 - MicroServer Gen8 + ESXi Server 6.5u3 部署踩坑记 - 天一学生的游牧生存,这里向作者表示感谢!

装好ESXi之后,我先装上了Ubuntu Server 22.10Windows Server 2019 Datacenter。用了一段时间,总感觉有点奇怪,只管说这是好多年前的机器,性能不强我是有心理准备的,但也不至于点个开始菜单都要好几秒,关上资源管理器也要将近半分钟。明天期待程序载入的时候看了眼工作管理器,发现磁盘占用率居然100%,要晓得我这是两块固态硬盘组的阵列诶!既然有问题,就上网搜一搜呗,这不冲浪不晓得,一冲浪吓一跳,惠普给ESXi 6.x打包的B120i板载阵列卡驱动有性能问题,会导致磁盘读写异样迟缓。针对这个问题,网上最广泛的一个解决方案就是把阵列卡驱动退回到ESXi 5.x中的最初一个版本5.5.0-88

那话不多说,搞它!

首先,把所有虚构机关机,全副关机后,在ESXi的主机页面里,点击操作菜单中的进入保护模式;在点击操作菜单,进入服务,抉择启用 Secure Shell(SSH),因为前面要SSH进ESXi外面装置驱动。

下载http://downloads.hpe.com/pub/softlib2/software1/pubsw-linux/p1749737361/v98767/hpvsa-5.5.0-88.zip实现后,解压这个ZIP包,失去驱动本体scsi-hpvsa-5.5.0-88OEM.550.0.0.1331820.x86_64.vib。将这个vib文件上传到ESXi的/var/log/vmware目录下。上传胜利后,SSH进入ESXi,执行如下命令:

# 卸载以后版本的驱动esxcli software vib remove -n scsi-hpvsa -f# 装置5.5.0-88版驱动esxcli software vib install -v file:scsi-hpvsa-5.5.0-88OEM.550.0.0.1331820.x86_64.vib --force --no-sig-check --maintenance-mode# 重启ESXireboot

重启完了,进ESXi看了眼驱动,发现RAID也没认出来,驱动也变成vmw_achi了,这是没认出来阵列卡驱动啊。搜了一下,发现能够强制禁用vmw_ahci,于是再进SSH,执行esxcli system module set --enabled=false --module=vmw_ahci这条命令,再重启之后,RAID回来了,驱动也变成hpvsa了。

如果你在禁用vmw_ahci之后还不能胜利加载hpvsa驱动,那么就得先执行esxcli software vib remove -n scsi-hpvsa -f来卸掉它,重启之后再重装。这时候千万不能操作硬盘,否则可能造成数据损毁。

换驱动的时候理解到,VMWare也会给ESXi推出一些零碎修改补丁,那有补丁当然要打啊。一开始我想着参照ESXi 6.5 - VMware ESXi Patch Tracker这个网站给的命令在线更新,然而始终报Got no data from process这个谬误,VMWare Communities下面也有人遇到同样的谬误,解决办法是下载补丁而后手动装置。

对于Got no data from process这个谬误,依据How to Upgrade from VMware vSphere ESXi 6.7 to 7.0中的形容:

If you see the error message:

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.0.0-15843807-standard",

check whether there is a persistent scratch partition. There may not be a persistent scratch partition if you’re running ESXi from a USB flash drive.

而依据How to Run ESXi from a USB Flash Drive所说:


If ESXi is installed on a USB flash drive or SD card whose size is 8 GB or more, partitions #2 and #3 are not created. The Scratch directory used to store logs is linked to the /tmp/scratch directory that is located on the RAM drive.

也就是说,如果把ESXi装在大于等于8GB的TF卡或者U盘外面的话,就会短少一个scratch分区。

另外依据这个分区图,我还发现,如果把ESXi装在硬盘里的话,它会把残余空间作为数据存储,而不是像网上一些文章说的只用来装零碎,这个我前面有工夫会再测试一下。

那么,首先到Product Patches这里,Product选ESXi (Embeeded and Installable),Version选6.5.0(如果你装的不一样,以你为准),点Search后会列出一堆补丁,选最新那个,点Download Now来下载补丁的ZIP包。而后点View Details,咱们要在详细信息页面找到Image Profile的名字。

对于什么是Image Profile:
VMWare文档说:Image profiles define the set of VIBs that an ESXi installation or update process uses.
也就是说,Image Profile定义了包里的哪些VIB会被装置。
每个补丁包中都会带有2~4个Image Profile,依据VMware ESXi Image Profiles的形容,各个Image Profile的含意是:

  1. ESXi-5.5.0-20140704001-standard - 蕴含全副补丁
  2. ESXi-5.5.0-20140704001-no-tools - 蕴含除了VMware Tools之外的全副补丁
  3. ESXi-5.5.0-20140701001s-standard - 只蕴含安全补丁
  4. ESXi-5.5.0-20140701001s-no-tools - 只蕴含安全补丁,同时没有VMware Tools

因为我要更新所有的VIB,所以我将要用ESXi-6.5.0-20221004001-standard这个Image Profile。SSH进ESXi,执行esxcli software profile update -p ESXi-6.5.0-20221004001-standard -d /vmfs/volumes/63a1b271-3340b157-711e-d0bf9c4694d8/ESXi650-202210001.zip开始装置(记得把-d参数指定的绝对路径改为你的机器下面的门路)。装置过程比拟耗时间,这期间能够tail -f /var/log/esxupdate.log来看ESXi正在干什么,毕竟看着日志在跑,心里也有底,不然总胆怯零碎是不是死掉了。

更新胜利后,esxcli会打进去哪些包被更新了,然而切实是太多,我基本懒得看,间接重启。重启之后,ESXi能失常进零碎,存储和虚拟机都失常载入,阐明没出啥故障。这时候就能够退出保护模式,给虚拟机开机。有一说一,当初不论是开机还是关上什么货色,反馈的确快了不少,看来驱动导致的硬盘性能问题曾经胜利解决。