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空密码,回车。

请使用空密码

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

可以配置新密码了

让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端口组网卡和直通的网卡一桥接就行了。

USB Network Native Driver for ESXi更新到支持ESXi7.0.1

USB Network Native Driver for ESXi今天更新到新版本,支持ESXi7.0.1了,我之前有ESXi7.0.0机器因为使用了USB网卡驱动一直没法升级到7.0.1。(ESXi升级补丁会报该USB网卡驱动缺少依赖,因为那个依赖从7.0.0的版本更新到7.0.1,版本就对不上了)

下面演示由vCenter管理的EXSi主机更新7.0.1(包含该USB网卡驱动)。

首先将USB网卡驱动更新下载,再将ESXi7.0.1离线包VMware-ESXi-7.0.1-16850804-depot.zip下载,然后用ESXi Customizer PS来封装镜像。具体步骤参照ESXi-Customizer-PS

封装驱动

将这个封装好的ISO上传到vCenter的Lifecycle Manager里。

在Lifecycle Manager中导入ISO

创建基准。

创建基准1

选择刚才上传好的ISO。

选择ISO

完成。

创建基准完成

然后去要升级的ESXi Host,把所有虚拟机置于挂起或关机状态。进入维护模式。

进入维护模式

在更新选项卡下方,附加基准。

附加基准

选择刚才创建的基准,附加。

选择基准

勾选该基准并修复。

使用该基准修复

接受协议和确定后,开始修复。

修复中

完成后ESXi自动重启,等待一会,vCenter显示连接上了ESXi,能看到7.0.1版本号了。

升级完成

更新说明里提到了USB NIC Bindings are now automatically persistent。

所以我们可以去ssh里把相应的之前设置的启动脚本注释掉了。

ESXi on Arm 10/22 更新

前些天在ESXi on Arm — 树莓派4b安装ESXi中体验了在树莓派4b上使用ESXi on Arm。一些Arm64虚拟机用了十几天体验还可以。用Arm虚拟机体验了一些应用,比如Pi-hole,HomeAssistant,OpenMediaVault,AdGuard Home等等。

今天看到ESXi Arm Edition这里在10/22更新了新版本,有了一些Bug修复和新功能。

Changelog中首先声明的就是不能升级安装。但是可以选择Preserve VMFS的方式安装。安装好以后原有的虚拟机的Datastore里的虚拟机文件夹都还在,可以通过注册虚拟机的方式重新添加就可以用了。

下载镜像VMware-VMvisor-Installer-7.0.0-17068872.aarch64.iso,写入一个新的U盘(非之前已安装ESXi的U盘)。macOS下我用balenaEtcher写入。

原有ESXi关闭所有虚拟机,进入维护模式(其实没太大意义,因为我们不是升级),关机。

插入新写好的U盘,接上键盘。开机。(比如说我原有ESXi在三星U盘上,新写好的是金士顿)。

在白色树莓界面,按ESC,进入UEFI启动菜单,选择从新写好的金士顿U盘启动。启动界面还是跟之前一样记得按Shift+O去修改autoPartitionOSDataSize=xxxx。

加载完毕,选择安装在三星U盘后,会弹出如下提示:

在当前安装介质发现了已有VMFS

选择preserve。然后后面安装步骤都一样了。

安装好以后,拔掉安装的金士顿U盘,重启。

启动完毕后,应该默认是DHCP,如果分配到的IP和之前不一样,可以进去修改一下静态地址,设置dns之类的。(ESXi系统本身是全新的,只是虚拟机文件的的VMFS datastore还在。所以其它NTP之类的设置也要重新去设置。)

一切设置完毕后。浏览器访问该VMFS datastore。选择注册虚拟机。

注册虚拟机

选择虚拟机文件夹,选择可选的vmx文件,点击注册。

注册

注册成功。

注册成功

在虚拟机菜单下可以看到该虚拟机。可以选择操作编辑设置去确认是否有丢失的配置。

虚拟机菜单

