1. 为什么选择ESXCLI离线升级ESXi 8.x?
每次大版本升级都是运维人员的一场小考。我经历过太多次凌晨三点盯着进度条不敢眨眼的时刻,也踩过各种升级失败的坑。ESXi 8.x的离线升级其实比想象中简单,关键是要掌握ESXCLI这个"瑞士军刀"。
离线升级包(Offline Bundle ZIP)就像是个完整的安装工具箱,特别适合没有外网连接的生产环境。相比在线升级,它避免了网络波动导致的中断风险,而且能精确控制版本。我去年给金融客户升级时,就是靠这个方法在断网环境下完成了20台主机的批量升级。
核心优势有三点:
- 完全脱离网络依赖,适合严格隔离的环境
- 升级包完整性可预先验证,避免中途出错
- 通过命令行精准控制每个步骤,适合自动化
2. 离线升级包获取与验证
2.1 下载官方升级包
VMware官网的下载页面像个迷宫,我第一次找升级包花了半小时。正确路径是:产品下载→VMware vSphere→找到对应版本的"Offline Bundle"。注意要选择带"depot"后缀的ZIP包,比如VMware-ESXi-8.0U2-22380479-depot.zip。
有个血泪教训:千万别用浏览器直接下载大文件。我有次下载到99%时网络闪断,导致ZIP包损坏。建议用下载工具(如wget)加断点续传功能:
wget -c https://downloads.vmware.com/.../VMware-ESXi-8.0U2-22380479-depot.zip2.2 安全传输到ESXi主机
把升级包上传到ESXi时,90%的报错都源于传输问题。推荐两种可靠方式:
方法一:SFTP直传
sftp root@esxi_host put VMware-ESXi-8.0U2-22380479-depot.zip /vmfs/volumes/datastore1/方法二:共享存储挂载如果主机已连接NAS/NFS,直接复制到共享存储更稳妥。我习惯在存储上创建专属升级目录:
mkdir /vmfs/volumes/NAS/upgrade_kit重要提示:绝对不要用WinSCP的图形界面拖放上传!我曾因此遇到过文件截断问题,导致升级时出现"Not a zip file"错误。
3. 升级前的关键检查
3.1 验证ZIP包完整性
这是最容易被忽视的步骤。用以下命令检查ZIP是否完整:
unzip -tq /vmfs/volumes/datastore1/VMware-ESXi-8.0U2-22380479-depot.zip正常应该看到No errors detected的提示。如果报错,可能是以下原因:
- 传输过程中文件损坏(重新上传)
- 存储空间不足(用
df -h检查) - 下载的源文件不完整(重新下载)
3.2 确认当前系统状态
升级前必须给系统做个"体检":
# 查看当前版本 vmware -vl # 检查存储空间(至少需要5GB空闲) df -h # 查看正在运行的虚拟机 vim-cmd vmsvc/getallvms建议拍个快照备份配置:
vim-cmd hostsvc/firmware/backup_config4. 核心升级操作详解
4.1 提取升级配置
先查看离线包中的可用版本配置:
esxcli software sources profile list \ -d /vmfs/volumes/datastore1/VMware-ESXi-8.0U2-22380479-depot.zip输出类似:
Name Vendor Acceptance Level ------------------ ------ ---------------- ESXi-8.0U2-22380489-standard VMware PartnerSupported记下你要安装的profile名称(比如ESXi-8.0U2-22380489-standard)。
4.2 执行升级命令
关键命令其实就一行:
esxcli software profile update \ --depot=/vmfs/volumes/datastore1/VMware-ESXi-8.0U2-22380479-depot.zip \ -p ESXi-8.0U2-22380489-standard \ --no-hardware-warning参数说明:
--no-hardware-warning:跳过硬件兼容性警告(已知兼容时使用)-p:指定前面查到的profile名称
如果看到Update completed successfully,就可以准备重启了。
4.3 处理常见报错
问题1:MetadataDownloadError
[MetadataDownloadError] Could not download from depot at zip:/path/to/file.zip解决方案:
- 确认ZIP路径是绝对路径
- 重新验证ZIP完整性
- 检查存储权限:
ls -l /vmfs/volumes/datastore1/
问题2:空间不足
Failed to extract bundle: No space left on device清理空间方法:
# 删除旧日志 rm -rf /var/log/*.gz # 清理临时包 vim-cmd hostsvc/maintenance_mode_cleanup5. 升级后验证与回退
5.1 版本确认三部曲
重启后必须做完整验证:
# 1. 查看基础版本 vmware -vl # 2. 检查所有组件版本 esxcli system version get # 3. 验证网络功能 vim-cmd hostsvc/net/info5.2 紧急回退方案
如果发现兼容性问题,8小时内可以回退:
esxcli software profile rollback但前提是升级时没有覆盖/bootbank分区。更保险的做法是提前用:
esxcli software profile export --file=/data/old_profile.xml6. 生产环境升级建议
在给银行客户升级时,我总结出这套流程:
- 测试环境验证:先用同配置测试机演练
- 维护窗口期:选择业务低峰期操作
- 分批升级:先升级1-2台观察稳定性
- 监控期:升级后48小时内重点监控
特别提醒:如果使用vSAN,务必先检查HCL兼容性列表。我有次遇到vSAN在升级后无法识别SSD,最后发现是驱动兼容问题。