本文介绍如何通过 PowerShell 将 Azure Stack HCI作系统(OS)从版本 20349.xxxx(22H2)升级到版本 25398.xxxx(23H2)。 这是升级过程中的第一步,仅升级 OS。
本文介绍如何通过 PowerShell 将 Azure Stack HCI作系统(OS)升级到版本 26100.xxxx(24H2)。 有两个可用的升级路径:
- 从版本 20349.xxxx (22H2) 升级到版本 26100.xxxx (24H2)。
- 从版本 25398.xxxx (23H2) 升级到版本 26100.xxxx (24H2)。 这包括从版本 20349.xxxx (22H2) 升级的 25398.xxxx (23H2) 群集,并且尚未应用解决方案升级。
在 2505 版本中,提供从版本 20349.xxxx(22H2)到版本 26100.xxxx(24H2)的直接升级路径。 跳过升级到版本 26100.xxxx 是一个更少的升级跃点,有助于在解决方案升级之前减少重新启动和维护规划。
- 在执行升级之前,请务必咨询硬件供应商,以确定是否支持版本 26100.xxxx OS。
- OS 升级后,可以应用解决方案升级。
- 如果使用拉伸群集,则上述建议存在例外情况。 拉伸群集应等待直接移动到版本 26100.xxxx (24H2)。
有关各种升级路径的详细信息,请参阅有关 将 Azure 本地升级到新 OS 版本的博客文章。
重要
本文仅介绍 OS 升级。 如果解决方案升级已完成,或者部署了 Azure Local 2311.2 或更高版本,请不要继续。 若要检查系统是否已运行解决方案,请运行 Get-StampInformation cmdlet。 如果返回输出,则系统已运行解决方案,应跳过这些步骤。
关于版本 22H2 的支持结束(EOS)
Azure Stack HCI OS 版本 22H2 已不受支持。
- 每月安全和质量更新已停止。
- 系统将继续工作,包括注册和修复。
- 计费仍在继续。
- Microsoft支持仅适用于升级帮助。
若要继续接收更新,建议 通过 PowerShell 将作系统升级到较新版本。
如果运行的是 Azure Stack HCI 版本 22H2 拉伸群集或通过 System Center Virtual Machine Manager 管理群集,请查看 支持的工作负载和配置 表,了解更新时间线。
关于版本 23H2 的支持结束(EOS)
Azure Stack HCI 版本 23H2 OS(OS 版本 25398.xxxx)将于 2026 年 4 月终止支持。 在此日期之后,你不会收到每月的安全和质量更新。 支持请求仅在对受支持版本进行修补时可用。
OS 升级的高级工作流
Azure Stack HCI 操作系统更新可通过Windows 更新和可从Azure 门户下载的媒体获取。
要升级系统上的操作系统,请遵循以下高级步骤:
- 完成先决条件。
- 更新注册表项。
- 连接到 Azure 本地版本 22H2。使用 PowerShell 检查可用更新。
- 使用 PowerShell 安装新 OS。
- 检查更新的状态。
- 升级 OS 后,执行 OS 后升级步骤。
Azure Stack HCI OS 更新只能通过 Azure 门户使用。
要升级系统上的操作系统,请遵循以下高级步骤:
满足先决条件
在开始之前,请确保:
有权访问运行版本 20349.xxxx(22H2)的 Azure 本地实例,并且已在 Azure 中注册。
系统在 Azure 中注册,系统中的所有计算机都正常运行且处于联机状态。
如果已在版本 22H2 实例上运行的 Azure Arc 群集启用了 AKS,请使用 Uninstall-Aks-Hci 命令卸载 AKS Arc 及其所有设置。 卸载 AKS Arc 后,必须使用此命令卸载 AksHci Powershell 模块,因为此模块不适用于版本 23H2 及更高版本。
Uninstall-Module -Name AksHci -Force
若要避免 AKS 部署中的任何 PowerShell 版本相关问题,可以使用此 帮助程序脚本删除旧的 AKS-HCI PowerShell 模块。 如果使用了 22H2 上的 AKS Arc 预览版,请在 Azure 本地节点上运行该命令 Uninstall-Moc ,以删除使用预览版本创建的 VM 实例。
关闭虚拟机(VM)。 为了防止意外中断和数据库的潜在损坏,建议在升级 OS 之前关闭 VM。
有权访问 Azure 本地版本 25398.xxxx (23H2) OS 软件更新。 此更新可通过Windows 更新或可下载媒体提供。 媒体必须是可从 Azure 门户下载的版本 2503 ISO 文件。
您可以使用一个客户端连接到您的本地 Azure 实例。 此客户端应运行 PowerShell 5.0 或更高版本。
仅当以下两个条件都适用时,您才运行
RepairRegistrationcmdlet:-
标识属性缺失或不包含
type = "SystemAssigned"。- 请在 Azure 门户中的资源 JSON 中检查此项
- 或运行
Get-AzResource -Name <cluster_name>PowerShell cmdlet
-
云管理群集组不存在。 可以通过运行
Get-ClusterGroupPowerShell cmdlet 来检查它。
如果满足这两个条件,运行
RepairRegistrationcmdlet:Register-AzStackHCI -TenantId "<tenant_ID>" -SubscriptionId "<subscription_ID>" -ComputerName "<computer_name>" -RepairRegistration-
标识属性缺失或不包含
(推荐)升级 OS 之前,在 Azure 本地计算机上启用 安全启动 。 若要启用安全启动,请执行以下步骤:
- 清空群集节点。
- 重启 OS。
- 输入 BIOS/UEFI 菜单。
- 查看 UEFI 配置选项的 “启动 ”或“ 安全性 ”部分,找到“安全启动”选项。
- 将选项设置为 “已启用 ”或 “打开”。
- 保存更改并重新启动计算机。
如果需要,请咨询硬件供应商以获取帮助。
注意
仅当计算机无权访问 Windows 更新以下载 OS 功能更新时,才需要 2503 ISO 文件。 如果使用此方法, 请在连接到 Azure 本地版本 22H2 后,跳到 使用 PowerShell 安装新 OS 下的步骤 6,并执行其余步骤。 不支持使用第三方工具安装升级。
请确保 Azure 本地系统正在运行 OS 版本 20349.3692 或 OS 版本大于 25398.1611。
请确保系统已在 Azure 中注册,并且系统中的所有计算机都正常运行且处于联机状态。
请确保关闭虚拟机(VM)。 建议在执行 OS 升级之前关闭 VM,以防止数据库出现意外中断和损坏。
如果已在版本 22H2 实例上运行的 Azure Arc 群集启用了 AKS,请使用 Uninstall-Aks-Hci 命令卸载 AKS Arc 及其所有设置。 卸载 AKS Arc 后,必须使用此命令卸载 AksHci Powershell 模块,因为此模块不适用于版本 23H2 及更高版本:
Uninstall-Module -Name AksHci -Force若要避免 AKS 部署中的任何 PowerShell 版本相关问题,可以使用此 帮助程序脚本删除旧的 AKS-HCI PowerShell 模块。 如果在 22H2 上使用 AKS Arc 的预览版本,请在 Azure 本地节点上运行该命令
Uninstall-Moc,以删除使用预览版本创建的 VM 实例。确认你有权访问可以从 Azure 门户下载的最新 Azure Local。
咨询硬件 OEM 以验证驱动程序兼容性。 确认在升级之前安装与 Windows Server 2025 或 Azure Stack HCI OS 26100.xxxx 兼容的所有驱动程序。
确保系统上当前安装的网络接口卡(NIC)驱动程序比 Azure Stack HCI OS 版本 26100.xxxx 默认包含的版本(收件箱)更新。 下表比较了两个制造商的当前和推荐版本的 NIC 驱动程序:
NIC 制造商 收件箱驱动程序版本 建议的最新兼容驱动程序 英特尔 1.15.121.0 1.17.73.0 NVIDIA 24.4.26429.0 25.4.50020 确保实例已正确注册。 如果 标识 属性缺失或不包含
type = "SystemAssigned",请运行以下命令来修复注册:Register-AzStackHCI -TenantId "<tenant_ID>" -SubscriptionId "<subscription_ID>" -ComputerName "<computer_name>" -RepairRegistration可以在资源的 JSON 中或通过运行以下 cmdlet 来验证 Azure 门户中的 标识 属性:
Get-AzResource -Name <cluster_name> -ResourceGroupName <name of the resource group> -ResourceType "Microsoft.AzureStackHCI/clusters" -ExpandProperties(推荐)在升级 OS 之前,在 Azure 本地计算机上启用 安全启动 。 若要启用安全启动,请执行以下步骤:
- 清空群集节点。
- 重启 OS。
- 输入 BIOS/UEFI 菜单。
- 查看 UEFI 配置选项的 “启动 ”或“ 安全性 ”部分,找到“安全启动”选项。
- 将选项设置为 “已启用 ”或 “打开”。
- 保存更改并重新启动计算机。
如果需要,请咨询硬件供应商以获取帮助。
清理云管理群集组:
# Check to make sure the Cloud Management group is present and its online. Get-ClusterGroup -Name "Cloud Management" # Stop the Cloud Management group Stop-ClusterGroup -Name "Cloud Management" # Remove all resources in the Cloud Management group Get-ClusterGroup -Name "Cloud Management" | Get-ClusterResource | Remove-ClusterResource -Force # Start the Cloud Management group Start-ClusterGroup -Name "Cloud Management"
更新注册表项
若要确保在 OS 升级期间和之后正确运行弹性文件系统(ReFS)和实时迁移,请按照系统中每台计算机上的这些步骤更新注册表项。 重新启动每台计算机,使更改生效。
将
RefsEnableMetadataValidation设置为0:Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "RefsEnableMetadataValidation" -Value 0 -Type DWord -ErrorAction Stop创建参数键(如果不存在)。 如果它已经存在,命令可能会由于预期中的错误而失败。
New-Item -Path HKLM:\SYSTEM\CurrentControlSet\Services\Vid\Parameters将
SkipSmallLocalAllocations设置为0:New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Vid\Parameters -Name SkipSmallLocalAllocations -Value 0 -PropertyType DWord重启计算机,使更改生效。 在计算机重启时,如果
RefsEnableMetadataValidation密钥被替代且 ReFS 卷无法上线,请先将RefsEnableMetadataValidation设置为1然后重新切回0。在转到下一步之前,请更新并验证注册表项是否已应用于系统中的每台计算机。
若要确保在 OS 升级期间和之后可复原文件系统(ReFS)正常运行,请按照系统中的每台计算机上的这些步骤更新注册表项。 重新启动每台计算机,使更改生效。
将
RefsEnableMetadataValidation设置为0:Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "RefsEnableMetadataValidation" -Value 0 -Type DWord -ErrorAction Stop重启计算机以应用更改。 如果重新启动后 ReFS 卷无法联机,并且
RefsEnableMetadataValidation密钥已重置,请切换密钥。 设置为RefsEnableMetadataValidation1 ,然后返回 0。 若要检查卷状态,请运行Get-ClusterSharedVolumeState命令。在转到下一步之前,请更新并验证注册表项是否已应用于系统中的每台计算机。
连接到 Azure 本地
按照客户端上的以下步骤连接到 Azure 本地实例的其中一台计算机。
在用于连接到系统的客户端上以管理员身份运行 PowerShell。
在 Azure Local 实例上的一台计算机上打开远程 PowerShell 会话。 运行以下命令,并在出现提示时提供计算机的凭据:
$cred = Get-Credential Enter-PSSession -ComputerName "<Computer IP>" -Credential $cred下面是示例输出:
PS C:\Users\Administrator> $cred = Get-Credential cmdlet Get-Credential at command pipeline position 1 Supply values for the following parameters: Credential PS C:\Users\Administrator> Enter-PSSession -ComputerName "100.100.100.10" -Credential $cred [100.100.100.10]: PS C:\Users\Administrator\Documents>
使用 PowerShell 安装新 OS
若要使用 PowerShell 安装新 OS,请执行以下步骤:
注意
以下步骤要求在系统上安装并启用群集感知更新(CAU)角色。 有关如何在 Azure 本地上安装和启用此功能的信息,请参阅 群集感知更新概述。
在系统中的每个计算机上运行以下 cmdlet。
Set-WSManQuickConfig Enable-PSRemoting若要测试系统是否已正确设置为使用群集感知更新(CAU)来应用软件更新,请运行
Test-CauSetup命令, 该命令会通知你出现任何警告或错误:Test-CauSetup -ClusterName <System name>通过在系统中的一台计算机上运行
Test-Clustercmdlet 来验证硬件和设置。 如果任一条件检查失败,请解决它们,然后再继续执行下一步。Test-Cluster检查可用的更新:
Invoke-CauScan -ClusterName <SystemName> -CauPluginName "Microsoft.RollingUpgradePlugin" -CauPluginArguments @{'WuConnected'='true';} -Verbose | fl *检查上述 cmdlet 的输出,并验证每台计算机是否都提供相同的功能更新,这应该如此。
需要在系统外部的单独计算机或 VM 上运行
Invoke-CauRuncmdlet。 单独的计算机可确保在重新启动计算机时业务流程不会中断。重要
运行
Invoke-CauRun的系统必须运行 Windows Server 2022。Invoke-CauRun -ClusterName <SystemName> -CauPluginName "Microsoft.RollingUpgradePlugin" -CauPluginArguments @{'WuConnected'='true';} -Verbose -EnableFirewallRules -Force如果系统未连接到 Windows 更新,并且本地共享上提供了 Azure 本地安装媒体,则 CAU 也可用于升级系统。 确保使用 ISO 映像的共享路径来更新
'PathToSetupMedia'参数。Invoke-CauRun –ClusterName <SystemName> -CauPluginName Microsoft.RollingUpgradePlugin -CauPluginArguments @{ 'WuConnected'='false';'PathToSetupMedia'='\some\path\'; 'UpdateClusterFunctionalLevel'='true'; } -Force检查是否存在其他更新并安装。
等待更新完成并检查更新的状态。
若要使用 PowerShell 安装新 OS,请执行以下步骤:
注意
以下步骤要求在系统上安装并启用群集感知更新(CAU)角色。 有关如何在 Azure 本地上安装和启用此功能的信息,请参阅 群集感知更新概述。
在系统中的每个计算机上运行以下 cmdlet。
Set-WSManQuickConfig Enable-PSRemoting若要测试系统是否已正确设置为使用群集感知更新(CAU)来应用软件更新,请运行
Test-CauSetup命令, 该命令会通知你出现任何警告或错误:Test-CauSetup -ClusterName <System name>通过在系统中的一台计算机上运行
Test-Clustercmdlet 来验证硬件和设置。 如果任一条件检查失败,请解决它们,然后再继续执行下一步。Test-Cluster提取 ISO 映像的内容,并将其复制到每台计算机上的本地系统驱动器。 确保每个计算机上的本地路径相同。 然后,使用
PathToSetupMediaISO 映像的本地路径更新参数。# Define ISO and destination paths $isoFilePath = "C:\SetupFiles\WindowsServer\ISOs\example.iso" $destinationPath = "C:\SetupFiles\WindowsServer\Files" # Mount the ISO file $iso = Mount-DiskImage -ImagePath $isoFilePath # Get the drive letter $driveLetter = ($iso | Get-Volume).DriveLetter # Create the destination directory New-Item -ItemType Directory -Path $destinationPath # Copy contents to the local directory Copy-Item -Path "${driveLetter}:\*" -Destination $destinationPath –Recurse # Dismount the ISO file Dismount-DiskImage -ImagePath $isoFilePath升级系统。
Invoke-CauRun –ClusterName <SystemName> -CauPluginName Microsoft.RollingUpgradePlugin -EnableFirewallRules -CauPluginArguments @{ 'WuConnected'='false';'PathToSetupMedia'='\some\path\'; 'UpdateClusterFunctionalLevel'='true'; } -ForceSelfUpdate -Force等待更新完成并检查更新的状态。
检查更新的状态
若要获取有关正在进行的更新的摘要信息,请运行
Get-CauRuncmdlet:Get-CauRun -ClusterName <SystemName>下面是示例输出:
RunId : <Run ID> RunStartTime : 10/13/2024 1:35:39 PM CurrentOrchestrator : NODE1 NodeStatusNotifications : { Node : NODE1 Status : Waiting Timestamp : 10/13/2024 1:35:49 PM } NodeResults : { Node : NODE2 Status : Succeeded ErrorRecordData : NumberOfSucceededUpdates : 0 NumberOfFailedUpdates : 0 InstallResults : Microsoft.ClusterAwareUpdating.UpdateInstallResult[] }通过在
Test-Cluster系统中的一台计算机上运行 cmdlet 来验证系统的运行状况。 如果任一条件检查失败,请解决它们,然后再继续执行下一步。Test-Cluster在转到下一步之前,确认系统中的每台计算机上是否仍然应用这些注册表项。
要检查注册表项是否存在:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "RefsEnableMetadataValidation"如有必要,请重新应用注册表项,并重新启动每台机器,以使更改生效。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "RefsEnableMetadataValidation" -Value 0 -Type DWord -ErrorAction Stop如果 OS 升级失败,请运行以下命令以恢复 CAU 运行:
Invoke-CauRun –ForceRecovery -Force
现在,你已准备好为系统执行 OS 后升级步骤。