重复以上步骤注册其它虚拟机,不需要的虚拟机可以按文件夹去删除。

全部注册完毕

检查完设置没问题以后,虚拟机开机检查。

除了我暂时不用的Pi-hole,都开机了。

开机

最后简单过一下更新说明:

Fix for https://flings.vmware.com/esxi-arm-edition/bugs/1098 (PSOD adding to VDS) 修复加入分布式交换机时紫屏的bug,我之前版本也加入VDS了,没遇到bug。

Support for Arm N1 SDP platform 新设备支持。

Support for VMs on Neoverse N1 CPU 没太懂,之前使用这个CPU不支持创建VM吗?和上面一行是相关的吧。

Support for UEFI-less VMs 支持非UEFI的VM,是指DeviceTree么?

Pass-thru stability improvements to LS1046A and LX2160A platforms 对两个平台的直通稳定性的提升。

Fix for vCenter/DRS incorrect CPU usage 对vCenter/DRS中错误显示CPU使用率的修复。

Fix for VM crash when VM storage fills up 修复VM在VM存储占满后崩溃的问题。

Stability fix for non-coherent DMA device support 不太懂,提升该种设备的稳定性。

Installer: tolerate RAM size within 4% of 4GB instead of 3.125 (for the otherwise unsupported RK3399 boards) 对4GB内存的限制的允许误差修改为在-4%以内,之前为-3.125%。相当于放宽了一点点内存限制,应该是因为RK3399达不到-3.125%之内。

Serial port handling improvements (for unsupported/unknown boards, to be a bit more resilient of firmware configuration errors) 对串口处理的一些改进。

ESXi on ARM中安装Raspios-buster-arm64

看到标题是不是就觉得这是瞎折腾?

没错。如果树莓派4b中安装了ESXi on ARM,在ESXi中再安装Raspios,性能肯定不如直接使用树莓派4b裸装Raspios。

但是如果你使用一台8G版本树莓派4b,单独用一个Raspios又有点浪费了。可以试着在ESXi中多装几个Arm Linux系统,比如CentOS,Raspios,Ubuntu。然后可以在ESXi中随意切换虚拟机开关机。甚至可以同时运行几个Arm Linux系统,榨干它的性能。ESXi是可以超配的。如下图(各个虚拟的Linux空载时)。另外,还可以用到虚拟机的快照,克隆等功能,方便在上面开发测试软件,比如Pi-hole之类的。

同时开启5个Arm Linux虚拟机

Ubuntu,PhotonOS,Debian,CentOS在https://flings.vmware.com/esxi-arm-edition中附带的Pdf文档都说明了是支持并验证过的,方法也就是挂载ISO文件,去安装虚拟机。我就不做演示了。下面演示下装Raspios的过程。

因为官方下载到的2020-05-27-raspios-buster-arm64.img 并不默认支持EFI启动,而ESXi on Arm又只支持EFI启动,所以无法直接使用该镜像,我们要借助Debian的rescue mode来解决这个问题。

1. 下载raspios的img。使用StarWind V2V Converter转成vmdk(2个文件,上传至ESXi的datastore后显示成1个)。

2. 下载debian-10.6.0-arm64-netinst.iso,上传至datastore。

3. 创建虚拟机,类型Linux-Debian 10 x64。删掉原有虚拟的硬盘,添加上面转过的vmdk作为硬盘。光驱里加载Debian的iso文件,记得勾选上已连接,并去虚拟机选项里把引导选项的强行执行EFI设置的下次引导钩上。然后保存。cpu可以分2个核,内存1G或者2G都可以。网卡确保是能连外网的。

记得勾选这个

4. 启动虚拟机,去EFI设置的boot选项里,选择光驱启动 EFI DVD/CDROM。

5. 加载Debian,选择Advanced options,然后Rescue mode。

Advanced options
Rescue mode

6. 语言,国家,键盘都默认即可。

7. 随意设置一个Hostname, Domain name, time zone.

8. Device to use as root file system 选择 /dev/sda2,一定不要选错。然后Mount separate /boot选Yes。在/dev/sda2中运行shell。

