動(dòng)離線包安裝避坑:版本串、依賴與驗(yàn)證)
簡介VMware-Re-Driver 1.101.01 是面向 ESXi 管理員的一款 Realtek 網(wǎng)卡驅(qū)動(dòng)離線組件包基于 VMware Fling 渠道發(fā)布解決 ESXi 8.0 Update 3 及 9.x 以上版本無法識(shí)別 RTL8111、RTL8125、RTL8126、RTL8127 等 PCIe 網(wǎng)卡的問題覆蓋千兆、2.5G、5G 與萬兆速率適合在安裝 ESXi 后發(fā)現(xiàn)網(wǎng)卡不被支持的場景下快速補(bǔ)齊驅(qū)動(dòng)。該驅(qū)動(dòng)由 VMware 工程師 Wenchao 開發(fā)并非 Realtek 官方出品面向需要維護(hù) vSphere 宿主機(jī)網(wǎng)絡(luò)、制作離線安裝鏡像或排查網(wǎng)卡識(shí)別異常的運(yùn)維人員。整個(gè)資源包約 205KB、共 4 個(gè)文件以 1 個(gè) VIB 驅(qū)動(dòng)組件為核心配合 1 個(gè) zip 元數(shù)據(jù)壓縮包和 2 個(gè) xml 索引/校驗(yàn)文件結(jié)構(gòu)清晰可直接離線導(dǎo)入 ESXi 8.0U3/9.x 環(huán)境再通過軟件組件管理方式部署元數(shù)據(jù)壓縮包與索引文件可用于校驗(yàn)驅(qū)動(dòng)版本和供應(yīng)商標(biāo)識(shí)便于自動(dòng)化集成。目前已有 442 人學(xué)習(xí)/下載對使用 RTL8125 2.5GbE 等 Realtek 網(wǎng)卡的 ESXi 用戶有直接參考價(jià)值。包內(nèi) bootbank VIB 與元數(shù)據(jù)、索引文件完整記錄了驅(qū)動(dòng)的版本號(hào)、依賴關(guān)系和校驗(yàn)信息配合 esxcli 組件命令即可完成安裝、查詢與卸載省去自行編譯驅(qū)動(dòng)和排查兼容性的繁瑣工作可明顯提升網(wǎng)卡適配效率、降低排錯(cuò)成本。1. ESXi 驅(qū)動(dòng)包不是裝上就能收工版本串就是兼容邊界第一次在一臺(tái)跑著 ESXi 8.0 的存量機(jī)器上做驅(qū)動(dòng)替換時(shí)我差點(diǎn)因?yàn)橐粋€(gè)版本串栽跟頭。這個(gè) Re-Driver 離線包的文件名里寫著1.101.01-5vmw.800.1.0.20613240。乍一看是“驅(qū)動(dòng)版本號(hào)”但后半截5vmw.800.1.0.20613240其實(shí)對應(yīng)的是 ESXi 8.0 的某個(gè)基線補(bǔ)丁版本而不是驅(qū)動(dòng)自己的版本。ESXi 的驅(qū)動(dòng)包從來不是“解壓后點(diǎn)上一步”就能裝的東西。它要過簽名、過接受級(jí)別、過依賴鏈、過維護(hù)模式。哪一步?jīng)]對齊esxcli software vib install就會(huì)報(bào)一個(gè)看起來像玄學(xué)的錯(cuò)誤。這篇文章我把拆包、安裝、驗(yàn)證和回退的完整過程拆開講同時(shí)標(biāo)出哪些坑是每次都會(huì)踩的適合剛接手存量 ESXi 環(huán)境、又必須補(bǔ)某個(gè)設(shè)備驅(qū)動(dòng)的工程師。2. 拆包看貨先別裝版本串和依賴會(huì)比名字更誠實(shí)2.1 版本號(hào)里藏著哪一層兼容邊界文件名里VMware-Re-Driver-1.101.01-5vmw.800.1.0.20613240這段拆開看是三段信息1.101.01驅(qū)動(dòng)模塊自身的廠商版本。你要追蹤固件/驅(qū)動(dòng)功能變化時(shí)看這個(gè)。5vmw表示這個(gè) VIB 的打包角色是 VMware 側(cè)的 vmkernel 模塊版本序列而不是原廠直接發(fā)布的驅(qū)動(dòng)。800.1.0.20613240800指 ESXi 8.0 分支1.0是基線構(gòu)建分支里的子版本20613240是構(gòu)建號(hào)。也就是說這個(gè)包做出來的時(shí)候是圍繞構(gòu)建號(hào)20613240對應(yīng)的 ESXi 8.0 基線來驗(yàn)證的。如果你機(jī)器上是8.0.0的早期構(gòu)建比如20502297之類驅(qū)動(dòng)大概率能裝但“能裝”和“被驗(yàn)證過”是兩回事。我在日常操作中默認(rèn)一條規(guī)則構(gòu)建號(hào)差得越遠(yuǎn)裝之前越要把第 2.2 節(jié)里說的依賴檢查走一遍。不要只看驅(qū)動(dòng)版本號(hào)大或小ESXi 對 vmkernel 模塊的依賴比對驅(qū)動(dòng)版本更敏感。2.2 解包后先看三個(gè)文件比信任作者更重要拿到離線包實(shí)際是個(gè) zip 或 vib 文件后我第一件事不是在主機(jī)上安裝而是復(fù)制到本地臨時(shí)目錄拆開看。mkdir -p /tmp/re-driver-check cd /tmp/re-driver-check unzip -l /vmfs/volumes/datastore1/patch/re-driver-1.101.01-5vmw.800.1.0.20613240.zip | head -40這個(gè)命令只做列目錄不實(shí)際解壓目的是先確認(rèn)包內(nèi)是不是標(biāo)準(zhǔn)的offline bundle目錄結(jié)構(gòu)頂層有metadata.zip里面是VIB明細(xì)。你還會(huì)看到類似payload的部分那才是驅(qū)動(dòng)實(shí)際文件。我的習(xí)慣是真正解開一次unzip -q re-driver-1.101.01-5vmw.800.1.0.20613240.zip -d bundle find bundle -maxdepth 3 -type f | sort | head -80重點(diǎn)看三個(gè)文件位置。metadata.zip里的 VIB 描述文件寫明了驅(qū)動(dòng)名、版本、依賴、廠商。解包 VIB 之后的/etc/vmk*或模塊.ko文件確認(rèn)是不是你設(shè)備對應(yīng)的那個(gè)型號(hào)。如果包里有README或release notes形式的文本往往寫得比命令行輸出更誠實(shí)。檢查完畢再用腳本把依賴和接受級(jí)別一次抓出來import zipfile, re with zipfile.ZipFile(bundle/metadata.zip) as mz: content mz.read(metadata.xml).decode(utf-8, errorsignore) for tag in [name, vendor, version, acceptance-level]: m re.search(r%s(.*?)/%s % (tag, tag), content) if m: print(f{tag}: {m.group(1)})這段腳本的意圖是把 VIB 的核心屬性先打印出來。name會(huì)在后面的 install/remove 命令里反復(fù)用到一旦你復(fù)制錯(cuò)名字esxcli會(huì)直接告訴你找不到這個(gè) VIB。acceptance-level則是這樣一個(gè)東西它低了不行高了又裝不進(jìn)去后面第 5 章會(huì)專門講。2.3 驗(yàn)證簽名、接受級(jí)別和依賴鏈解包后我不會(huì)立刻裝。ESXi 主機(jī)上原生離線包通常有簽名但如果這個(gè) Re-Driver 是個(gè)人或第三方重新打包的簽名狀態(tài)往往是Signed-Unknown甚至?xí)@示--。沒關(guān)系關(guān)鍵是接受級(jí)別。查看主機(jī)接受級(jí)別esxcli software acceptance get常見返回值是PartnerSupported或CommunitySupported。如果你主機(jī)當(dāng)前是PartnerSupported而新 VIB 的接受級(jí)別是CommunitySupported安裝會(huì)直接失敗。這時(shí)要改esxcli software acceptance set --levelCommunitySupported這個(gè)命令把主機(jī)接受級(jí)別降級(jí)到社區(qū)支持級(jí)別。注意這是全局動(dòng)作改完后這臺(tái)主機(jī)之后也能接任何社區(qū)級(jí)別驅(qū)動(dòng)所以對生產(chǎn)環(huán)境要謹(jǐn)慎。改完再跑一次安裝的--dry-runesxcli software vib install -d /vmfs/volumes/datastore1/patch/re-driver-1.101.01-5vmw.800.1.0.20613240.zip --dry-run--dry-run是所有人都應(yīng)該先跑的一步。它會(huì)告訴你依賴是否滿足、是否要?jiǎng)?libs 或現(xiàn)有模塊、會(huì)不會(huì)影響當(dāng)前運(yùn)行中的 VM。我看到The following VIBs will be installed這一類輸出時(shí)才會(huì)決定繼續(xù)。3. 三種安裝路徑離線包、VIB 直裝、鏡像集成3.1 離線包方式存量主機(jī)最穩(wěn)的選擇對已有生產(chǎn)數(shù)據(jù)的 ESXi 主機(jī)我優(yōu)先選離線包方式前提是包本身是 zip 形態(tài)。命令很直接esxcli software vib install -d /vmfs/volumes/datastore1/patch/re-driver-1.101.01-5vmw.800.1.0.20613240.zip \ --maintenance-mode --no-sig-check --force說下參數(shù)各自的含義。-d表示 d 來自 depot/離線包specifies 包內(nèi)可能包含多個(gè) VIB。單獨(dú)裝一個(gè) VIB 時(shí)用-v但這里的 Re-Driver 文件在壓縮包里用-d更合理。--maintenance-mode的含義是我手動(dòng)確認(rèn)主機(jī)已經(jīng)進(jìn)入維護(hù)模式并通知了集群esxcli 不再提醒。--no-sig-check是針對部分第三方重打簽名的包如果包簽名完整建議去掉這個(gè)參數(shù)。--force這個(gè)參數(shù)我放置的很保守只有當(dāng)你確認(rèn)包內(nèi)某模塊會(huì)和已有模塊重名時(shí)才加。加了 force 等于告訴 esxcli “出問題我自己負(fù)責(zé)”不能不加判斷亂用。跑完后立即檢查返回值返回 0 不代表模塊已經(jīng)生效只代表 VIB 寫進(jìn)了 bootbank等維護(hù)窗口的 reboot 才會(huì)真正加載。3.2 VIB 直裝方式單包要快就裝它如果你拿到的不是 zip而是單獨(dú)的.vib文件那用-vesxcli software vib install -v /tmp/re-driver-1.101.01.vib \ --maintenance-mode --no-sig-check-v的語義是“指定一個(gè)具體的 vib”比-d更精確。好處是安裝目標(biāo)明確出錯(cuò)信息通常也能直接指到某個(gè) VIB。但要注意這個(gè)命令一樣不會(huì)實(shí)時(shí)加載模塊。它把 VIB 持久化到系統(tǒng)盤的 bootbank然后告訴你 “請重啟主機(jī)” 或 “需要重新引導(dǎo)”。所以在裝完 VIB 到重啟之間主機(jī)會(huì)處于一個(gè)很微妙的中間狀態(tài)包已經(jīng)落盤但老驅(qū)動(dòng)還在跑。如果這時(shí)候主機(jī)因?yàn)槠渌蝈礄C(jī)重啟新驅(qū)動(dòng)會(huì)生效而老驅(qū)動(dòng)的配置狀態(tài)可能對不上因此我一般會(huì)在裝完和重啟之間順手抓一份當(dāng)前esxcli software vib list和vSphere Web Client里的配置快照。3.3 鏡像集成換機(jī)/新裝時(shí)省一次折騰如果你準(zhǔn)備換一臺(tái)機(jī)器或重裝那不必先裝 ESXi 再裝驅(qū)動(dòng)可以把 Re-Driver 打進(jìn)安裝鏡像。常見做法是把離線 zip 解包到鏡像配置文件里再將 profile 導(dǎo)出為可引導(dǎo)鏡像。命令行工具鏈的做法大致是這樣esxcli software sources vib list --depot/path/re-driver-1.101.01-5vmw.800.1.0.20613240.zip先確認(rèn)包里 VIB 的名字。如果能看到re-driver這個(gè)名稱把它加到一個(gè)新 profileesxcli software profile create --help輔助構(gòu)建鏡像時(shí)也可以在 esxcli 之外手動(dòng)改boot.cfg增加模塊但那個(gè)操作對新手風(fēng)險(xiǎn)大。我更推崇 profile 方式。一個(gè) profile 可以看作“安裝腳本 驅(qū)動(dòng)包集合”把 Re-Driver 放進(jìn)去后續(xù)在任何同構(gòu)建號(hào)主機(jī)上裝機(jī)都會(huì)自動(dòng)帶上。鏡像集成的最大收益不是省那一兩個(gè)命令而是避免“裝完系統(tǒng)發(fā)現(xiàn)網(wǎng)卡不識(shí)別、只能又靠本地控制臺(tái)上傳驅(qū)動(dòng)包”的尷尬循環(huán)。4. 裝完別信屏幕驗(yàn)證驅(qū)動(dòng)活沒活4.1 從 VIB 列表確認(rèn)安裝狀態(tài)重啟之后先做的事不是開 Web 界面而是登錄命令行確認(rèn) VIB 狀態(tài)。esxcli software vib list | grep -i re-driver輸出里能看到Name,Version,Vendor,Install Date和Status。Status 正常情況下是Installed。如果顯示Pending Reboot說明你重啟沒徹底或者 bootbank 寫入有問題。如果根本沒有這一行去設(shè)備引導(dǎo)日志里找原因大概率是 VIB 安裝時(shí)被回滾了。我還會(huì)跑一次esxcli software vib get --vibnamere-driver這會(huì)給出更細(xì)的信息Version要跟在離線包里看到的一致。如果顯示的是你沒預(yù)期到的舊版本說明包內(nèi)有過重復(fù) VIB或者你之前已經(jīng)裝了一個(gè)名字相近但版本不同的東西。4.2 在 dmesg 和模塊列表里找驅(qū)動(dòng)真的跑起來VIB 列表只能證明“裝上了”不能證明“加載了”。我一般在重啟后確認(rèn)模塊狀態(tài)esxcli system module list | grep -i re模塊列表里會(huì)有一列顯示當(dāng)前是否加載。如果狀態(tài)是 0表示模塊已加載。某些驅(qū)動(dòng)模塊還會(huì)在啟動(dòng)階段注冊 PCI 設(shè)備時(shí)打印一行日志用 dmesg 過濾更快dmesg | grep -i re-driver | tail -20在沒有日志輸出的云環(huán)境里我會(huì)用設(shè)備側(cè)的角度驗(yàn)證。如果這是一個(gè)網(wǎng)卡或存儲(chǔ)類驅(qū)動(dòng)重點(diǎn)看lspci里對應(yīng)設(shè)備是否帶上了驅(qū)動(dòng)信息以及鏈路是否亮。如果你是存儲(chǔ)控制器驅(qū)動(dòng)可以對比看esxcli storage core device list。這一步的價(jià)值在于有些第三方重打包驅(qū)動(dòng)會(huì)“偽成功”——模塊加載了卻未廣播給上層依賴服務(wù)。結(jié)果就是主機(jī)不宕機(jī)、群集也標(biāo)記正常但對應(yīng) PCIe 設(shè)備就是沒有從lspci的狀態(tài)里進(jìn)入可用狀態(tài)。你說它玄學(xué)其實(shí)是驗(yàn)證路徑?jīng)]走完。我的習(xí)慣是重啟后至少跑一遍第 4.2 節(jié)全部三個(gè)命令把輸出保存到本地。4.3 回退的姿勢和時(shí)機(jī)如果驗(yàn)證失敗馬上回退比修復(fù)更重要。esxcli software vib remove -n re-driver --maintenance-mode-n指定 VIB 名不填版本號(hào)esxcli 會(huì)根據(jù)當(dāng)前 bootbank 版本刪除。移除命令一旦執(zhí)行老驅(qū)動(dòng)也不會(huì)自動(dòng)回來。這里有一個(gè)關(guān)鍵點(diǎn)ESXi 的驅(qū)動(dòng)回退不是“卸了再裝舊的”而是“舊的 VIB 是否還在 bootbank 里可用”。如果你安裝新驅(qū)動(dòng)時(shí)使用了 force 方式覆蓋了舊的同名模塊那么移除新驅(qū)動(dòng)后舊模塊文件可能也被標(biāo)記為 obsolete而不是自動(dòng)恢復(fù)。所以回退的真正后悔藥是裝新驅(qū)動(dòng)前先手動(dòng)備份一下舊 VIB 文件。常見做法是把正在用的包導(dǎo)出為離線 zipesxcli software vib get --vibnamere-driver /tmp/re-driver-old.txt或者直接把/bootbank里對應(yīng)文件復(fù)制到數(shù)據(jù)存儲(chǔ)。這個(gè)備份成本很低卻能讓你在翻車時(shí)可以強(qiáng)制用離線包把舊版本裝回來。從那次以后我每次都會(huì)把 “先導(dǎo)出現(xiàn)狀再動(dòng)手術(shù)” 當(dāng)作默認(rèn)步驟。5. 避坑ESXi 驅(qū)動(dòng)安裝的五個(gè)真實(shí)翻車現(xiàn)場5.1 報(bào)錯(cuò) “not acceptable”接受級(jí)別沒對齊現(xiàn)象Error: The VIB re-driver VIB requires acceptance level CommunitySupported, but the host acceptance level is PartnerSupported原因主機(jī)當(dāng)前接受級(jí)別高于 VIB 的聲明級(jí)別。很多人會(huì)重打包驅(qū)動(dòng)時(shí)順手把 acceptance-level 寫成 PartnerSupported簽名又沒跟上結(jié)果安裝時(shí)會(huì)報(bào)這個(gè)錯(cuò)甚至直接找不到匹配的簽名。解決確認(rèn)包可信之后改主機(jī)接受級(jí)別然后重新安裝。生產(chǎn)環(huán)境要記錄變更原因因?yàn)檫@是全局豁免。改完之后再去esxcli software acceptance get確認(rèn)一下免得影響后續(xù)其他 VIB。5.2 掛在維護(hù)模式出不來遷移前的準(zhǔn)備沒做干凈現(xiàn)象執(zhí)行esxcli software vib install -d xxx.zip后主機(jī)長時(shí)間停在維護(hù)模式無法正常退出。部分環(huán)境還會(huì)出現(xiàn)虛擬機(jī)的 HA 重新注冊反復(fù)失敗。原因安裝過程中esxcli 會(huì)把相關(guān) VM 重新遷移或掛起。如果主機(jī)上有本地未共享存儲(chǔ)的 VM維護(hù)模式無法把這些 VM 遷走驅(qū)動(dòng)安裝流程只能等。少數(shù)情況下是 DRS 配置不完整導(dǎo)致一直有 VM 殘留。解決進(jìn)入維護(hù)模式前先確認(rèn)所有 VM 都有可遷移的共享存儲(chǔ)或在維護(hù)窗口直接關(guān)機(jī)。進(jìn)入維護(hù)模式后跑一下esxcli system maintenanceMode get看到當(dāng)前是ENABLED再裝驅(qū)動(dòng)。裝完確認(rèn)不會(huì)再有影響后esxcli system maintenanceMode set --disable。5.3 顯示已安裝但設(shè)備不生效依賴的模塊沒被加載現(xiàn)象VIB 狀態(tài)正常模塊 list 里能看到 re-driver但設(shè)備還是沒有驅(qū)動(dòng)狀態(tài)lspci里看不到對應(yīng)驅(qū)動(dòng)映射。原因驅(qū)動(dòng)模塊在 vmkernel 層通常依賴另一個(gè)模塊先加載。如果你的包只更新了主驅(qū)動(dòng)沒更新依賴的 lib 模塊或公共模塊加載順序就會(huì)錯(cuò)亂。這一類問題在官方驅(qū)動(dòng)上較少在重新打包的驅(qū)動(dòng)上很容易出現(xiàn)因?yàn)榇虬呓?jīng)常只打一個(gè)主干模塊漏掉配套的 lib。解決回到第 2.2 節(jié)看 metadata 里的依賴字段確認(rèn)包內(nèi)是否包含所有依賴。如果不包含先裝依賴包再裝主包。安裝順序不是萬能的如果兩個(gè) VIB 互相依賴ESXi 會(huì)在vib install時(shí)就提示沖突這時(shí)不要用 force 硬過需要先把依賴包拆開解包看到底哪個(gè)版本缺失。5.4 vib remove 失敗你知道它接下來想刪誰嗎現(xiàn)象Error: The update cannot be completed since the VIB re-driver depends on VIB xxx原因你以為自己在卸載 re-driver但 esxcli 在解析依賴關(guān)系時(shí)發(fā)現(xiàn)還有另一個(gè)包正在使用它的模塊。這通常發(fā)生在存儲(chǔ)或網(wǎng)絡(luò)驅(qū)動(dòng)上驅(qū)動(dòng)被上層服務(wù)直接引用。解決先esxcli software vib list | grep -i re看是否有同源的兄弟包。把上層服務(wù)對應(yīng)的包先停掉或移除再執(zhí)行 remove。如果依舊失敗用--force強(qiáng)行移除但必須在生產(chǎn)上確認(rèn)該設(shè)備不會(huì)再被使用。移除后及時(shí)看 dmesg避免因?yàn)槟K懸空帶動(dòng)內(nèi)核異常。5.5 重啟后回到解放前bootbank 和模塊參數(shù)沒保存現(xiàn)象安裝時(shí)一切正常重啟后 VIB 狀態(tài)是Installed但實(shí)際設(shè)備又變回未驅(qū)動(dòng)狀態(tài)或者模塊加載順序每次都不一樣。原因常見兩個(gè)因素。一是安裝時(shí)用了-v直接裝進(jìn)控制臺(tái)系統(tǒng)盤但 U 盤啟動(dòng)環(huán)境沒寫干凈重啟后 bootbank 用的是默認(rèn)鏡像。二是驅(qū)動(dòng)帶參數(shù)而參數(shù)沒有寫入持久化配置。解決先確認(rèn)系統(tǒng)啟動(dòng)卷是否健康esxcli software vib list如果能看到 VIB 且狀態(tài) OK那 bootbank 寫入成功。如果 VIB 確實(shí)在但模塊每次都不加載檢查持久化配置esxcli system module parameters list | grep -i re-driver沒有輸出時(shí)需要把模塊參數(shù)寫進(jìn)/etc/vmware/esx.conf對應(yīng)節(jié)點(diǎn)。注意這個(gè)文件在重啟后會(huì)被重新生成最穩(wěn)妥的做法是重新跑一次esxcli system module parameters set設(shè)置參數(shù)。從那以后我只要碰到重啟丟配置的主機(jī)都會(huì)先看模塊參數(shù)實(shí)在不行就重啟后再補(bǔ)一次參數(shù)再設(shè)置一遍確認(rèn) esx.conf 里有殘留。6. 把驅(qū)動(dòng)續(xù)到下一次升級(jí)固化檢查腳本6.1 升級(jí)前與升級(jí)后都要跑的 checklist升級(jí) ESXi 補(bǔ)丁是最容易丟掉自定義 VIB 的地方。你升級(jí)前裝好的 re-driver在基線切換后很可能仍在 rubric 里但內(nèi)核模塊版本對不上構(gòu)建號(hào)。所以我每次升級(jí)前都會(huì)備份 VIB 列表esxcli software vib list --export /tmp/vib-export.json esxcli software profile get /tmp/profile-get.txt升級(jí)后第一件事對一下版本確認(rèn) re-driver 是不是真的還匹配當(dāng)前 profile。如果匹配什么都不用做如果不匹配用舊的離線包重裝一次。6.2 一條命令循環(huán)把補(bǔ)裝寫成可重復(fù)執(zhí)行的腳本我常用一個(gè)很短的腳本完成“檢測缺失 - 安裝 - 驗(yàn)證”。不是自動(dòng)化平臺(tái)而是把固定動(dòng)作壓縮成一行命令減少手誤。#!/bin/sh VIBre-driver DEPOT/path/re-driver-1.101.01-5vmw.800.1.0.20613240.zip esxcli software vib list | grep -q ^$VIB || \ esxcli software vib install -d $DEPOT --maintenance-mode esxcli software vib list | grep ^$VIB腳本的含義很直白先檢測 VIB 是否已存在存在則跳過不存在才安裝。因?yàn)樯?jí)后 VIB 會(huì)消失所以這個(gè)腳本天然適合在每次升級(jí)后手動(dòng)執(zhí)行。我通常把它放在一個(gè)數(shù)據(jù)存儲(chǔ)路徑下比如/vmfs/volumes/datastore1/scripts/避免重裝系統(tǒng)時(shí)腳本也跟著丟。腳本里沒有加--dry-run因?yàn)檫@時(shí)候你已經(jīng)知道需要裝刻意模擬沒有意義。但它忽略了一個(gè)參數(shù)維護(hù)模式判斷。實(shí)際上更嚴(yán)謹(jǐn)?shù)膶懛ㄊ窃诎惭b前強(qiáng)制檢查維護(hù)模式狀態(tài)。我把這一條留給自己因?yàn)閷戇M(jìn)腳本后每次裝之前都必須人工盯一眼維護(hù)模式而不是讓腳本自動(dòng)退出否則會(huì)造成 VM 意外遷移。后來有一次我就是靠這個(gè)腳本快速在集群的另外三臺(tái)主機(jī)上補(bǔ)齊了同版本驅(qū)動(dòng)。從那以后我每次看到5vmw.800.1.0.20613240這個(gè)版本串都會(huì)先問一句你把這個(gè)包做成離線包時(shí)有沒有同步保留舊版本文件再問一句我這邊是不是真的所有主機(jī)的構(gòu)建號(hào)都在你說的這個(gè)基線上這兩句話能省掉后面一整晚的折騰。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取