
简介VMware-ESXi-7.0U3v-24723872-depot是VMware官方发布的ESXi 7.0 Update 3v离线补丁仓库主要面向需要将ESXi主机升级到U3v版本、进行离线bundle部署或维护集群补丁基线的虚拟化管理员与运维工程师。压缩包共包含99个文件其中96个vib驱动文件用于网卡、存储控制器、PCIe设备等硬件的兼容性与修复2个xml文件提供补丁元数据和依赖关系另有1个zip内层打包文件整体大小约584MB符合标准depot结构。目前已有692人浏览学习反映该补丁版本在升级排障和硬件兼容性调整中有较高关注度。通过此depot可完成ESXi主机的U3v基线统一升级、批量注入所需驱动并为后续回滚或扩展其他组件保留完整补丁集适合在维护窗口内快速应用。1. 把「ESXi 7.0U3v depot 补丁包」说清楚它解决哪类升级难题拿到手的是一个名字很长的 zip 文件VMware-ESXi-7.0U3v-24723872-depot.zip。干虚拟化运维的人看到这个命名基本就明白——这是 VMware ESXi 7.0 Update 3v 版本的离线补丁包depot bundlebuild 号 24723872。如果你机房里还有一批 ESXi 7.0 U2、U3a、U3b 甚至 U3t 的主机安全扫描报告上一堆 CVE 等着修vCenter 的告警刷个不停这个 depot 包就是拿来干这件事的不用联网、不用挂 ISO把文件拷到存储上一条 esxcli 命令就能把主机升到指定版本。适合谁管着一台到几百台 ESXi 的虚拟化管理员、机房运维、做 VMware 技术支持的工程师。这篇文章不打算只给你贴命令——我会把 depot 包的结构、升级的完整流程、Dell 定制版机器的特殊坑、升完之后的验证和后悔药一起讲透。2. 先搞懂 depot 包的版本与结构build 24723872 和标准 profile2.1 U3v 的 v 是什么理解 ESXi 版本号的刷新节奏ESXi 7.0 主版本下最大的功能更新是 Update 3简称 U3但 U3 之后 VMware 还会持续修安全漏洞和驱动兼容性问题每修一波就刷一个小版本号从 U3a 一路排到 U3v。这不是说 U3v 有 22 个重大功能迭代它更像是一个补丁累进的过程u、v 之间的差异主要是安全公告Security Advisory的修复、个别 HCL 驱动更新、以及上一轮补丁引入的回归问题修复。VMware 对 7.0 这个版本线的支持周期很长所以会在 U3 这个大版本上不断往外吐小版本直到生命周期结束。build 24723872 是 U3v 的具体构建号。判断一台主机现在跑在什么版本最直接的方式是登进 ESXi 的 Shell 或 SSH执行 vmware -v它会返回类似 VMware ESXi 7.0.0 build-24316968 这样的输出build 号一对比就知道当前版本和 depot 包之间的差距。我判断是否需要升级的标准很简单如果当前 build 号低于目标 depot 的 build 号且中间跨度超过两个小版本不要直接跳级——ESXi 官方虽然允许从 7.0 U2 直接升到 U3v但跳级升级出问题的概率会明显上升尤其是驱动兼容性这块。稳妥的做法是先把主机升到 U3 的中间版本再升 U3v不过实际生产中我见过不少直接跳级成功的案例关键看你这台机器的硬件是不是在兼容性列表里。2.2 depot 包解包后的内容VIB、profile 和 metadata这个 zip 解开之后不是让你直接跑安装程序的 ISO而是一个 offline bundle 的结构。里面有三个关键部分metadata.zip、一堆 .vib 文件、以及描述这些 VIB 之间依赖关系的 XML 描述文件。VIBVMware Installation Bundle是 ESXi 上最小的软件单元类似 Linux 里的 rpm 包——一个 VIB 可能带了一个驱动、一个服务、或者一个安全补丁。depot 包的本质就是把这些 VIB 打包在一起由 metadata 声明版本号和依赖关系。安装时你不是逐个装 VIB而是选一个 profile安装配置档。profile 是 VMware 预组合好的一组 VIB 集合standard 是标配带 VMware Tools 的镜像组件还有 no-tools 之类变体。这解释了为什么升级的时候你不必关心具体哪个 VIB 被替换——选 profile 就等于告诉 ESXi 把当前系统的软件集合状态迁移到哪个目标状态。整个机制像极了 apt 的 release 文件加软件包的组合只是 ESXi 的环境更封闭VIB 的依赖校验极其严格一个 VIB 对不上就直接拒绝整个升级。理解这一点后面看到那些莫名其妙的报错就不会慌。2.3 升级前必须完成的检查清单在跑任何升级命令之前我会强制自己过一遍以下检查项每一项都可能让升级翻车检查项命令或位置预期结果当前版本和 build 号vmware -v记录旧 build确认升级目标当前 profile 名称esxcli software profile get记下当前 profile用于回退比对根分区和 bootbank 空间df -h根分区剩余空间大于 5GB主机维护模式esxcli system maintenanceMode get升级时会被强制要求进入集群 HA 状态vCenter 界面确认 vSphere HA 不会在主机隔离时触发故障切换硬件兼容性VMware Compatibility Guide服务器型号、CPU、存储控制器在 7.0 U3v 列表内配置备份vim-cmd hostsvc/firmware/backup_config备份文件已下载到本地空间检查被很多人忽视。ESXi 的根文件系统只有几 GB如果之前装过一堆第三方 VIB或者 /scratch 分区数据写满升级时会死在空间不足这个坎上。我一般会在升级前用du -sh /tmp /scratch /var/log看一遍把不需要的日志清掉。配置备份不是可选项——vim-cmd hostsvc/firmware/backup_config导出的文件是把所有网络配置、存储映射、用户权限打包的配置归档升级失败回退时能救命。3. 实操升级CLI 和 vLCM 两种方式完整演示3.1 把 depot 包放到 ESXi 能访问的位置离线补丁包的优势就在这一步体现不需要主机能访问外网补丁源只要把 zip 文件放到 ESXi 能读到的存储或路径上就行。常见做法是先用 vSphere Client 或 sftp 把它传到数据存储的根目录比如 /vmfs/volumes/datastore1/。如果你习惯 scp也可以直接推到主机的 /tmp 下但 /tmp 空间小大文件容易撑爆我一般只往数据存储放scp VMware-ESXi-7.0U3v-24723872-depot.zip rootesxi-host-ip:/vmfs/volumes/datastore1/这段命令把本地文件拷贝到 ESXi 主机的 datastore1。用 scp 前要确认目标主机的 SSH 服务已开启以及你有 root 权限。注意/vmfs/volumes/datastore1/是数据存储的路径不同机器可能叫 datastore1 或别的名字先执行esxcli storage vmfs extent list或直接 ls 看一下再传。传完之后校验文件完整性是个容易被忽略的环节。zip 在传输过程中如果损坏esxcli 在读 depot 时会在解压 metadata 阶段就报错你会看到类似 Error: Unable to open the zip file 的消息。我一般在服务器上先跑一遍unzip -t或对比 SHA256 校验和再开始操作这能省掉一半的排查时间。文件放好后用ls -lh确认大小和权限。3.2 用 esxcli 单机升级命令逐条拆解单机离线升级的标准流程是进入维护模式 → 查看 depot 里的 profile → 执行 profile update → 重启 → 退出维护模式。第二步很多人直接跳过了其实它特别重要因为不同仓库的 profile 名称可能不一样不看一眼就用 -p 参数指定旧 profile 名容易翻车。完整序列如下# 进入维护模式 esxcli system maintenanceMode set --enable true # 查看 depot 包中有哪些可用 profile esxcli software sources profile list -d /vmfs/volumes/datastore1/VMware-ESXi-7.0U3v-24723872-depot.zip # 执行升级指定目标 profile esxcli software profile update -d /vmfs/volumes/datastore1/VMware-ESXi-7.0U3v-24723872-depot.zip -p ESXi-7.0U3v-24723872-standard # 重启 reboot # 重启完成后退出维护模式 esxcli system maintenanceMode set --enable false逐条解释一下关键参数。-d指定 depot 包的完整路径支持本地路径和 HTTP/HTTPS URL离线环境里用本地路径最常见。-p指定目标 profile 名这个值必须以第一步 list 命令的输出为准不同构建版本的 standard profile 命名规则通常是ESXi-版本-build号-standard。profile update和profile install的区别在于update 是在当前版本基础上做增量迁移保留现有配置install 是把系统状态强制重写到目标 profile相当于一次原地重装。日常升级永远优先用 update。命令执行过程中会打印一长串 VIB 的安装/升级/删除日志。看到 Result: 0 或者 Reboot Required: true 说明升级请求被正常接受了。如果中间蹦出 Result: 1 或者某个 VIB 报错不要强行重启直接进入我后面会讲的排查流程。reboot这个动作本身没有技术含量但执行后 ESXi 会在 bootbank 切换新的软件集合所以一定要等到主机的网络和 vSphere Client 都能访问了再操作下一步。3.3 用 vLCM 走集群升级少敲命令的图形化路径如果你有 vCenter 7.0 且主机已经在集群里更推荐用 vSphere Lifecycle ManagervLCM来做它的好处是把镜像和固件驱动统一管理集群里的每台主机最终会被对齐到同一个 ESXi 版本。基本思路是在 vLCM 里导入这个 depot zip 作为镜像创建一个基线然后 attachment 到集群执行升级。vLCM 的底层原理其实和 esxcli 一样也是通过 depot 包解析出 VIB 集合但它多了一层镜像漂移检测如果集群里有某台主机装了额外的第三方驱动vLCM 会在预检阶段标记出来你可以选择让这个驱动保留还是被移除。这种可视化的预检对生产环境更友好因为 esxcli 的文本输出要逐行读vLCM 直接把不兼容项列成清单。vLCM 的局限在于它依赖 vCenter而且需要 vCenter 的版本高于或被管理主机的版本。如果你的 vCenter 还是 6.7 或者 7.0 早期版本直接用 CLI 反而更利索。还有一种混合方案如果集群很大先在一台测试机上用 CLI 验证 depot 包没问题再批量走 vLCM。3.4 用 PowerCLI 批量升级多台主机手上主机数量超过十几台的时候逐台 SSH 进去敲命令不现实。PowerCLI 可以连到 vCenter 批量执行 esxcli 操作核心逻辑就是循环取主机、装维护模式、执行 update、重启。下面这个脚本是我实际跑过的模式Connect-VIServer vcenter.example.com $depotPath /vmfs/volumes/datastore1/VMware-ESXi-7.0U3v-24723872-depot.zip $profileName ESXi-7.0U3v-24723872-standard $hosts Get-VMHost | Where-Object { $_.Version -eq 7.0.2 -and $_.ConnectionState -eq Connected } foreach ($vmhost in $hosts) { Write-Host 处理: $($vmhost.Name) $esxcli Get-EsxCli -VMHost $vmhost -V2 # 排除已经在目标版本的主机 $currentProfile $esxcli.software.profile.get.Invoke() if ($currentProfile.Name -eq $profileName) { continue } # 进入维护模式 Set-VMHost -VMHost $vmhost -State Maintenance -Confirm:$false # 执行升级 $esxcli.software.profile.update.Invoke({depot$depotPath; profile$profileName}) # 重启 Restart-VMHost -VMHost $vmhost -Confirm:$false -RunAsync }脚本里几个值得注意的点.Invoke()是 PowerCLI V2 API 的标准调用方式不同版本的 PowerCLI 对software.profile.update的参数名定义略有差异如果报参数错误先执行$esxcli.software.profile.update.GetHelp()查看当前版本的参数列表。-RunAsync表示重启不等待完成这样循环能继续处理下一台主机但要注意控制并发我一般会手动加一个 Start-Sleep 让主机之间间隔几分钟避免集群同时飘掉太多台导致 HA 故障切换风暴。脚本跑完后用Get-VMHost | Get-VMHostPatch之类的命令复查状态。4. 升级中的避坑记录驱动、空间、profile、回退4.1 现象升级后网卡消失主机失联这是最让人头疼的情况了——命令执行成功、重启顺利完成vCenter 里看到主机变成“无响应”SSH 也登不进去最后只能去机房接显示器看本地控制台。原因服务器板载网卡或 PCIe 网卡的驱动在 U3v 的 VIB 集合里被替换成了不兼容的版本或者干脆被移除了。尤其是那些不在 HCL 列表内的网卡比如 Realtek、部分 Intel 变体官方 depot 包压根没包含对应驱动升级后系统起不来网络服务。解决如果还能进本地控制台先用esxcli software vib list | grep net看当前网卡驱动然后用厂商离线包比如 Dell、HPE 官方定制的 ESXi 镜像把缺失的驱动重新打回去esxcli software vib update -d /路径/厂商驱动vib包.zip。更稳妥的做法是升级前就确认这台机器的网卡驱动在目标版本的兼容列表里不在的话先下载第三方驱动 VIB 到本地升级后立刻补装。4.2 现象报错说 VIB 被占用无法删除执行 profile update 时输出一段类似 Cannot delete VIB ... because it is in use by VIB ... 的报错整个升级流程中断。原因ESXi 的依赖检查机制发现目标集合里要移除的某个 VIB 被另一个 VIB 引用这种引用关系在旧版本之间存在循环依赖时尤其常见。多数情况下是因为旧版本有一个超龄的第三方驱动包还挂在系统里它引用了将被移除的 VIB。解决先看完整报错里提示的 VIB 名称用esxcli software vib list确认它是哪个包带来的。如果确定是废弃的第三方驱动可以先用esxcli software vib remove -n 该VIB名手动摘掉再重新执行 profile update。注意摘除 VIB 这个动作本身也会触发依赖检查所以如果报错说它还被别的 VIB 依赖就得把依赖它的那个包也一起移除。这种链条清理有点玄学但一次梳理完就干净了。4.3 现象profile update 找不到指定的 profile命令报 No profile found matching the specified criteria 或者列出的 profile 名字和我写的完全不一样。原因绝大多数情况是我把 profile 名写错了。不同构建的 depot 包 profile 命名可能有细微差别且如果这个 depot 被重新打包过profile 名甚至会带上自定义后缀。解决老老实实先执行esxcli software sources profile list -d /路径/depot.zip把输出里的 profile 全名列出来复制粘贴到 -p 参数里。这里也顺带说一句如果你下载的 depot 是第三方的“集成驱动版”比如有人已经把网卡驱动打进去了常见于那些带 madmax 字样的整合包profile 名称更可能被改得面目全非list 是唯一的正确路径。另外有个别版本在 profile 名带空格或大小写不一致的情况list 输出是最权威的。4.4 现象Dell 定制版机器升级后 OpenManage 插件丢失Dell 服务器原本装的是 DellEMC 定制版 ESXi 镜像直接拿官方 depot 升级 U3v 之后OpenManage 的 VIB比如 srvadmin 系列没了硬件监控报警全部中断。原因官方 depot 只包含标准 VIB 集合升级时会把不在目标 profile 里的第三方自带 VIB 移除。Dell 的系统和硬件管理组件在标准 profile 里没定义于是被当成残留清理掉了。解决升级完成后重新安装 Dell 的 OpenManage VIB或者干脆上 DellEMC 官方出的定制 depot 而不是 VMware 通用版。如果有大批 Dell 机器我的习惯是直接用 Dell 官方的定制 ISO/depot 升级少很多麻烦。类似的问题在 HPE 的 iLO 驱动上也会发生思路完全一样。这里再补充一句之前提到的热词“esxi增加网卡驱动”如果你需要往 ESXi 里加非官方网卡驱动也是在升级之后用厂商提供的离线 VIB 包进行esxcli software vib install不要试图把驱动揉到官方 depot 里再升级失败率极高。4.5 现象升级完成但 vmware -v 显示的还是旧版本号esxcli 返回成功、主机也重启了但 vmware -v 一看build 号没变。原因升级命令执行到了 bootbank 写入阶段但 hostd 服务没有正常把新软件集合激活。常见诱因是升级后忘了重启就手动退出维护模式或者 bootbank 空间不足导致引导配置写入失败。解决先执行esxcli software profile get看当前活跃 profile 的 build 号如果还是旧的再跑一次esxcli software profile update让系统重新执行安装动作这次盯着输出有没有 Reboot Required 标记然后立刻重启。如果是 bootbank 空间不足需要清理旧的 bootbank 或者用esxcli software profile install强制覆盖一次。这个问题不常见但一旦遇到就很迷惑记下来免得下次慌了。5. 升级后的验证与后悔药把一次升级收尾到位升级重启之后不要急着退出维护模式就算完事。我有一套自己的验证顺序按这个走一遍基本能确认系统和升级前没有行为差异首先检查版本和 profile 是否对齐预期。执行vmware -v确认 build 24723872 出现再执行esxcli software profile get确认当前 profile 的名字和升级参数里写的一致。然后看关键服务是否正常。esxcli network ip interface list确认 vmnic 状态为 upesxcli storage core device list确认存储设备能正常识别/etc/init.d/vpxa status看 vCenter agent 是否已经连回 vCenter。这些检查做完都没有异常才把主机从维护模式退出来。最后留一个后悔药的操作路径如果在后续 24 小时到 48 小时之内发现 U3v 有不可接受的问题比如某个业务虚拟机性能劣化严重可以回滚到升级前的版本。前提是升级前你记录了旧 build 号并且还留有旧版本的 depot 包。回滚命令和升级几乎一样只是把 depot 换成旧版、profile 换成旧版的标准 profile 名然后执行esxcli software profile install——注意这里是 install 不是 update因为系统当前已经在新版本上你需要强制重写回旧状态。install 之后同样重启、验证。这也是我为什么强调升级前必须备份配置的原因。esxcli 回滚只能把软件状态带回去但配置文件的迁移不保证 100% 一致手上有vim-cmd hostsvc/firmware/backup_config导出的配置包回滚之后如果发现网络配置或存储映射有偏差至少能通过恢复配置快速修正。从最早一次因为跳级升级导致一台 R730xd 失联、大半夜跑机房之后我给自己定了一条规矩每次 ESXi 升级都强制走一遍“备份配置 → 记录当前 profile → 确认好驱动兼容性 → 升级 → 逐项验证 → 观察 48 小时”的完整流程并且升级前后的 depot 包都在本地留档至少一个季度。这套习惯后来帮我处理过不少类似 VMware-ESXi-7.0U3v-24723872-depot.zip 这种补丁包的升级任务基本没再出过需要应急的岔子。希望这篇文章里讲的这些内容和踩过的坑能帮到你下次拿到 depot 包升级的时候少走点弯路。本文还有配套的精品资源点击获取