修復 VMware 錯誤:虛擬機器磁碟需要整合

"VMware 虛擬機器磁碟需要整合"的錯誤通常發生在快照無法正確與主虛擬磁碟合併時。此問題常發生於備份未完成、取消刪除快照,或儲存空間不足的情況下。若未加以解決,可能會導致虛擬機器運作變慢,甚至有資料損毀的風險。閱讀這篇部落格文章,了解為何會出現"虛擬機器需要整合"的狀態,以及如何安全地解決此問題。

NAKIVO for VMware vSphere 備份

NAKIVO for VMware vSphere 備份

為 VMware vSphere 虛擬機器提供全面資料保護及快速還原選項。支援本地、異地及雲端的備份目標。具備防勒索軟體功能。

什麼是 VMware 磁碟整合?

虛擬磁碟整合是指將備份後所建立的虛擬磁碟檔案合併的過程 虛擬機器快照. 您可以視需要啟動磁碟整合,以避免效能下降及其他問題。當您建立快照時,系統會建立增量磁碟,並將變更寫入對應的增量磁碟(預設為最新的增量磁碟,直到選取其中一個先前快照來還原虛擬機器為止)。因此,虛擬機器的儲存空間中會存在冗餘資料,因為每個增量磁碟都包含相較於前一個增量磁碟狀態的所有變更,而原始磁碟則保持不變。

當快照鏈及相關虛擬磁碟檔案的規模過大時,系統效能便會下降。執行 VMware 磁碟整合時,增量磁碟中的資料會合併至單一磁碟中,且該虛擬機器檔案位置的資料存放區中將不會殘留任何重複資料。整合虛擬機器磁碟檔案後,儲存空間便會被清理。請注意,VMware 建議每台虛擬機器的快照數量不應超過 32 個。

VMware 磁碟整合錯誤的可能原因