/dev/sda2
Yes
/dev/sda2

9. Continue。

Continue

10. 接下来在下方依次输入下面几行命令,注意因为需要联网下载,所以每一步都需要很长时间(根据网络情况而定)。如果某一步没有成功,一定要再执行一遍确保成功了再下一行。如果提示空间不足之类的,那就apt autoremove; apt autoclean之类的试试。

apt update
apt install linux-image-arm64
apt install grub-efi-arm64
grub-install --efi-directory=/boot/
update-grub
exit

整个过程其实就是通过debian的rescue去给raspios加了grub-efi启动选项支持。

11. 关闭虚拟机。 把Debian的ISO虚拟光驱断开连接并且去掉打开电源时连接。

12. 开机,等待第一个启动选项自动加载。完成后就看到熟悉的树莓派系统了。

13. 初始化设置。先不要更新,因为应该会遇到空间不足的问题。

14. 关机。加大硬盘的容量,比如扩大到20G。

扩大硬盘

15. 保存,开机。进入系统后去sudo raspi-config。选择第7项 Advanced Options。

第七项

16. 选择A1 Expand Filesystem。

A1

17. 然后重启检查下硬盘是不是扩大了。

已扩容

18. 可以apt update或upgrade啦。

19. 如果想安装open-vm-tools,可以按照ESXi-Arm-Fling-Doc.pdf文档中的第12步操作编译,该文档是Ubuntu中的步骤,Debian同样适用。

VMware Tools

ESXi on Arm — 树莓派4b安装ESXi

昨天VMware官方博客发布了https://blogs.vmware.com/vsphere/2020/10/announcing-the-esxi-arm-fling.html。以fling(非正式产品,属于社区性质的早期阶段产品,旨在从用户处得到一定的反馈和测试)的形式发布了esxi-arm-edition 。

具体的一些安装要求可以参照requirements

对于个人用户,可以使用4G和8G版本的树莓派4b来安装此版本ESXi.

简单总结了几点要求:

更新EEPROM(支持U盘启动)到最新并刷UEFI引导固件(ESXi on Arm需要,使用存储卡),具体步骤可以参考fling中的pdf或者树莓派4 U盘启动+ UEFI引导 (4G版树莓派4b要去启动设置中将 Limit RAM to 3GB 禁用。)

注册My VMware并下载fling中的ESXi ISO文件,制作U盘启动盘(也可以在安装时把ESXi宿主系统安装在这个U盘或USB移动硬盘上,建议使用USB3.0,如果只用作ESXi系统,不用于虚拟机Datastore,有16G或者32G就足够了。USB移动硬盘可以是Sata,也可以是NVMe)

USB外接键盘和HDMI接口的显示器

带外接电源的USB3.0 hub,我用的是奥睿科的某款(非广告,理论上此类可独立供电hub都可以)

Youtube上找到一个视频教程,还是很不错的,安装部分在后面。

安装步骤如下(也可参照pdf):

1. 将Hub与树莓派4b的usb3.0连接并接入独立电源,键盘通过usb2.0连接,显示器通过HDMI连接,U盘启动盘插入Hub。

2. 通电开机,在白色树莓界面,按ESC进入启动设置,到启动顺序中将U盘调整至最前,保存设置使生效。

3. 启动出现ESXi安装进度条,如果需要调整ESXi系统空间大小,可以在此时按Shift+O,在最下方的启动命令后方空格加上autoPartitionOSDataSize=xxxx 比如8G空间就是8192,这样剩余的U盘空间还可以在系统安装成功之后通过https://koolshare.cn/thread-180336-1-1.html此文的方法创建Datastore。

4. 接下来的界面和步骤对于熟悉ESXi安装的朋友就不会陌生了。

显示版本为7.0.0
熟悉的加载过程
关于Fling版本的一些说明
EULA
选择安装介质
选择键盘layout,默认即可
设置Root密码
提示此安装介质将会被重新分区
安装进度条走的很快
安装完成
启动后自动获取IP

