ESXi 相关 

Last Update: 2023-10-03

目录

物理机

手动打包网卡驱动

第一步,下载 VIB 驱动文件、PowerShell 脚本 ESXi-Customizer-PS 和 ESXI offline 压缩包。

网卡驱动文件可以在 https://vibsdepot.v-front.de/wiki/index.php/List_of_currently_available_ESXi_packages 下载。

脚本可以在 https://www.v-front.de/p/esxi-customizer-ps.html 下载。

offline 压缩包就是 VMware 官网上,ESXI 下载页面里和 ISO 镜像并列的压缩包。

第二步,安装依赖环境。

用管理员权限打开 PowerShell 运行命令 Install-Module -Name VMware.PowerCLI 。这个命令执行之前最好用 shadowsocks 或者 V2rayN 之类的软件打开全局代理,可以大幅加快安装速度。

如果没有使用代理的条件可以在 https://code.vmware.com/web/tool/12.0.0/vmware-powercli 下载 VMware-PowerCLI 工具的 zip 版本。

把压缩包中的所有文件夹解压到 PowerShell 的 Modules 目录中 (C:\Program Files\WindowsPowerShell\Modules)。

调整 PowerShell 脚本的执行策略,让脚本可以正常运行: 用管理员身份启动 PowerShell 并执行 Set-ExecutionPolicy Unrestricted ,在对话中输入 y

默认执行策略无法运行上面得到的名称类似于 ESXi-Customizer-PS-v2.6.0.ps1 的脚本。

第三步,开始封包。

把第一步得到的文件放到同一个文件夹下,比如 C:\work。所有驱动文件放在该文件夹下的 pkg 文件夹中,比如 C:\work\pkg。

执行以下命令:

.\ESXi-Customizer-PS-v2.6.0.ps1 -izip .\ESXi650-201908001.zip -pkgDir C:\work\pkg

ESXi-Customizer-PS-v2.6.0.ps1 为最新的工具命令
ESXi670-201912001.zip 为 ESXI 的离线包
C:/work/pkg 为 VIB 驱动的路径

执行完毕后如果显示 All done. 就表示封包完成。

脚本所在文件夹下会生成新的 ISO 文件,用这个镜像安装系统即可。

更改主机名

执行以下两条命令 (如果不在域中,第二个命令可以不执行):

esxcli system hostname set --host=hostname
esxcli system hostname set --fqdn=fqdn

FQDN 意为 Fully Qualified Domain Name 即,全限定域名。

比如:

esxcli system hostname set --host=j4105
esxcli system hostname set --fqdn=j4105.wt.local

即刻生效,不需要重启主机。

使用 ssh-key 登入

要允许授予 root 访问权限,在 /etc/ssh/sshd_config 文件中将 PermitRootLogin no 更改为 PermitRootLogin yes (允许密码、密钥登入) 或者 PermitRootLogin prohibit-password (禁止密码登入,允许密钥登入)。

要禁用密码登录,必须将 ChallengeResponseAuthenticationPasswordAuthentication 设置为 no

重新加载服务:

虚拟机

openwrt

不论编译时选定的启动方式是什么,都要在 ESXi 虚拟机设置里面把启动方式改成 BIOS 才能正常运行。原因还没搞清楚。

存储部分

查看硬盘信息

执行 esxcli storage core device list 列出所有硬盘

执行 esxcli storage core device smart get -d <device> 查看硬盘 <device> 的 SMART 信息。

RDM 硬盘物理直通

在 RDM 物理直通模式下,IO 请求直接转发到硬盘,不会将硬盘虚拟化,所以性能要高一些。

但如果被 RDM 的硬盘是企业级产品的话,实际上性能没高多少。

所以,如果需要物理迁移硬盘的话,直通吧。如果需要用到 ESXI 的快照和迁移之类功能的话,别直通了。

就一个命令 vmkfstools -z /vmfs/devices/<disks>/<physical_disk> /vmfs/volumes/<main_disk_folder>/<disk_name>.vmdk 执行后在虚拟机的设置页面里添加硬盘就好了。

