您可以手動關閉整個 vSAN 叢集,以執行維護或疑難排解。

除非您的工作流程需要手動關閉,否則請使用 [關閉叢集] 精靈。手動關閉 vSAN 叢集時,請勿在叢集上停用 vSAN

備註: 如果您具有 vSphere with Tanzu 環境,則在關閉或啟動元件時,必須遵循指定的順序。如需詳細資訊,請參閱 《VMware Cloud Foundation 作業指南》中的〈關閉和啟動 VMware Cloud Foundation〉。

程序

  1. 關閉 vSAN 叢集。
    1. 檢查 vSAN 健全狀況服務,以確認叢集狀況良好。
    2. 在 vCenter Server 未裝載於 vSAN 叢集時,關閉該叢集中正在執行的所有虛擬機器 (VM)。如果 vCenter Server 裝載於 vSAN 叢集中,請不要關閉 vCenter Server 使用的 vCenter Server 虛擬機器或服務虛擬機器 (例如 DNS、Active Directory) 的電源。如果在 vSAN 叢集中啟用了檔案服務,請不要關閉「vSAN 檔案服務節點 (x)」虛擬機器的電源。
    3. 按一下設定索引標籤,然後關閉 HA。如此一來,該叢集便不會將主機關閉登錄為故障。

      對於 vSphere 7.0 U1 及更新版本,請啟用 vCLS 撤回模式。如需詳細資訊,請參閱 VMware 知識庫文章,網址為:https://kb.vmware.com/s/article/80472

    4. 確認所有重新同步工作均已完成。
      按一下 監控索引標籤,然後選取 vSAN > 重新同步物件
    5. 如果 vCenter Server 裝載於 vSAN 叢集,請關閉 vCenter Server 虛擬機器的電源。
      記下執行 vCenter Server 虛擬機器的主機。它是您必須重新啟動 vCenter Server 虛擬機器所在的主機。
    6. 在叢集中的 ESXi 主機上執行下列命令,以停用叢集成員從 vCenter Server 的更新。確保在所有主機上執行下列命令。
      esxcfg-advcfg -s 1 /VSAN/IgnoreClusterMemberListUpdates
    7. 登入叢集中除了見證主機以外的任何主機。
    8. 僅在該主機上執行下列命令。如果同時在多個主機上執行命令,可能會導致競爭情形,進而造成非預期的結果。
      python /usr/lib/vmware/vsan/bin/reboot_helper.py prepare

      命令會傳回並列印下列內容:

      叢集準備已完成。
      備註:
      • 該命令成功完成後,叢集會進行完整磁碟分割。
      • 如果發生錯誤,請根據錯誤訊息解決問題,然後再次嘗試啟用 vCLS 撤回模式。
      • 如果叢集中有狀況不良或已中斷連線的主機,請移除這些主機,然後重試命令。
    9. 將所有主機置於具有無動作的維護模式。如果 vCenter Server 已關閉電源,請使用下列命令將 ESXi 主機置於具有無動作的維護模式。
      esxcli system maintenanceMode set -e true -m noAction
      在所有主機上執行此步驟。
      若要避免同時在多台主機上使用 無動作,接著將多台主機同時重新開機時造成資料無法使用的風險,請參閱 VMware 知識庫文章,網址為 https://kb.vmware.com/s/article/60424。若要使用內建工具將叢集中的所有主機同時重新開機,請參閱 VMware 知識庫文章,網址為 https://kb.vmware.com/s/article/70650
    10. 所有主機均成功進入維護模式後,請執行任何必要的維護工作,並關閉主機的電源。
  2. 重新啟動 vSAN 叢集。
    1. 開啟 ESXi 主機的電源。
      ESXi 安裝所在的實體機箱開啟電源。 ESXi 主機在啟動後會尋找虛擬機器,並正常運作。
      如果有任何主機無法重新啟動,您必須手動復原這些主機,或將有問題的主機移出 vSAN 叢集外。
    2. 如果所有主機在開啟電源後都恢復正常,請將所有主機退出維護模式。如果 vCenter Server 已關閉電源,請在 ESXi 主機上使用下列命令,以退出維護模式。
      esxcli system maintenanceMode set -e false
      在所有主機上執行此步驟。
    3. 登入叢集中除了見證主機以外的其中一個主機。
    4. 僅在該主機上執行下列命令。如果同時在多個主機上執行命令,可能會導致競爭情形,進而造成非預期的結果。
      python /usr/lib/vmware/vsan/bin/reboot_helper.py recover

      命令會傳回並列印下列內容:

      已成功完成叢集重新開機/電源開啟!
    5. 在每個主機上執行下列命令,以確認叢集中的所有主機均可供使用。
      esxcli vsan cluster get
    6. 在叢集中的 ESXi 主機上執行下列命令,以啟用 vCenter Server 的叢集成員更新。確保在所有主機上執行下列命令。
      esxcfg-advcfg -s 0 /VSAN/IgnoreClusterMemberListUpdates
    7. 如果 vCenter Server 虛擬機器已關閉電源,請將其重新啟動。等待 vCenter Server 虛擬機器開啟電源並開始執行。若要停用 vCLS 撤回模式,請參閱 VMware 知識庫文章,網址為 https://kb.vmware.com/s/article/80472
    8. 在每個主機上執行下列命令,以再次確認所有主機皆參與 vSAN 叢集。
      esxcli vsan cluster get
    9. 透過 vCenter Server 重新啟動剩餘的虛擬機器。
    10. 檢查 vSAN 健全狀況服務,並解決任何待處置的問題。
    11. (選用) 如果 vSAN 叢集已啟用 vSphere 可用性,則必須手動重新啟動 vSphere 可用性,以避免發生下列錯誤:找不到 vSphere HA 主要代理程式
      若要手動重新啟動 vSphere 可用性,請選取 vSAN 叢集,並導覽至:
      1. 設定 > 服務 > vSphere 可用性 > 編輯 > 停用 vSphere HA
      2. 設定 > 服務 > vSphere 可用性 > 編輯 > 啟用 vSphere HA
  3. 如果叢集中有狀況不良或已中斷連線的主機,請從 vSAN 叢集中復原或移除主機。務必在 vSAN 健全狀況服務顯示所有可用的主機皆處於綠色狀態之後,再重試上述命令。
    如果您有三節點的 vSAN 叢集,則在一個主機發生故障的情況下,命令 reboot_helper.py recover 便無法正常運作。請以管理員身分執行下列操作:
    1. 從單點傳播代理程式清單中暫時移除失敗主機資訊。
    2. 在執行下列命令後新增主機。
      reboot_helper.py recover
    以下是在 vSAN 叢集中移除和新增主機的命令:
    #esxcli vsan cluster unicastagent remove -a <IP Address> -t node -u <NodeUuid>
    #esxcli vsan cluster unicastagent add -t node -u <NodeUuid> -U true -a <IP Address> -p 12321