如果安装之前没有把U盘启动顺序调到前面,可以在安装好ESXi之后再去UEFI的启动顺序中设置。

安装之后,可以在上方启动成功后的界面按F2,输入Root密码去设置网络或者开启ESXi Shell等常规设置。然后就可以在局域网中通过vSphere client网页https://192.168.1.77 (上方DCUI界面显示的IP)去进一步设置了。

vSphere Web Client界面,包括专门设计的小图标

登陆之后,如果不是中文,建议去网页上方的下拉菜单的设置中切换语言。

点击下拉菜单切换语言
ESXi首页

几个推荐的设置或实践:

管理→系统→时间和日期,Edit NTP Settings, 设置使用网络时间协议,随主机启动和停止,NTP服务器可以使用你自己熟悉的时间服务器,比如ntp1.aliyun.com,保存。切换到服务菜单,启动ntpd服务。稍等一会,在切换到时间和日期页面,时间就会同步成功了。此处的时间还是以UTC时区显示,但其它近期任务等事件的时间戳都会是你所在的时区了,比如东八区。

如果没有在ESXi的黄色DCUI界面开启ESXi Shell和SSH服务,可以在网页客户端的服务中将TSM和TSM-SSH服务启动(请根据需求开启)。

个人使用可以用root账户来进行今后的管理操作,如果涉及多用户,建议在安全和用户菜单中,针对某一系统预设的角色添加用户,或者添加符合自己需求的特定角色后,再添加用户。

如果不方便使用USB存储来做Datastore,可以添加一个iSCSI存储来做Datastore,此操作可以通过ESXi shell来设置,也可以通过网页端操作。以ESXi shell为例:

    esxcli iscsi software set -e true 开启软件iSCSI

    esxcli iscsi adapter list 查看iSCSI适配器信息

查看iSCSI适配器

   把iSCSI适配器与vmk0绑定

绑定iSCSI适配器

    添加iSCSI target (我在局域网的群晖中划分了一部分硬盘做iSCSI)

添加已有的target

    重启ESXi后,此Datastore就会在数据存储菜单中看到了。

iSCSI Datastore

pdf文档中列出了目前支持的客户机系统

Ubuntu 20.04 LTShttps://ubuntu.com/download/server/arm

CentOS Linux 8http://isoredirect.centos.org/centos/8/isos/aarch64/

openSUSE Leap 15.2http://download.opensuse.org/ports/aarch64/distribution/leap/15.2/iso/

Photon OS 3.0https://github.com/vmware/photon/wiki/Downloading-Photon-OS

Debian 10.xhttps://cdimage.debian.org/debian-cd/current/arm64/iso-cd/

Fedora 32 Serverhttps://getfedora.org/en/server/download

以Ubuntu为例,下载ubuntu-20.04.1-live-server-arm64.iso,上传至Datastore,供创建虚拟机时做光盘引导。

选择ISO作为引导盘
安装过程

安装成功

Arm版Ubuntu安装成功

在ESXi首页的资源使用情况图中,可以看出来4G版Pi 4b在安装两个虚拟机之后内存是瓶颈了(我还装了一个VMware Photon虚拟机),所以更推荐使用8G版Pi 4b,一台树莓派上可以同时运行几个客户机,比如Ubuntu,Debian,CentOS等。

资源占用

Tips:

此版本ESXi on Arm中没有自带VMware Tools的安装文件,所以无法通过虚拟机操作菜单安装,不过ESXi-Arm-Fling-Doc.pdf文档中,提供了创建虚拟机之后在虚拟机中编译并安装Open VM Tools的步骤。

编译的Open VM Tools被识别

已知问题:

USB3.0性能达不到协议上限,使用USB3.0的外接网卡(比如一些螃蟹USB网卡)时最高只能达到200Mbps。

监控中的网络和磁盘数据不准确,是因为I/O驱动的问题,目前还在开发中。

不同SoC的ARM设备之间不能进行vMotion,比如eMAG和树莓派之间。