需要整合 VMware 虛擬機器磁碟 虛擬機器中顯示錯誤訊息 摘要 的""分頁 VMware vSphere Client (如下圖所示)。出現此錯誤訊息的常見原因之一,是錯誤地刪除了虛擬機器快照,這可能會導致與快照相關的 VMDK 檔案及日誌檔案殘留在資料存放區中(例如,在您執行 Delete AllDelete (VM 快照的操作)。

The virtual machine consolidation needed status error is displayed in vSphere Client

最常見的原因是 需要進行虛擬機器整合 狀態:

  • VMFS 資料存放區的磁碟空間不足,無法整合虛擬機器快照及虛擬磁碟檔案。若資料存放區的可用空間少於 1 GB,可能會發生此錯誤。
  • 虛擬機器所運行之 ESXi 主機所連接的儲存系統效能不佳。若快照大小過大或發生超時,快照整合可能會失敗。
  • ESXi 主機與 vCenter 之間的連線問題。
  • 快照檔案被第三方應用程式(例如備份應用程式)鎖定。若備份應用程式未完成備份工作便鎖定了快照,便可能發生此情況(備份應用程式在執行備份時,可能會為虛擬機器建立臨時快照)。若不使用快照技術來建立正在運行的虛擬機器的一致性備份,備份應用程式將無法使磁碟進入靜止狀態。

基本上,您應該恢復虛擬機器磁碟檔案的一致性。

如何解決 VMware 磁碟整合錯誤?

為解決該 需要進行虛擬機器整合 狀態,請在 VMware vSphere Client 中右鍵點擊虛擬機器名稱,然後在彈出的選單中點擊 Snapshots > Consolidate.

VMware snapshot consolidate

系統會顯示一則確認訊息:

此操作將彙整您虛擬機器上的所有冗餘重做日誌。您確定要繼續嗎?

點擊 Yes 以確認並整合虛擬機器磁碟檔案。

Note: 若擔心在 VMware 磁碟整合過程中可能會遺失部分資料,請建立一個 VMware 虛擬機器備份 將所有虛擬機器檔案複製到資料存放區上的另一個資料夾,然後執行 VMware 磁碟整合。

請等待 VMware 磁碟整合完成且日誌清除後再進行操作。您可以在 VMware vSphere Client 介面底部的任務面板中查看任務進度。若虛擬機器正在運行,此操作期間虛擬機器的效能可能會下降。完成此操作所需的時間取決於虛擬機器的大小、快照數量以及虛擬機器的負載。

完成 VMware 磁碟整合任務後,該警告應會消失。

可能發生的其他錯誤

有時,在執行 VMware 磁碟整合時可能會發生另一種錯誤,並顯示以下錯誤訊息:

無法存取檔案,因為該檔案已被鎖定。在整合磁碟時發生錯誤:無法鎖定檔案。磁碟節點 ‘scsi0:0’ 的整合失敗.

當備份應用程式使用"熱添加磁碟"選項進行快照備份時,也會建立鎖定。虛擬機器檔案鎖定的目的,是為了避免多個 ESXi 主機同時對該檔案進行寫入操作。

請嘗試執行以下操作以解決此錯誤:

  1. 在虛擬機器所在的 ESXi 伺服器上重新啟動管理代理程式。開啟 ESXi 命令列介面 或透過 SSH 連線至 ESXi 主機,並以 root 身分執行該指令:

    services.sh restart

    /etc/init.d/hostd restart

    /etc/init.d/vpxa restart

    您也可以開啟 ESXi 直接主控台,前往 Troubleshooting Options 並選擇 Restart Management Agents (按 Enter 請啟用所需的選項,然後按下 F11 (以確認)。

  2. 請使用以下指令檢查被鎖定的檔案:

    vmfsfilelockinfo -p /vmfs/volumes/vm_datastore/vm_name/vm_name.vmx

  3. 若需確認虛擬機器檔案在資料存放區中的位置,請檢查 hostd 日誌檔案。

    cat /var/log/hostd.log |grep -i vm_name

  4. 當您知道虛擬機器檔案的位置時,請前往資料存放區中的虛擬機器目錄:

    cd /vmfs/volumes/datastore_name/vm_name

  5. 執行以下指令以列出正在鎖定虛擬機器檔案的 ESXi 主機:

    for i in `ls`; do vmfsfilelockinfo -p $i ;done|grep 'is locked in|Host owning the lock|Total time taken' | sed 's|Host owning the lock on file is||g'|sed 's|Total time|---|g' | awk '{print $1}' |uniq

  6. 重新啟動 ESXi 管理代理程式,包括 hostd 以及 vpxa 如上所述,或在鎖定虛擬機器檔案的 ESXi 主機上執行以下指令:

    /etc/init.d/hostd restart

    /etc/init.d/vpxa restart

解鎖 VM 檔案的另一種方法

此外,您也可以嘗試以下步驟來解決問題 整合磁碟時發生錯誤:無法鎖定檔案。

  1. 關閉虛擬機器。
  2. 為虛擬機器磁碟建立新的快照。
  3. 刪除所有現有的虛擬機器快照。在 vSphere Client 中右鍵點擊虛擬機器名稱,然後選擇 Snapshots 然後點擊 Delete All Snapshots.

    VMware delete snapshot

  4. 複製虛擬機器或將其遷移至另一台 ESXi 主機,方法是 vMotion 如果錯誤尚未修復。
  5. 請按照上述說明,再次嘗試整合快照。 

如果這些操作沒有幫助,請嘗試關閉虛擬機器,然後開啟 VM settings,選擇 VM options 選單頁籤,然後展開 Advanced 該區段並點擊 Edit Configuration. 在 設定參數 視窗,點擊 Add Configuration Params. 加入 asyncConsolidate.forceSync 參數,並將此參數設定為 TRUE

有時候 需要進行虛擬機器整合 此狀態可能是由於不一致所導致的 -ctk.vmdk 為…所建立的檔案 變更區塊追蹤 (可能是由虛擬機器備份軟體所造成)。請嘗試刪除 CTK 檔案,因為這些檔案在快照整合過程中並不需要。刪除 CTK 檔案前,請務必先備份虛擬機器檔案。接著,請再次嘗試整合虛擬機器磁碟檔案。

Editing VM configuration parameters

"合併"選項目前處於停用狀態

如果 VMware 合併快照 若選項呈灰色(不可用),表示虛擬機器上可能正在執行某個活動中的任務。若您看到 偵測到快照設定無效 發生錯誤,部分快照可能已損壞,或快照鏈可能已分裂。若發生此情況,請嘗試執行以下操作:

  1. 透過 SSH 連線至 ESXi 伺服器,並前往資料存放區中存放虛擬機器檔案的位置。

    cd vmfs/volumes/DatastoreName/VMFolderName

    您可以在 VMware vSphere Client 中查看虛擬機器檔案的位置,並透過檢視虛擬機器的設定來找出虛擬磁碟的位置。

  2. 確認目前指向哪些磁碟快照:

    cat VM-name.vmx | grep scsi*

    請參閱輸出內容以檢查虛擬磁碟檔案,包括虛擬磁碟快照檔案。例如,該行會顯示虛擬磁碟檔案的名稱。這不是快照:

    scsi 0:0.fileName = “VM-Name.vmdk”

    輸出列中會顯示虛擬磁碟快照檔案的名稱,且您正指向該快照:

    scsi 0:0.fileName = “VM-Name-000002.vmdk”

    在此範例中,虛擬機器配置中使用了 SCSI 虛擬磁碟控制器。

  3. 以下指令可檢查每個快照所指向的對象。請使用此指令來偵測快照鏈中,哪個快照指向下列磁碟檔案(快照 vmdk 檔案或基礎磁碟 vmdk 檔案)。

    cat VM-Name-000002.vmdk | grep parentFileNameHint

    您可能需要針對其他 VMDK 檔案再次執行此指令(例如 VM-Name-000001.vmdk (在此範例中)直到找到所需的基礎磁碟。此方法有助於您找出不一致之處。

  4. 如果您發現了不一致之處,例如, VM-Name-000002.vmdk 指向 VM-Name-000001.vmdk, 該檔案又指向 VM-Name.vmdk,請執行 vmkfstools 位於磁碟快照鏈的最高點(VM-Name-000002.vmdk (在此情況下):

    vmkfstools -q -v10 VM-Name-000002.vmdk

    此指令會嘗試開啟並關閉鏈中所有 VMDK 檔案,並在發生錯誤時通知您。

使用 PowerCLI

除了在 VMware vSphere Client 圖形使用者介面中執行 VMware 磁碟整合外,您也可以使用 vSphere PowerCLI 透過命令列介面。

  1. 連線至管理該 ESXi 主機的 vCenter Server,該主機上運行著含有 需要進行虛擬機器整合 狀態。系統提示時請輸入憑證。

    Connect-VIServer vcenter01.test.com

  2. 取得具有該 需要進行虛擬機器整合 狀態:

    Get-VM | Where-Object {$ _. Extensiondata.Runtime.ConsolidationNeeded}

  3. 執行 VMware 磁碟整合。

    Get-VM | Where-Object {$ . Extensiondata.Runtime.ConsolidationNeeded} | foreach {$ . ExtensionData.ConsolidateVMDisks_Task ()}

其他建議

在 VMware vSphere 7.0 中,當主機重新啟動時,使用者可能會遇到 CBT 服務無法啟動的問題。每次可能都需要手動啟動該服務。不過,此問題已在 vSphere 7 U3 中修復。如果您使用的是 vSphere 7.0,可以嘗試以下解決方案:

  1. 請確認 CBT 模組是否已啟用:

    esxcli system module list --enabled=true | grep cbt

  2. 請確認 CBT 模組是否已載入至 ESXi 主機:

    esxcli system module list --loaded=true | grep cbt

  3. 手動載入 CBT 模組:

    vmkload_mod cbt

如果備份應用程式鎖定了虛擬機器檔案,您可以重新啟動該 vpx 請在 ESXi 主機上執行此程序以協助解除鎖定。同時請嘗試從虛擬機器備份應用程式中移除虛擬磁碟。

與其進行虛擬機器遷移,您也可以關閉虛擬機器並重新啟動 ESXi 主機。接著,將主機從維護模式中移出以解除鎖定,並解決問題。

結論

需要進行虛擬機器整合 在 VMware 環境中,"狀態"問題雖常見但尚可妥善處理。透過了解錯誤成因,並採用正確的快照與備份做法,您便能維持健康且高效的虛擬基礎架構。請務必確認快照已刪除,並監控可用儲存空間,以防止問題再次發生。定期維護與主動監控有助於確保虛擬機器效能順暢,並提供可靠的数据保護。

試試看 NAKIVO Backup & Replication

試試看 NAKIVO Backup & Replication

立即申請免費試用,全面體驗本解決方案的所有資料保護特點。15 天免費試用。無功能或容量限制。無需提供信用卡資訊。

People also read