容錯移轉叢集維護程序
適用于:Azure Stack HCI 版本 22H2 和 21H2;Windows Server 2022、Windows Server 2019、Windows Server 2016
本文假設您需要關閉實體伺服器的電源來執行維護,或基於其他原因進行重新開機。 若要在 Azure Stack HCI 叢集上安裝更新,而不讓伺服器離線,請參閱更新 Azure Stack HCI 叢集。
使伺服器離線以進行維護時,需要讓容錯移轉叢集內所有伺服器之間共用部分的儲存體離線。 這需要暫停您想要離線的伺服器、將伺服器的磁碟置於維護模式、將叢集角色和虛擬機器 (VM) 移至叢集中的其他伺服器,並確認叢集中的其他伺服器上可使用所有資料。 此程序可確保資料在維護期間都保持安全,且可供存取。
您可以使用 Windows Admin Center 或 PowerShell 將伺服器離線以進行維護。 本主題將討論這兩種方法。
使用 Windows Admin Center 讓伺服器離線
讓伺服器離線的最簡單準備方式,就是使用 Windows Admin Center。
確認伺服器可以安全地離線
使用 Windows Admin Center,連線到您想要離線的伺服器。 從 [工具] 功能表中選取 [儲存體] > [磁碟],然後確認每個虛擬磁碟的 [狀態] 資料行顯示為 [線上]。
然後,選取 [儲存體] > [磁碟區],並確認每個磁碟區的 [健全狀況] 資料行顯示 [良好],且每個磁碟區的 [狀態] 資料欄都顯示 [確定]。
暫停和清空伺服器
在關閉或重新開機伺服器之前,您應該暫停伺服器,並清空 (移轉) 任何叢集角色,例如在上面執行的 VM。 請務必先暫停並清空叢集伺服器,再進行離線維護。
使用 Windows Admin Center 連線到叢集,然後從叢集管理員中的 [工具] 功能表選取 [計算] > [伺服器]。
選取 [清查]。 按一下您想要暫停和清空的伺服器名稱,然後選取 [暫停]。 您應該會看到下列提示:
暫停伺服器進行維護:確定要暫停伺服器嗎? 這會將工作負載 (例如虛擬機器) 移至叢集中的其他伺服器。
選取 [是] 以暫停伺服器並開始清空程序。 伺服器狀態會顯示為 [維護中,正在清空],而 Hyper-V 和 VM 等角色將立即開始即時移轉至叢集中的其他伺服器。 這可能需要數分鐘的時間。 在伺服器恢復之前,無法將任何角色新增至伺服器。 清空程序完成時,伺服器狀態會顯示為 [維護中,清空完成]。 作業系統會執行自動安全檢查,以確保能夠安全地繼續進行。 如果磁碟區狀況不良,它將會停止,並提醒您繼續執行並不安全。
關閉伺服器
一旦伺服器完成清空之後,您就可以安全地將其關閉以進行維護或重新開機。
警告
如果伺服器正在執行 Azure Stack HCI 20H2 版、Windows server 2019 或 Windows Server 2016,您必須先讓磁碟進入維護模式,然後再關閉伺服器,再將磁碟移出維護模式,接著將伺服器恢復到叢集中。
恢復伺服器
當您準備好讓伺服器再次開始裝載叢集角色和 VM 時,只要開啟伺服器、等候開機,然後使用下列步驟恢復伺服器即可。
在叢集管理員中,從左側的 [工具] 功能表選取 [計算] > [伺服器]。
選取 [清查]。 按一下您想要恢復的伺服器名稱,然後按一下 [恢復]。
叢集角色和 VM 將立即開始即時移轉至伺服器。 這可能需要數分鐘的時間。
等候儲存體重新同步
在伺服器恢復時,在無法使用時所發生的任何新寫入都需要重新同步。 這項作業會使用智慧型變更追蹤自動進行。 不需要掃描或同步處理「所有」資料,僅針對變更即可。 此程序會進行調整以減少對於生產工作負載造成的影響。 根據伺服器暫停的時間以及寫入的新資料量而定,同步可能需要幾分鐘的時間才能完成。
重要
您必須等候重新同步完成,才能讓叢集中的任何其他伺服器離線。
若要檢查儲存體重新同步是否已完成:
- 使用 Windows Admin Center 連線到叢集,然後選取 [儲存體 > 磁片區]。
- 選取 [清查]。
- 檢查每個磁片區的 [狀態 ] 資料行。 如果顯示 [確定],則儲存體重新同步處理已完成。 現在可以放心地讓叢集中的其他伺服器離線。
使用 PowerShell 讓伺服器離線
使用下列程序,在容錯移轉叢集中使用 PowerShell 來妥善地暫停、清空和恢復伺服器。
確認伺服器可以安全地離線
若要確認您的所有磁碟區都狀況良好,請以系統管理員身分執行下列 Cmdlet:
Get-VirtualDisk
此輸出可能看起來會像以下的範例:
FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus Size FootprintOnPool StorageEfficiency
------------ --------------------- --------------------- ----------------- ------------ ---- --------------- -----------------
Mirror II Mirror 1 OK Healthy 4 TB 8.01 TB 49.99%
Mirror-accelerated parity OK Healthy 1002 GB 1.96 TB 49.98%
Mirror Mirror 1 OK Healthy 1 TB 2 TB 49.98%
ClusterPerformanceHistory Mirror 1 OK Healthy 24 GB 49 GB 48.98%
確認每個磁碟區的 HealthStatus 屬性都是 Healthy,且 OperationalStatus 顯示 OK。
若要使用容錯移轉叢集管理員來執行此操作,請移至 [儲存體]>[磁碟]。
暫停和清空伺服器
使用系統管理員身分執行下列 Cmdlet,以暫停和清空伺服器:
Suspend-ClusterNode -Drain
若要在容錯移轉叢集管理員中執行此動作,請移至 \[節點\],在節點上按滑鼠右鍵,然後選取 \[暫停\]\[清空角色\]。
如果伺服器正在執行 Azure Stack HCI 21H2 版或 Windows server 2022,則暫停和清空伺服器也會讓伺服器的磁碟進入維護模式。 如果伺服器正在執行 Azure Stack HCI 20H2 版、Windows server 2019 或 Windows Server 2016,您必須手動執行這項操作 (請參閱下一個步驟)。
使裝置進入維護模式
在 Azure Stack HCI 20H2 版、Windows server 2019 和 Windows Server 2016 中,使伺服器的磁碟進入維護模式,讓儲存空間直接存取進行排清和認可資料,以確保伺服器關機不會影響應用程式狀態。 一旦磁碟進入維護模式,就不會再允許寫入。 若要將儲存體重新同步時間降到最低,建議您在重新開機前使磁片進入維護模式,並在系統備份時立即離開維護模式。
注意
如果伺服器正在執行 Azure Stack HCI 21H2 版或 Windows server 2022,您可以略過此步驟,因為當伺服器暫停和清空時,磁碟會自動進入維護模式。 這些作業系統有細微的修復功能,可加快重新同步,並減少對系統和網路資源上的影響,以便同時完成伺服器和儲存體的維護作業。
如果伺服器正在執行 Windows server 2019 或 Azure Stack HCI 20H2 版,請以系統管理員身分執行下列 Cmdlet:
Get-StorageScaleUnit -FriendlyName "Server1" | Enable-StorageMaintenanceMode
如果伺服器是執行 Windows Server 2016,請改為使用下列語法:
Get-StorageFaultDomain -Type StorageScaleUnit | Where-Object {$_.FriendlyName -eq "Server1"} | Enable-StorageMaintenanceMode
關閉伺服器
伺服器完成清空之後,在 PowerShell 和容錯移轉叢集管理員中會顯示為 [已暫停]。
您現在可以使用 Stop-Computer
或 Restart-Computer
PowerShell Cmdlet,或是容錯移轉叢集管理員來安全關閉伺服器或重新開機伺服器。
注意
在關閉或啟動/停止叢集服務的伺服器上執行 Get-VirtualDisk
命令時,伺服器的運作狀態可能會報告為不完整或降級,而 [健全狀態] 資料行可能會列出警告。 這是正常現象,因此應該不會造成問題。 所有的磁碟區仍保持連線且可存取。
將磁碟移出維護模式
如果伺服器正在執行 Azure Stack HCI 20H2 版、Windows server 2019 或 Windows Server 2016,則您必須先停用磁碟上的存放裝置維護模式,然後再將伺服器恢復到叢集中。 若要將儲存體重新同步時間降到最低,建議您在系統備份時立即將其移出維護模式。
注意
如果伺服器正在執行 Azure Stack HCI 21H2 版或 Windows server 2022,您可以略過此步驟,因為當伺服器恢復時,磁碟會自動移出維護模式。
如果伺服器正在執行 Windows server 2019 或 Azure Stack HCI 20H2 版,請使用系統管理員身分執行下列 Cmdlet 以停用儲存體的維護模式:
Get-StorageScaleUnit -FriendlyName "Server1" | Disable-StorageMaintenanceMode
如果伺服器是執行 Windows Server 2016,請改為使用下列語法:
Get-StorageFaultDomain -Type StorageScaleUnit | Where-Object {$_.FriendlyName -eq "Server1"} | Disable-StorageMaintenanceMode
恢復伺服器
將伺服器恢復到叢集中。 若要傳回先前在伺服器上執行的叢集角色和 VM,請使用選擇性 -Failback 旗標:
Resume-ClusterNode –Failback Immediate
若要在容錯移轉叢集管理員中執行此動作,請移至 \[節點\],在節點上按滑鼠右鍵,然後選取 \[繼續\]\[容錯回復角色\]。
伺服器恢復後,就會在 PowerShell 和容錯移轉叢集管理員中顯示為 Up。
等候儲存體重新同步
當伺服器恢復時,您必須等候重新同步完成,才能讓叢集中的任何其他伺服器離線。
以系統管理員身分執行下列 Cmdlet 來監視進度:
Get-StorageJob
如果重新同步處理已完成,您將不會獲得任何輸出。
以下是一些範例輸出,顯示重新同步 (修復) 作業仍在執行中:
Name IsBackgroundTask ElapsedTime JobState PercentComplete BytesProcessed BytesTotal
---- ---------------- ----------- -------- --------------- -------------- ----------
Repair True 00:06:23 Running 65 11477975040 17448304640
Repair True 00:06:40 Running 66 15987900416 23890755584
Repair True 00:06:52 Running 68 20104802841 22104819713
BytesTotal 資料行會顯示需要重新同步處理的儲存體數量。 PercentComplete 資料行會顯示進度。
警告
請務必等候這些修復工作完成後再將另一部伺服器離線。
在這段期間,您的磁碟區在 HealthStatus 下將會繼續顯示為 Warning,這是正常狀態。
例如,如果您在儲存體重新同步時使用 Get-VirtualDisk
Cmdlet,您可能會看到下列輸出:
FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
MyVolume1 Mirror InService Warning True 1 TB
MyVolume2 Mirror InService Warning True 1 TB
MyVolume3 Mirror InService Warning True 1 TB
一旦工作完成,請使用 Cmdlet 以再次確認磁碟區顯示為 \[Healthy\]。 以下是一些輸出範例︰
FriendlyName ResiliencySettingName OperationalStatus HealthStatus IsManualAttach Size
------------ --------------------- ----------------- ------------ -------------- ----
MyVolume1 Mirror OK Healthy True 1 TB
MyVolume2 Mirror OK Healthy True 1 TB
MyVolume3 Mirror OK Healthy True 1 TB
您現在可以放心地暫停並重新啟動叢集中的其他伺服器。
後續步驟
如需相關資訊,另請參閱:
- 儲存空間直接存取概觀 \(部分機器翻譯\)
- 更新 Azure Stack HCI 叢集