十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ESXi 7.0U3v depot文件离线升级实战:从原理到故障排查

ESXi 7.0U3v depot文件离线升级实战:从原理到故障排查 简介这是一份专门针对 VMware ESXi 7.0 Update 3v 的离线 depot 补丁包主要面向虚拟化运维工程师和系统管理员用来对宿主机进行版本升级、补丁修复以及添加新硬件驱动支持。整个压缩包内一共包含了九十九个文件其中九十六个是 VIB 驱动包覆盖了主流网卡、存储控制器、NVMe 固态硬盘和磁盘阵列卡等常见设备驱动另外还有三个辅助文件分别是一个 ZIP 归档包和两个 XML 元数据描述文件统一打包后的大小约为五百八十四兆字节。该离线包由作者 Tears__Liu 整理并分享目前已有六百六十三人浏览学习过。补丁包采用标准的 depot 目录结构里面同时含有系统基础包、虚拟 SAN 健康组件等多个核心组件的两个构建版本通过 esxcli 命令即可在离线环境下进行加载进而完成内核模块以及硬件驱动的升级针对性地解决硬件兼容性问题与安全漏洞。对于无法访问外网的生产内网环境这份离线捆绑包提供了非常可靠的升级来源同时也方便在 vSphere 集群中进行批量维护或者搭建同版本的验证环境。1. 先从版本号说起ESXi 7.0 U3v 到底是个什么东西1.1 拆解版本号含义7.0、U3、v、build 24723872做虚拟化这行跟ESXi打了这么多年交道我早就习惯了拿文件名当密码一样拆着看。比如这次要聊的VMware-ESXi-7.0U3v-24723872-depot一眼扫过去信息量其实全写在名字里了。7.0是主版本表明这是vSphere 7.0这条产品线U3是Update 3的缩写表示第三个大的维护更新包后面那个小写的v是VMware的补丁命名规则里的一个递增标记代表这个版本是U3基础上的又一个累积补丁版本再往后就是w、x、y这种字母往后排。最后那个24723872是build号也就是编译版本号它比字母更能准确定位你到底用的是哪一版代码。可以说只要拿到这个文件名我基本就能判断客户环境处在什么补丁水平以及能不能直接往上升。这里有个容易混淆的点很多人以为7.0U3v的“v”是代表VMware或者vSphere的缩写其实不是。它是补丁版本号的一部分类似于Windows更新里的KB编号后面的日期后缀。记住一个简单的规律数字越大越新字母越靠后越新。比如同样是ESXi 7.0U3build 24723872一定比build 22348816对应U3c要新因为前者包含了后者所有修复内容。1.2 depot文件与ISO、Offline Bundle的区别与适用场景新手最容易搞不清的就是depot文件到底是什么。它本质上是一个ZIP压缩包里面装着ESXi升级所需的全部VIB包VMware Installation Bundle以及对应的元数据描述符。你可以把它理解成“软件仓库快照”——不是单个安装包而是一堆组件的集合。depot的官方名称叫Offline Bundle也有些人叫它补丁存储库但不管哪个叫法作用都一样让管理员在没有外网连接的内网环境里也能完成ESXi的升级和驱动注入。那它跟ISO有什么不同ISO是完整安装镜像主要用来从U盘或光驱启动然后全新安装ESXidepot则是给已经跑起来的ESXi打补丁用的。打个不严谨的比方ISO是系统光盘depot是Windows更新补丁包。虽然depot也包含很多VIB文件但它没有引导启动器不能直接用做安装盘。不过有一个例外你可以通过工具把depot转成带特定驱动的ISO镜像用于离线安装到新服务器上这也是我经常干的事。至于在线更新VMware也提供了远程depot URL但那需要环境能访问外网很多生产环境根本不允许所以离线depot这种形式在实际项目里反而更常用。2. depot文件的实际用途什么时候你会需要它2.1 场景一批量升级现有ESXi主机我接过不少客户的环境几十台ESXi主机版本还停留在7.0U1甚至6.7的都有。如果一台台用U盘重装系统那工作量直接让人崩溃。这种情况下depot文件就是救命稻草。你可以先把depot上传到vCenter的更新管理器Update Manager现在叫Lifecycle Manager然后创建一个基准或一个镜像集群把补丁附加到所有主机上就能实现批量升级。整个过程中虚拟机会先迁移到其他主机如果你启用了DPM或维护模式然后每台主机依次升级最后再迁移回来。整个过程不用动主机的配置存储上的虚拟机也不会被删除比重装系统踏实得多。还有一类场景是环境里没有vCenter只有孤立的ESXi主机。这时你依然可以用depot文件来打补丁方法是通过ESXi的CLI命令直接指向depot路径或者先把它上传到主机的存储路径下。虽然操作没有vCenter那么便利但至少不用关机重装。我遇到过一个客户机房托管了三台单机ESXi没有vCenter授权都是靠命令行升级的用的就是depot包。2.2 场景二给定制镜像添加驱动这个用途很多人没意识到但实际项目里非常刚需。服务器厂商比如Dell、HP、Lenovo经常会提供定制版的ESXi镜像因为里面有它们硬件的驱动如网卡、RAID控制器驱动。但如果你用的是VMware官方原版镜像装到某款新服务器上可能会直接出现“找不到网卡”或“找不到磁盘”的尴尬情况。解决思路就是用驱动VIB包配合depot重新打一个包含定制驱动的ESXi安装镜像。这个过程在VMware社区里通常叫“构建自定义镜像”或“注入驱动”。用VMware的esxcli工具和PowerCLI的New-EscustomIso命令可以把官方ISO和驱动depot合并生成一个新的ISO。这样你在安装系统时驱动就已经预置在里面了不需要安装时再去手动加载VIB。我去年帮一家公司部署新买的服务器就是靠这个方法搞定了板载万兆网卡的驱动问题否则装完系统之后只能进维护模式敲命令补驱动非常麻烦。2.3 场景三VUM/生命周期管理器离线升级如果你的环境已经接入了vCenter 7.0那么Lifecycle Manager的离线升级操作基本就是围绕depot转的。在“更新管理器”的“设置”里你可以直接“导入更新”选中本地下载的depot ZIP文件系统会自动解析补丁列表。导入完成后可以看到这个补丁对应ESXi 7.0U3v的详细版本信息、兼容性声明、影响范围等。之后把它附加到一个集群上系统会进行合规性扫描告诉你哪些主机的系统版本落后了然后你就可以一键执行更新。整个过程基本自动化但前提是你得知道怎么获取depot文件、如何校验它以及如何正确导入。很多新管理员卡在这一步习惯性地以为是像装软件一样双击一个exe结果双击之后发现根本没有反应——它本来就不是给你双击的。3. 实操如何用depot文件完成ESXi升级与安装3.1 用Lifecycle Manager导入depot我先说最符合正常业务环境的流程也就是通过vCenter的Lifecycle Manager以前叫Update Manager来升级。准备工作很简单把VMware-ESXi-7.0U3v-24723872-depot.zip下载到本地文件名不一定非得是这个名字但一定要确认是官方带签名校验的完整包。然后在vCenter Web Client里进入“生命周期管理器”-“设置”-“更新”点击“导入更新”选择ZIP文件等待上传。上传完成后你需要创建一个基准比如“ESXi 7.0U3v”把这条更新附加到主机或集群上。之后系统会扫描这些主机的合规状态如果显示不合规就可以执行“修复”了。这里有一个细节导入depot时vCenter会弹出补丁信息包括补丁类型比如“安全补丁”或“Bug修复补丁”、发布厂商、发布日期还有一个很重要的“影响”描述里面写着升级之后是否需要重启主机、是否需要引导到维护模式。7.0U3v这个级别的补丁基本都需要维护模式加重启因为它是系统底层补丁涉及ESXi的kernel组件。如果你在修复时勾选了“快速启动Quick Boot”某些服务器型号可以跳过BIOS自检和引导大幅缩短重启时间但如果你的硬件兼容性验证没过建议还是老老实实走完整重启。3.2 用PowerCLI命令离线apply depot没有vCenter的环境也有办法甚至我自己在只有一台ESXi主机需要升级时更喜欢直接用SSH到主机上操作因为更快。你需要先开启主机的SSH服务然后用putty登录进去。首先把depot文件上传到主机存储目录比如/vmfs/volumes/datastore1/然后执行以下命令esxcli software profile update --depot/vmfs/volumes/datastore1/VMware-ESXi-7.0U3v-24723872-depot.zip --profileESXi-7.0U3v-24723872-standard命令里的--profile参数需要指定depot里的profile名称。你可以通过下面的命令查看depot里有哪些profileesxcli software sources profile list --depot/vmfs/volumes/datastore1/VMware-ESXi-7.0U3v-24723872-depot.zip执行后会列出类似ESXi-7.0U3v-24723872-standard和ESXi-7.0U3v-24723872-no-tools这类名称选带standard的那个就行。命令执行时系统会先检查兼容性如果没有任何错误它会提示你升级完成需要重启。出现“Reboot Required”之类的提示后执行reboot即可。注意升级前一定要把主机进入维护模式命令是esxcli system maintenanceMode set --enable true否则很多操作会被锁定直接升级会报错“Operation not allowed during maintenance mode”。3.3 从depot生成定制ISO镜像的实战步骤这个需求通常出现在新服务器装系统、但原版ISO不支持硬件驱动的情况下。你需要这台机器的驱动VIB包从厂商官网下载以及一个工具VMware PowerCLI或者用esxcli在Linux环境下处理但PowerCLI最方便。先安装PowerCLI然后打开PowerShell执行Add-EsxSoftwareDepot .\VMware-ESXi-7.0U3v-24723872-depot.zip Add-EsxSoftwareDepot .\driver-bundle.zip New-EsxImageProfile -CloneProfile ESXi-7.0U3v-24723872-standard -Name ESXi-7.0U3v-24723872-custom -Vendor MyCompany第三步其实是创建一个新的镜像配置文件然后把它设为实施从旧profile克隆出来。接着用以下命令把驱动VIB注入到新profile里$profile Get-EsxImageProfile -Name ESXi-7.0U3v-24723872-custom Add-EsxSoftwarePackage -ImageProfile $profile -SoftwarePackage 厂商驱动VIB名最后导出ISOExport-EsxImageProfile -ImageProfile $profile -ExportToIso -FilePath C:\temp\ESXi-7.0U3v-custom.iso这样你就得到了一个自带驱动的ESXi安装ISO。这里有个不小的坑驱动VIB的版本兼容性必须与ESXi版本匹配如果这个VIB只支持6.7你强行注入到7.0U3v的镜像里安装时可能会直接报“unsupported VIB”错误。所以在做这一步之前建议先用Get-EsxSoftwarePackage看看VIB版本号确认兼容了再注入。3.4 注意事项校验和、兼容性、证书拿到depot文件后第一件事不是着急上传而是校验文件的完整性。VMware官网下载页面会提供SHA256校验值你可以用Get-FileHashPowerShell、sha256sumLinux或certutil -hashfileWindows自带工具来验证。这一步能筛掉99%的“下载文件损坏导致升级失败”问题。我见过太多人因为文件大小不对就盲目导入最后升级到一半报错反而更浪费时间。另外一定要确认当前主机的硬件型号和驱动版本符合厂商兼容性列表。虽然depot升级不会像全新安装那样严格检查每个硬件但升级后个别硬件驱动可能会失效尤其是旧款网卡。所以升级前最好在厂商官网搜索该机型在ESXi 7.0U3v下的驱动版本如果有新驱动一并准备好。证书问题也很常见vCenter导入depot时如果补丁包没有有效的VMware签名证书系统会拒绝导入。通常从官网下载的depot都自带签名但如果你从非官方渠道下载就很可能遇到证书报错。我不建议用--no-sig-check这种跳过校验的骚操作除非你确实知道自己在干什么并且完全信任补丁来源。4. 安装与升级过程中的高频问题排查4.1 Web界面无法登录、证书状态异常升级后重启最让人抓狂的问题就是Web界面打不开了。浏览器弹出“无法访问此页面”但主机IP能ping通SSH也能连上。这种多半是Web服务或者证书的问题。ESXi 7.0的Web管理界面依赖几个核心服务rhttpproxy、vpdc、loxrdp。升级后这些服务有时会因为配置冲突而启动失败。你先SSH到主机执行/etc/init.d/hostd status和/etc/init.d/vpxa status看看状态如果没启动就手动启动。更常见的是证书过期问题ESXi主机的默认证书有效期为10年但如果你经常重置时间或者做过快照回滚会导致证书有效期变成负数。这时可以用/etc/init.d/ssh restart不影响什么但web界面提示“主机证书状态”异常还是要去管理界面里重新生成证书。命令如下/sbin/auto-backup.sh rm -f /etc/vmware/ssl/rui.key /etc/vmware/ssl/rui.crt /sbin/generate-cert.sh /etc/init.d/hostd restart /etc/init.d/vpxa restart注意执行完后要重新打开Web页面浏览器如果缓存了旧证书记得强制刷新或清除缓存否则你还会看到“您的连接不是私密连接”的警告。4.2 许可证评估模式与密钥处理很多人在升级完发现vCenter或ESXi提示“您当前正在评估模式下使用ESXi。此许可证将在60天后过期。”慌得以为系统出问题了。这其实是因为升级不会保留原有的许可证密钥默认会回到评估模式。解决办法也很简单在“管理”-“许可证”里输入你已有的密钥即可。如果你用的是vCenter统一管理可以给主机分配vCenter里的许可证。这里我想多说一句升级前最好先导出所有主机的许可证信息。不少公司在初装时把许可证随便填到后面没人记得哪台主机用的哪个key。升级完去VMware官网登录账号也可以在“客户连接”页面查到相关的许可证历史但不如自己提前记录来得方便。另外ESXi 7.0的许可证密钥格式是类似VMware vSphere 7 Enterprise Plus的字符串不要弄丢否则一旦过期虚拟机还可以运行但无法重启也无法进行管理操作场景非常尴尬。4.3 升级后网络无法联通、找不到存储的原因这个问题更隐蔽。ESXi从6.7升到7.0U3v之后有时IP能通但是vSwitch里的虚拟机网卡全部不通或者管理网络闪断。通常原因是升级后各网卡负载均衡策略或驱动发生了变化导致原有的端口绑定NIC Teaming失效。你在网络适配器页面会看到所有物理网卡状态正常但流量就是不通。解决方法是检查vSwitch的属性确认负载均衡策略如基于IP哈希/基于源端口的口号是否被意外重置。还有一种常见于新服务器的场景驱动名称变了比如vmxnet3变成了nmlx5_core那么你的分布式交换机有可能无法识别端口。这种情况下老老实实把vSwitch换回标准交换机或者升级驱动的VIB包。存储找不到的情况一般是兼容层引起的。升级后部分HBA卡驱动被新版本替代或者EMC CLARiiON/NetApp的插件没有跟着迁移。登录ESXi命令行执行esxcli storage core adapter list看看是否有FC或iSCSI适配器被识别为未知设备。通常处理方式是重新安装厂商的存储插件或者检查MPIO为“VMW_SATP_ALUA”的路径是否正常。如果只是状态异常但底层路径还好可以用esxcli storage core claimrule load重新加载声明规则。这招能解决很多存储掉线问题但前提是底层的存储通信没有中断。4.4 虚拟机故障排查技巧升级后主机的网络和存储都正常了但部分虚拟机起不来。最常见的原因有两个一是虚拟机的虚拟硬件版本太高或太低。如果你用过vCenter的跨版本升级之前从6.7升到7.0时可能有些虚拟机硬件版本是15、16但ESXi 7.0U3v默认支持的硬件版本是最高20取决于客户机操作系统不兼容的版本会在打开电源时直接报错“不支持或无效的虚拟硬件版本”。解决办法是在虚拟机关机的状态下用vSphere Web Client里的“虚拟机兼容性”升级一次硬件版本。但注意一旦升级到比所有主机都高的版本低版本的主机就再也不能打开它了。另一个老生常谈的问题虚拟机驱动与宿主机的VMXNET3、PVSCSI驱动不匹配。升级前如果虚拟机用的是旧式E1000网卡升级后性能会下降。我建议把虚拟机网卡改成VMXNET3磁盘控制器改成PVSCSI前提是客户机已经安装了对应的VMware Tools。如果你在升级前没更新Tools可能会导致虚拟机无法识别新虚拟设备开机进系统后蓝屏或黑屏。记住一个操作顺序先升级VMware Tools再升级虚拟机硬件版本最后升级宿主机补丁。这个顺序搞反了虚拟机出问题的概率会很高。我个人在实际操作中的体会是使用depot升级ESXi最怕的不是下载不到包而是升级前不做环境检查。很多问题看似是升级失败引起的其实根源都在于硬件驱动不兼容或证书状态异常。所以我每次接收一个离线depot包都会先花十分钟验证SHA256再查看当前主机的驱动版本然后才动手导入。这种谨慎的习惯帮我在过去几年里避免了不少次生产环境的意外。最后再分享一个小技巧升级前用esxcli system version get记录当前版本升级后用同样的命令对比如果版本号显示7.0.0-build-24723872那就说明升级成功了。这个动作虽然简单但在验收报告里非常有用也是很多甲方项目验收时必看的证据。本文还有配套的精品资源点击获取
返回列表