此试用license为180天,过期需要重新安装,理论上也可以用其它有效的x86版vSphere license来授权。

此次ESXi on Arm并非只为树莓派设计,更多的使用场景和以后的发展方向应该是一些Arm-based SmartNICs,或者其它ARM服务器。Nvidia提出收购ARM要约之后,最近的VMworld2020大会上,Nvidia和VMware也宣布了一些合作,其中包括Project Monterey。(和NVIDIA, Pensando, and Intel这三家SmartNIC顶级厂商都建立了合作伙伴关系)有兴趣的可以去链接中查看或者网上搜索下。

相关文章

我的ESXi on Arm硬件

树莓派4 U盘启动+ UEFI引导

vSphere Clustering Service (vCLS)

更新vCenter到7.0 Update1之后,发现虚拟机视图下,多了一个vCLS文件夹,并且下面有3个虚拟机。

vCLS

官方博客文章了解到这是vSphere7.0 Update1新引入的vSphere Clustering Service,简单来说,把一部分控制平面的功能,从vCenter中解耦,并且分布式的由最多3个轻量级虚拟机per Cluster(VMware PhotonOS)分担。当ESXi少于3个时,vCLS虚拟机个数等于ESXi个数。

从介绍来看,这三个虚拟机的生命周期不需要用户或者管理员去处理,而是通过vSphere ESX Agent Manager来管理的,如果我们强行对某一vCLS虚拟机关机,那么Manager检测到少了一个vCLS虚拟机时,会再把它开机。如果我们关闭vCLS虚拟机后快速把虚拟机删除掉,那么Manager就会再创建一个vCLS虚拟机。实际测试也是这样的。

可以想像到今后vSphere会尝试把更多的控制平面服务解耦并分布式部署,有点微服务的意思了。

PS: 因为这个轻量级虚拟机目前还只有X86版,所以如果vCenter7.0Update1的cluster加入了ESXi on Arm的host,那么是无法创建vCLS虚拟机的,就会发现日志里一直在尝试创建,然后又删除。。。解决办法目前只能是Arm的host不加到Cluster里,或者不升级Update1的vCenter。

10月21日更新:

思科警告它的HyperFlex用户不要升级vCenter7.0 Update1,其中提到EAM会尝试关闭其HyperFlex controller VMs(和vCLS相似功能)并删除。(从上面我们看EAM确实会对vCLS VMs进行生命周期的控制),看来是个兼容性的问题。😓

https://www.theregister.com/2020/10/20/cisco_hyperflex_vmware_warning/

尝试绕过ESXi最小4GB内存的安装检查

声明:此文使用的方法在很早的版本ESXi安装时就有人使用过,可以绕过检查,但并不推荐在小内存机器上安装ESXi。

更新说明:如果安装过程遇到图2的内存检查错误时再使用此方法,有些朋友反映在图1处显示为3.6G内存时,安装一会就会显示一个紫色背景的错误消息,根本进不到后续的操作步骤,这种情况就无法使用此方法了。

有些机器本身是4G内存,也许因为部分内存被核显使用,或者需要被BMC/BIOS/UEFI预留,或者其它ESXi的计算方法,会在启动是显示为3.xGB内存,这样因为差一点点内存不能使用ESXi还是有点可惜的,就可以想办法绕过内存检查脚本。

方法步骤如下:

1. U盘启动安装ESXi,在黄色背景界面看到内存为3.7GiB(我使用物理ESXi嵌套安装,分配的3.75GiB内存)。

识别到3.7 GiB内存

2. 同意协议,选择安装介质,设置密码等一系列操作后,遇到内存检查错误,提示需要4.00 GiB。

内存检查错误

3. 在上图界面键盘按下ALT+F1,进入下图界面,然后用户名root,密码为空(之前设置的密码还未生效)。

ALT+F1进入Shell

4. 执行如下命令切换到检查脚本所在目录。

cd /usr/lib/vmware/weasel/util

5. 备份原有脚本,设置权限, 然后vi修改。