这个命令中 -zphysical RDM 的对应选项,如果需要 virtual RDM 也可以换成 -r 选项。

比如:

# physical_disk 是物理磁盘的名称
# 存储 > 设备 > 选择硬盘
physical_disk = t10.ATA_____INTEL_SSDSC2BA400G4_____________________BTHV551001NS400NGN__

# main_disk_folder 是 ESXi 系统盘所在位置的名称
# 存储 > 数据存储 > 选择 ESXI 的系统盘
main_disk_folder = 5efe1e10-9392b324-4451-001b2136bc58

# 自定义的名称,方便识别这个盘就行
disk_name ` 200423intel800.vmdk

# 得到比如这个命令
vmkfstools -z /vmfs/devices/disks/t10.ATA_____INTEL_SSDSC2BA400G4_____________________BTHV551001NS400NGN__ /vmfs/volumes/6106b085-9458a05f-d5ff-04d9f5f82585/200425intel400.vmdk

如果要取消硬盘的 RDM 直通只需要删除 /vmfs/volumes/<main_disk_folder> (比如 /vmfs/volumes/6106b085-9458a05f-d5ff-04d9f5f82585) 文件夹下 <disk_name>-rdmp.vmdk<disk_name>.vmdk 两个文件就行。比如 200425intel400-rdmp.vmdk200425intel400.vmdk

注意:虚拟机添加直通硬盘以后,硬盘默认被分配一个 SCSI 控制器,但是这个控制器只能识别 2T 以下的盘。如果硬盘大小在 2T 往上,需要手动把控制器类型改为 SATA 控制器。

缺失的 SCSI(0:7)

根据 vSphere 的文档,一台虚拟机最多有 4 个 SCSI 控制器,它们按顺序编号为从 0 到 3。

SCSI(0:6) 表示 SCSI 控制器 0 上的第 6 个节点。

但虚拟机的 SCSI 控制器也需要占一个 SCSI 节点,通常,这个节点是 (z:7),所以在给设备分配 SCSI 控制器时根本没有第 7 个节点,节点 6 后面直接跟节点 8。

导入 vmdk 格式磁盘

有些 vmdk 格式的磁盘文件不能直接用。比如编译完 openwrt 以后得到的 vmdk 文件。

需要 SSH 到 ESXi 主机的 DataStore 存储中,执行 vmkfstools -i <oldfile>.vmdk <newfile>.vmdk -d thin 将 vmdk 文件转化为 ESXi 能识别的形式。

命令执行之后会生成 <newfile>.vmdk<newfile>-flat.vmdk 两个文件,这两个文件共同组成了 ESXi 可识别的磁盘文件。

最后 编辑虚拟机 -> 添加现有硬盘 -> 选择 DataStore 中生成的两个文件。

经读者曾泽林 (zelinzeng@gmail.com) 提醒,编译完 openwrt 后得到的 vmdk 文件在硬盘控制器选择 IDE 的情况下可以正常启动虚拟机,上面的流程的作用是让硬盘驱动器为 SCSI 的情况下可以正常启动虚拟机。

机械硬盘休眠

ESXi 作为服务器操作系统会 尽可能阻止硬盘休眠

RDM 直通的本质是 ESXi 把 IO 操作直接转发到硬盘,硬盘依旧受 ESXi 管理,所以 RDM 直通的硬盘也无法休眠。

理论上,有一个办法可以绕过 ESXi 对硬盘的管理:

注: 经测试,在 6.7U3 host 的 Windows Server 2019 guest 上并没有成功休眠硬盘。

  1. 在主板上加装 HBA 直通卡;
  2. 机械盘连接 HBA 卡;
  3. HBA 卡通过 PCI 直通给到虚拟机的操作系统。

原理是,虚拟机操作系统绕过 ESXi 直接接管 HBA 卡,间接接管了机械硬盘。

这样机械硬盘就避开了 ESXi 的管理,可以在虚拟机操作系统内设置硬盘休眠。