本文說明如何在 Windows Server 故障轉移叢集上手動安裝功能更新,而不停止工作負載。 此程式會在滾動升級中一次升級一個節點,通常稱為「滾動OS叢集升級」。
您可以將叢集的作業系統版本一次升級一個,例如從 Windows Server 2022 升級至 Windows Server 2025。 若要跨多個作系統版本升級,例如從 Windows Server 2016 升級至 Windows Server 2025,請再次執行本文中的步驟。
本文適用於執行 Hyper-V 虛擬機或向外延展文件伺服器 (SOFS) 工作負載的叢集升級一個 OS 版本,但不適用於使用虛擬硬碟 (.vhdx 檔案) 作為共用記憶體的叢集。 如果您使用 System Center Virtual Machine Manager (VMM),請參閱 在 VMM中執行 Hyper-V 主機叢集的滾動升級。 Azure 本機客戶應該使用 關於 Azure 本機升級中所述的更新程式,但如果沒有任何 Azure 本機更新方法可供您使用,則可以使用本文。
概觀
將叢集滾動升級至下一個較新版本的 Windows Server 提供下列優點:
- 將執行 Hyper-V 虛擬機或向外延展檔伺服器 (SOFS) 工作負載的叢集升級至下一個較新版本的 Windows Server,而不會停機。
- 雖然您可以選擇暫時將叢集節點新增至小型叢集,以改善升級期間的可用性,但不需要新的硬體。
- 當叢集中混合作系統版本時,叢集可以在升級期間支援修補和維護作業。
- 在最後一個步驟之前,當所有叢集節點都執行較新版本的 Windows Server,而且您更新叢集功能等級時,升級程式是可逆的。
- 它透過 PowerShell 和 WMI 支援自動化。
概括而言,滾動升級包含下列步驟:
- 準備叢集以進行OS功能更新。
- 將工作負載從第一個節點移出。
- 透過 升級 或 全新安裝執行 Windows Server 功能更新。
- 針對叢集中的任何其他節點重複步驟 2 到 3。
- 將叢集功能等級和存放集區更新為新版本的 Windows Server。
- 繼續正常作業並更新 VM 組態版本以開啟新功能。
如需滾動升級程序的詳細圖表,請參閱圖 1。
需求和限制
開始升級之前,請先完成下列需求:
- 從執行 Windows Server 2012 R2 或更新版本的容錯移轉叢集開始。
- 使用下列其中一種方法,確認 Hyper-V 節點具有支援 Second-Level 尋址數據表 (SLAT) 的 CPU:
- 檢閱Are you SLAT Compatible? WP8 SDK 提示 01 文章,說明兩種方法檢查 CPU 是否支援 SLAT
- 下載 Coreinfo v3.31 工具來判斷 CPU 是否支援 SLAT。
以下是一些要注意的限制:
- 建議您在四周內完成叢集升級程式,因為某些叢集功能並未針對執行兩個不同的OS版本的叢集進行優化。
- 管理混合作系統模式叢集時,請一律從執行較新版本 Windows Server 的節點執行管理工作。 舊版 Windows Server 通常無法使用 UI 或管理工具來管理較新版本。
- 避免在叢集執行混合作系統版本時,在較新的 Windows Server 節點上建立或調整記憶體大小。 這樣做可能會在從較新的 Windows Server 節點故障轉移到較舊的節點時導致不相容。
- 您只能升級至下一個較新版本的作系統,例如從 Windows Server 2022 升級至 Windows Server 2025。
若要跨多個版本升級,例如從 Windows Server 2016 升級至 Windows Server 2025,請循序執行升級(先到 Windows Server 2019,再升級至 Windows Server 2022,最後再移轉至 Windows Server 2025),或移轉至新的叢集。 - 您必須升級舊版 VM 的組態版本,才能在 Windows Server 2022 或更新版本的叢集上執行,不論您升級的方式為何。 8.0 之前的 VM 組態版本(對應至 Windows Server 2016),無法在 Windows Server 2022 上執行。
例如,如果您的 VM 是在 Windows Server 2012 R2 系統上建立,並使用 VM 組態 5.0 版,而您將叢集升級至 Windows Server 2022,則必須將 VM 組態版本升級為 8.0 或更新版本。 如需詳細資訊,請參閱 移轉和升級虛擬機。
步驟 1:準備叢集以進行升級
開始升級節點之前,請確認叢集狀況良好且已準備好進行升級:
檢查叢集在移除一個節點的情況下,是否有足夠的容量以維持適當的正常運行時間服務等級協定。
- 當一個節點從叢集移除時,叢集是否有足夠的記憶體、CPU 和網路資源來執行所需的工作負載?
- 叢集中是否有足夠的節點,即使一個節點脫機也能維持必要的容錯? 您可能想要暫時將節點新增至兩個節點叢集,以在升級期間維護容錯。
如果是 Hyper-V 工作負載,請檢查所有 Windows Server Hyper-V 主機是否都具備第二層位址表 (SLAT) 的 CPU 支援。 只有支援 SLAT 的電腦可以在 Windows Server 2016 和更新版本中使用 Hyper-V 角色。
在叢集的所有節點上安裝最新的軟體更新。
檢查是否有任何工作負載備份已完成,並考慮使用系統狀態備份來備份叢集資料庫。
使用 Get-ClusterNode Cmdlet 檢查所有叢集節點是否已啟動。
Get-ClusterNode
以下是輸出的範例:
Name ID State ---- -- ----- Node1 1 Up Node2 2 Up Node3 3 Up
停止在叢集上執行的任何更新工具。 例如,如果您使用叢集感知更新,請使用下列步驟:
確認叢集感知更新(CAU)是否正在執行,您可以使用 Cluster-Aware Updating UI 或 Get-CauRun cmdlet 來查明。
Get-CauRun
以下是名為 「Cluster01」 之叢集上的輸出範例:
RunNotInProgress WARNING: No Updating Run is currently in progress on cluster Cluster01.
使用 Disable-CauClusterRole Cmdlet 停止叢集感知更新,以防止在升級期間自動暫停和清空任何節點。
Disable-CauClusterRole
以下是輸出的範例:
Are you sure? Do you want to disable the Cluster-Aware Updating clustered role on cluster "Cluster01"? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
步驟 2:將工作負載從節點移出
在叢集中的一個節點上執行下列步驟(您一次針對叢集中的每個節點重複此程式):
若要清空 Windows Admin Center 中的節點,請流覽至 [叢集管理員]>[伺服器],選取節點,然後選取 [暫停] 。 若要使用故障轉移叢集管理員,請選取節點,然後選取 [暫停>清空],如圖 2 所示。 或使用 Suspend-ClusterNode Cmdlet 搭配
-Drain
參數,如下所示。Suspend-ClusterNode -Name Node1 -Drain
以下是輸出的範例,其中顯示叢集節點現在已暫停:
Name ID State ---- -- ----- Node1 1 Paused
如果您使用與 LBFO 群組綁定的虛擬交換器 Hyper-V,並執行就地升級至 Windows Server 2022 或更新版本,請在開始升級之前移除該群組。 升級之後,您可以將網路適配器系結至使用較新SET交換器技術的虛擬交換器。
Windows Server 2022 和更新版本不再支援 LBFO 團隊(Hyper-V)。 如需已移除功能的詳細資訊,請參閱 Windows Server中已移除或不再開發的功能。如果您要在節點上執行全新 OS 安裝,請先使用 Windows Admin Center、故障轉移叢集管理員或 Remove-ClusterNode Cmdlet,從叢集中移除暫停的節點。
Remove-ClusterNode -Name Node1
以下是輸出的範例:
Are you sure you want to evict node Node1? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
步驟 3:安裝新版本的 Windows Server
如果您升級至 Windows Server 2022 或更新版本,並在升級之前移除 LBFO 小組,請建立新的 Hyper-V 虛擬交換器,以使用較新的交換器內嵌小組 (SET) 技術系結至多個網路適配器。 您可以使用 Windows Admin Center、Hyper-V Manager 或 New-VMSwitch PowerShell Cmdlet。
如果您執行了全新安裝,請讓節點準備好重新加入叢集:
將節點加入適當的 Active Directory Domain Services 網域。 如果叢集使用儲存空間直接存取,請務必使用相同的計算機名稱。
將合適的使用者新增至本機管理員群組。
安裝您需要的任何伺服器角色和功能,例如 Hyper-V、故障轉移叢集和網路ATC(可在 Windows Server 2025 上取得)。 您可以使用 Windows Admin Center、Server Manager 或 Install-WindowsFeature PowerShell Cmdlet,如下列範例所示:
Install-WindowsFeature -Name "Hyper-V", "Failover-Clustering", "NetworkATC" -IncludeAllSubFeature -IncludeManagementTools
檢查網路和記憶體連線設定。
如果使用 Windows 防火牆,請檢查叢集的防火牆設定是否正確。 例如,叢集感知更新可能需要防火牆設定。
針對 Hyper-V 工作負載,請建立虛擬交換器,使其與其他叢集節點一致(但若您要更換網路適配器小組,則不包括 LBFO 配置)。 您可以使用 Windows Admin Center、Hyper-V Manager 或 Get-VMSwitch 和 Add-VMSwitch PowerShell 指令。
連接到升級的節點,然後使用 Windows Admin Center、故障轉移叢集管理員或 Add-ClusterNode Cmdlet 將升級的節點新增回叢集。
Add-ClusterNode -Name clusternode1
以下是輸出的範例:
Waiting for notification that node clusternode1 is a fully functional member of the cluster.
注意
當第一個升級的節點加入叢集時,叢集會進入「混合OS」模式,並將叢集核心資源移至較新的節點。 「混合的作業系統」模式叢集是功能完整的叢集,其中新節點會在相容性模式下與舊節點一同執行。 「混合OS」模式是叢集的暫時模式,您應該在四周內更新叢集的所有節點。
選擇性地將工作負載移至新加入的節點,以重新平衡叢集。
若要在不停機的情況下移動正在運行的虛擬機器,請使用 Windows Admin Center、故障轉移叢集管理員或 Move-ClusterVirtualMachineRole cmdlet 中的 Live Migration。
Move-ClusterVirtualMachineRole -Name VM1 -Node node1
以下是輸出的範例:
Name OwnerNode State ---- --------- ----- VM1 node1 Online
若要移動其他叢集工作負載,請使用故障轉移叢集管理員或 Move-ClusterGroup Cmdlet 中的 Move 命令。
步驟 4:針對叢集中的每個其他節點重複步驟 2 到 4
升級程式完全可復原,直到您在下一個步驟中更新叢集功能等級為止。 若要放棄升級,請新增執行原始 Windows Server 版本的節點,然後移除任何執行較新版本作系統的節點。
步驟 5:更新叢集功能等級和存放集區版本
更新叢集功能等級和存放集區版本,可讓您使用新功能。 它也會改善一些叢集作業,例如從節點清空工作負載,這可能會導致節點在混合OS叢集上執行時短暫隔離。
當每個節點已安裝較新的作系統版本並新增回叢集或永久移除時,請完成下列步驟來更新叢集功能等級和存放集區版本。
重要
更新叢集功能等級和存放集區版本之後,就無法回到先前的功能等級或存放集區版本,而且您無法將執行舊版 Windows Server 的節點新增至叢集。
檢查所有叢集角色是否如預期般在叢集上執行。 您可以使用 Windows Admin Center、故障轉移叢集管理員或 Get-ClusterGroup cmdlet:
Get-ClusterGroup
以下是顯示四部 VM 和叢集群組在線輸出的範例:
Name OwnerNode State ---- --------- ----- Available Storage node2 Offline VM1 node2 Online VM2 node1 Online VM3 node1 Online VM4 node3 Online Cluster Group node1 Online
無法使用可用的記憶體群組,而且離線,因為此叢集會使用叢集共用磁碟區 (CSV) 進行儲存。 如果叢集使用從SAN上的LUNS指派給它的磁碟,則可用的記憶體會處於在線狀態,但我們建議改用 CSV。
使用 Windows Admin Center、故障轉移叢集管理員或 Get-ClusterNode cmdlet,檢查所有叢集節點是否已上線並正在運行。
Get-ClusterNode
以下是輸出的範例:
Name ID State ---- -- ----- node1 1 Up node2 2 Up node3 3 Up
流覽至 [叢集管理員]>[設定]>[叢集]>[屬性]來檢視 Windows Admin Center 中的叢集功能等級。 或使用 Get-Cluster cmdlet:
Get-Cluster | Select ClusterFunctionalLevel
以下是輸出的範例:
ClusterFunctionalLevel ----------------------- 10
在 Windows Admin Center 中選取新的功能等級,或執行 Update-ClusterFunctionalLevel Cmdlet - 不應傳回任何錯誤。
Update-ClusterFunctionalLevel
以下是輸出的範例:
Updating the Functional level for cluster cluster01. Warning: You cannot undo this operation. Do you want to continue? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
使用 Get-Cluster Cmdlet 確認叢集功能等級已更新:
Get-Cluster | Select ClusterFunctionalLevel
以下是輸出的範例:
ClusterFunctionalLevel ----------------------- 11
如果您使用存放集區,您可以使用 Windows Admin Center >叢集管理員>設定>儲存空間和集區>儲存集區版本來更新它們而不停機。 或使用 Update-StoragePool PowerShell cmdlet。
步驟 6:繼續正常叢集作業並開啟新功能
若要繼續正常叢集作業並開啟新功能,請執行下列步驟:
如果您停止更新工具,請再次啟動它們。 例如,若要啟動叢集感知更新,您可以使用叢集感知更新工具或 Enable-CauClusterRole Cmdlet。
Enable-CauClusterRole
以下是輸出的範例:
Are you sure? Do you want to enable the Cluster-Aware Updating Clustered role on Cluster "cluster01"? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
恢復您因升級而停止的任何備份作業。
若要開啟 VM 可用的新功能,請升級每個 VM 的組態版本。 如需新的 Hyper-V 功能清單,請參閱 移轉和升級虛擬機。
使用 get-VMHostSupportedVersion Cmdlet,檢視每個節點支援的 VM 版本。 此時,每個節點都應該有相同的支援版本。
Get-VMHostSupportedVersion -ComputerName node1
以下是輸出的範例,其中顯示 VM 版本號碼和對應的作系統名稱:
Name Version IsDefault ---- ------- --------- Microsoft Windows 10 Anniversary Update/Server 2016 8.0 False Microsoft Windows 10 Creators Update 8.1 False Microsoft Windows 10 Fall Creators Update/Server 1709 8.2 False Microsoft Windows 10 April 2018 Update/Server 1803 8.3 False Microsoft Windows 10 October 2018 Update/Server 2019 9.0 False Microsoft Windows 10 May 2019 Update/Server 1903 9.1 False Microsoft Windows 10 May 2020 Update/Server 2004 9.2 False Microsoft Windows 10 (Manganese) 9.3 False Microsoft Windows Server 2022 10.0 False Microsoft Host OS (Cobalt+) 10.5 False Microsoft Windows 11 (22H2) 11.0 False Microsoft Windows 11 (Copper) 11.1 False Microsoft Windows 11 (Zinc) 11.2 False Microsoft Windows Server 2025 12.0 True
使用 Get-VM Cmdlet,檢視叢集中每個節點上的 VM。
Get-VM -ComputerName node1
以下是輸出的範例:
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version ---- ----- ----------- ----------------- ------ ------ ------- VM1 Running 0 12288 2.20:28:49.6670000 Operating normally 8.0 VM2 Running 0 4096 14.23:13:12.7370000 Operating normally 8.0 VM3 Running 0 1216 2.20:09:38.9450000 Operating normally 8.0
在排程維護期間,您可以讓 VM 離線、備份和升級每個節點上所有較舊的 VM。
若要在 Windows Admin Center 中這麼做,請流覽至 [叢集管理員]>[虛擬機]、選取 VM,然後 選取 [管理>升級組態版本。
或使用 Update-VMVersion Cmdlet,如此範例所示,會將單一節點上的所有 VM 更新為最新版本。Update-VMVersion -ComputerName node1 -Name * -WhatIf
以下是輸出的範例:
Confirm Are you sure you want to perform this action? Performing a configuration version update of "dc1" will prevent it from being migrated to or imported on previous versions of Windows. This operation is not reversible. [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):
叢集作業系統輪流升級期間的叢集轉換狀態
叢集公用屬性 ClusterFunctionalLevel 表示 Windows Server 2016 和更新版本叢集節點上的叢集狀態。 您可以從屬於容錯移轉叢集的叢集節點使用 PowerShell Cmdlet 來查詢此屬性:
Get-Cluster | Select ClusterFunctionalLevel
下表顯示值和每個對應的功能等級:
值 | 功能層級 |
---|---|
8 | Windows Server 2012 R2 |
9 | Windows Server 2016 |
10 | Windows Server 2019 |
11 | Windows Server 2022 |
12 | Windows Server 2025 |
常見問題集
-
故障轉移叢集可以在混合OS模式中執行多久?
我們鼓勵客戶在四週內完成升級。 Hyper-V 和水平擴展檔案伺服器叢集可以在不影響運行的情況下升級,且總耗時不超過四小時。 -
節點關閉或暫停時,是否可以執行 Update-ClusterFunctionalLevel Cmdlet?
否。 所有叢集節點都必須開啟且為活躍成員,Update-ClusterFunctionalLevel cmdlet 才能運作。 - 叢集OS滾動升級是否適用於任何叢集工作負載? 適用於 SQL Server 嗎?
是,叢集OS滾動升級適用於任何叢集工作負載。 不過,零停機時間只適用於 Hyper-V 和 Scale-out File Server 叢集。 大部分的其他工作負載在容錯移轉時會產生一些停機時間(通常是幾分鐘),而且在叢集作業系統輪流升級過程中至少需要容錯移轉一次。 -
我可以使用PowerShell將此程式自動化嗎?
是。 -
對於具有額外故障轉移容量的大型叢集,我可以同時升級多個節點嗎?
是。 從叢集中移除一個節點以升級OS時,叢集的故障轉移節點較少,因此故障轉移容量會降低。 如果是具有足夠工作負載和容錯移轉容量的大型叢集,則可以同時升級多個節點。 -
如果我在 Update-ClusterFunctionalLevel 成功執行之後,在叢集中發現問題該怎麼辦?
如果您已在執行 Update-ClusterFunctionalLevel之前完成系統狀態備份,那麼應該能在執行舊版 Windows Server 的節點上執行強制還原,並還原原始叢集資料庫和組態。 -
是否可以透過重新格式化系統磁碟驅動器,針對每個節點使用就地升級,而不是使用 clean-OS 安裝?
是。 過去,我們建議您在每個節點上執行全新的作業系統安裝。 不過,如果您仔細閱讀並解決任何警告訊息,您現在可以執行叢集節點的就地升級。 -
如果我在 Hyper-V 叢集上使用 Hyper-V 複製來為 Hyper-V VM 進行複製,在叢集 OS 滾動升級過程中和之後,複製是否會保持完整?
是,在叢集作業系統輪流升級程序期間與之後,Hyper-V 複本會保持不變。 - 我可以使用 System Center Virtual Machine Manager (VMM) 將叢集 OS 滾動升級程式自動化嗎? 是,您可以在 System Center 中使用 VMM 將叢集作業系統輪流升級程序自動化。