mv upgrade_precheck.py upgrade_precheck.py.bak
cp upgrade_precheck.py.bak upgrade_precheck.py
chmod 666 upgrade_precheck.py
vi upgrade_precheck.py

6. vi编辑器中搜索 “MEM_MIN_SIZE”,在vi中输入/MEM_MIN_SIZE。

vi搜索MEM_MIN_SIZE

7. 第一次搜索命中结果应该定位到如下图光标位置。

第一次命中结果

8.我们要修改的就在下方,使用光标定位到下面或者在搜索时按下n键去找第二次命中应该就是了。

需要修改的部分

9. 定位光标到第一个4后面,按i进入编辑模式,退格删除4,修改为2。

修改最小内存为2GiB

10. 按ESC进入命令模式,输入:wq,回车保存退出。

11. 执行下面的命令(杀掉当前的python进程)。

kill -9 $(ps -c | grep weasel | grep -v grep | awk ‘{print $1}’)

12. 然后就又回到熟悉的安装界面了。

回到安装界面

13. 一系列操作后,原来的内存检查错误界面不会出现了,出现了擦除安装介质的对话框,F11继续。

没有再次出现内存检查错误

14. 然后就是等进度条啦。

开始等进度条

15. 安装结束,提示拔下ESXi安装盘,比如U盘,然后回车重启。

安装完成

16. ESXi重启加载完毕后。

重启完毕

17. 访问ESXi网页控制台,3.75 GB内存正常使用。

3.75GiB正确识别并启动成功

ESXi直通核显

常见的ESXi直通显卡都是直通独立显卡给Linux,macOS或者Windows,这样接上显示器,直通USB键鼠以后使用体验和物理机相差就很小了。也不需要通过VMware Remote Console或者VNC,RDP等形式远程访问了。

我们买的工控机或者NUC,Mac Mini等用来玩ESXi的设备往往都是有核显的,在ESXi中核显除了在开机自检过程中被ESXi获取一次控制权或者用户需要连上显示器查看ESXi的DCUI界面(熟悉的ESXi黄色背景后台)之外,显卡并不会作为硬件设备被ESXi虚拟化后提供给虚拟机使用。(ESXi目前被官方支持的显卡虚拟化只支持Nvidia Grid,也就是说跟消费者级别显卡无缘)。

为了让仅有的核显发挥余热,我们就可以尝试把它直通给虚拟机,做硬解使用。(目前测试发现ESXi下直通的核显无法外接显示器使用。

尝试的步骤如下:

1. 在Hardware->PCI Devices中,选中核显,点击Toggle passthrough,如果提示重启请重启ESXi。如图,我的是UHD 630.

直通核显

2. 在将设备添加到虚拟机之前,设置好虚拟机的远程访问,如Windows的RDP,macOS的Screen Sharing或者Linux的VNC,防止直通核显后VMware Remote Console访问有问题。

我以虚拟的macOS举例,所以打开macOS中的Screen Sharing,配置好可以访问的用户,记住地址。

3. 编辑虚拟机,添加PCI设备,或动态PCI设备。选择该核显,然后预留所有内存,保存设置。

添加PCI device

4. SSH访问ESXi,运行esxcli system settings kernel set -s vga -v FALSE(当不需要直通核显时记得改回来,把FALSE改成TRUE执行一下),让ESXi启动时不去获取显卡控制权,然后重启ESXi。

5. 重启ESXi之后,启动macOS虚拟机。然后通过Screen Sharing去远程访问它。登陆进去以后,查看System Report中的Graphics,应该如图一样可以同时看到虚拟显卡和直通的核显。

系统中可以看到直通的核显

Tips: 如上设置后,DCUI界面不能直接访问了,可以通过如下操作借用SSH访问:

1)SSH连接ESXi

2)输入TERM=xterm。(mac的终端需要,windows下的Putty等不需要)

3)输入dcui

这时就看到熟悉的DCUI界面了,如果想退出可以在shell中Ctrl+C结束dcui。