验证 Azure 本地的解决方案升级就绪情况

适用于:Azure Local 2311.2 及更高版本

本文介绍如何在操作系统(OS)从版本 22H2 升级到版本 23H2 后评估 Azure Local 的升级准备情况。

在本文中,我们将 OS 版本 23H2 称为新版本,将版本 22H2 称为旧版本。

评估解决方案升级准备情况

可选建议 的步骤有助于评估 Azure Local 的升级准备情况。 以下步骤可帮助你评估升级准备情况:

  • 安装和使用环境检查器来验证计算机上是否已安装并启用网络 ATC。 验证系统上是否没有 Arc 资源桥的预览版本。
  • 确保有足够的存储空间可用于基础结构卷。
  • 执行其他检查,例如安装必需和可选的 Windows 功能、启用应用程序控制策略、BitLocker 挂起和 OS 语言。
  • 查看并修正阻止升级的验证检查。

使用环境检查器验证升级准备情况

建议在升级解决方案之前使用环境检查器来验证系统就绪情况。 有关详细信息,请参阅 使用环境检查器评估环境就绪情况。 生成一个报告,其中包含需要纠正措施才能准备好进行解决方案更新的潜在发现。

某些操作需要计算机重新启动。 通过验证报告中的信息,可以提前计划维护时段,以便准备就绪。 在解决方案升级期间执行相同的检查,以确保系统满足要求。

表:阻止升级的验证测试

下表包含严重性 严重 性阻止升级的验证测试。 在应用解决方案升级之前,必须解决阻止升级的任何项。

名称 Severity
Windows OS 为 23H2 严重
AKS HCI 安装状态 严重
支持的云类型 严重
BitLocker 挂起 严重
群集存在 严重
同一群集中的所有节点 严重
群集节点已启动 严重
拉伸群集 严重
语言为英语 严重
Microsoft本地云(MOC)安装状态 严重
正在运行的 MOC 服务 严重
已安装网络 ATC 功能 严重
所需的 Windows 功能 严重
存储池 严重
存储卷 严重
Windows Defender for Application Control (WDAC) 启用 严重

表:升级的非阻止验证测试

下表包含升级后应解决的严重性 警告 的验证测试,以利用 Azure 本地版本 23H2 引入的新功能。

名称 Severity
受信任的平台模块 (TPM) 属性 OwnerClearDisabled 为 False 警告
TPM 属性 TpmReady 为 True 警告
TPM 属性 TpmPresent 为 True 警告
TPM 属性 LockoutCount 为 0 警告
TPM 属性 TpmActivated 为 True 警告
TPM 属性 ManagedAuthLevel 已满 警告
已启用 TPM 属性AutoProvisioning 警告
TPM 属性 LockedOut 为 False 警告
TPM 属性 TpmEnabled 为 True 警告

设置环境检查器

按照以下步骤在 Azure 本地系统的计算机上设置环境检查器:

  1. 选择一台属于系统成员的计算机。

  2. 使用本地管理凭据登录到计算机。

  3. 在计算机上安装环境检查器。 从 PSGallery 运行以下 PowerShell 命令:

    Install-Module -Name AzStackHci.EnvironmentChecker -AllowClobber
    

运行验证

  1. 使用本地管理凭据登录到安装了环境检查器的计算机。

  2. 若要在计算机上本地运行验证,请运行以下 PowerShell 命令:

    Invoke-AzStackHciUpgradeValidation
    
  3. 若要验证系统中的其他计算机,请运行以下 PowerShell 命令:

    $PsSession=New-Pssession -ComputerName "MyRemoteMachine"
    Invoke-AzStackHciUpgradeValidation -PsSession $PsSession
    
    展开此部分以查看示例输出。

    说明 23H2 升级环境验证程序的示例输出的关系图。

  4. (可选)使用 PassThru 标志获取允许筛选输出的原始输出。 运行下面的命令:

    $result=Invoke-AzStackHciUpgradeValidation -PassThru
    $result | ? status -eq "failure" |ft displayname,status,severity
    
    展开此部分以查看示例输出。
    DisplayName Status Severity
    测试 Windows OS 为 23H2 失败 警告
    测试网络 ATC 功能安装在节点上 失败 警告
    测试所需的 Windows 功能 失败 警告
    测试存储池 失败 警告
    测试 TMP 属性 OwnerCleareDisabled 为 False 22H2N1 失败 警告
    测试 TMP 属性 TmpPReady 为 True 22H2N1 失败 警告
    测试 TMP 属性 TmpPresent 为 True 22H2N1 失败 警告
    测试 TMP 属性 LockOutCount 为 0 失败 警告
    测试 TMP 属性 TmpActivated 为 True 22H2N1 失败 警告
    测试 TMP 属性 AutoProvisioning 已启用 22H2N1 失败 警告
    测试 TMP 属性 TmpEnabled 为 True 22H2N1 失败 警告

修正指南

环境检查器的每个验证检查都包含修正指南,其中包含有助于解决潜在问题的链接。 有关详细信息,请参阅 修正指南

修正 1:安装必需和可选的 Windows 功能

Azure 本地版本 23H2 需要安装一组 Windows 角色和功能。 某些功能需要在安装后重启。 因此,在安装角色和功能之前,请务必将计算机置于维护模式。 验证所有活动虚拟机(VM)是否已迁移到其他计算机。

对每台计算机使用以下命令安装所需的功能。 如果某个功能已存在,安装会自动跳过该功能。

#Install Windows Roles & Features 
$windowsFeature =  @( 

                "Failover-Clustering",
                "NetworkATC", 
                "RSAT-AD-Powershell", 
                "RSAT-Hyper-V-Tools", 
                "Data-Center-Bridging", 
                "NetworkVirtualization", 
                "RSAT-AD-AdminCenter"
                ) 
foreach ($feature in $windowsFeature) 
{ 
Install-WindowsFeature -Name $feature -IncludeAllSubFeature -IncludeManagementTools 
} 

#Install requires optional Windows features 
$windowsOptionalFeature = @( 

                "Server-Core", 
                "ServerManager-Core-RSAT", 
                "ServerManager-Core-RSAT-Role-Tools", 
                "ServerManager-Core-RSAT-Feature-Tools", 
                "DataCenterBridging-LLDP-Tools", 
                "Microsoft-Hyper-V", 
                "Microsoft-Hyper-V-Offline", 
                "Microsoft-Hyper-V-Online", 
                "RSAT-Hyper-V-Tools-Feature", 
                "Microsoft-Hyper-V-Management-PowerShell", 
                "NetworkVirtualization", 
                "RSAT-AD-Tools-Feature", 
                "RSAT-ADDS-Tools-Feature", 
                "DirectoryServices-DomainController-Tools", 
                "ActiveDirectory-PowerShell", 
                "DirectoryServices-AdministrativeCenter", 
                "DNS-Server-Tools", 
                "EnhancedStorage", 
                "WCF-Services45", 
                "WCF-TCP-PortSharing45", 
                "NetworkController", 
                "NetFx4ServerFeatures", 
                "NetFx4", 
                "MicrosoftWindowsPowerShellRoot", 
                "MicrosoftWindowsPowerShell", 
                "Server-Psh-Cmdlets", 
                "KeyDistributionService-PSH-Cmdlets", 
                "TlsSessionTicketKey-PSH-Cmdlets", 
                "Tpm-PSH-Cmdlets", 
                "FSRM-Infrastructure", 
                "ServerCore-WOW64", 
                "SmbDirect", 
                "FailoverCluster-AdminPak", 
                "Windows-Defender", 
                "SMBBW", 
                "FailoverCluster-FullServer", 
                "FailoverCluster-PowerShell", 
                "Microsoft-Windows-GroupPolicy-ServerAdminTools-Update", 
                "DataCenterBridging", 
                "BitLocker", 
                "Dedup-Core", 
                "FileServerVSSAgent", 
                "FileAndStorage-Services", 
                "Storage-Services", 
                "File-Services", 
                "CoreFileServer", 
                "SystemDataArchiver", 
                "ServerCoreFonts-NonCritical-Fonts-MinConsoleFonts", 
                "ServerCoreFonts-NonCritical-Fonts-BitmapFonts", 
                "ServerCoreFonts-NonCritical-Fonts-TrueType", 
                "ServerCoreFonts-NonCritical-Fonts-UAPFonts", 
                "ServerCoreFonts-NonCritical-Fonts-Support", 
                "ServerCore-Drivers-General", 
                "ServerCore-Drivers-General-WOW64", 
                "NetworkATC" 
            ) 
foreach ($featureName in $windowsOptionalFeature) 
{ 
Enable-WindowsOptionalFeature -FeatureName $featurename -All -Online 
} 

修正 2:确保计算机已启动

确保所有计算机都已启动,并且系统处于 联机状态。 使用故障转移群集管理器 UI 或 PowerShell cmdlet 确认所有计算机都处于联机状态。

若要验证系统的所有计算机都处于联机状态,请运行以下 PowerShell 命令:

Get-ClusterNode -Cluster "mysystem" 

修正 3:暂停 BitLocker

如果在应用解决方案升级时重新启动,请禁用 BitLocker。 如果重新启动,则需要输入 BitLocker 恢复,这会中断升级过程。

暂停 BitLocker

若要挂起 BitLocker,请运行以下 PowerShell 命令:

Suspend-Bitlocker -MountPoint "C:" -RebootCount 0 

恢复 BitLocker

升级完成后,若要恢复 BitLocker,请运行以下 PowerShell 命令:

Resume-Bitlocker -MountPoint "C:" 

修正 4:启用应用程序控制(WDAC)策略

如果系统正在运行 WDAC 策略,则可能会导致解决方案的 Arc 启用冲突。 在 Arc 启用系统之前,请禁用策略。 启用系统 Arc 后,可以使用新版本 23H2 WDAC 策略启用 WDAC。

若要详细了解如何禁用 WDAC 策略,请参阅 “删除 Windows Defender 应用程序控制策略”。

修正 5:确保语言为英语

只有使用英语安装的系统才有资格应用解决方案升级。 确保系统是使用英语安装的。

如果在安装过程中使用了英语 ISO 但配置了其他语言,则必须按如下所述更改 LCM 升级用户帐户的语言设置:

  1. 使用你打算用于升级的域帐户登录到每台计算机。

  2. 运行以下 PowerShell 命令:

    $UserLanguageList = New-WinUserLanguageList -Language en-US
    Set-WinUserLanguageList -LanguageList $UserLanguageList
    

修正 6:检查存储池空间

Azure 本地版本 23H2 创建专用卷。 此卷仅用于新的基础结构功能,例如运行 Arc 资源桥。

基础结构卷所需的大小为 250 GB。 确保存储池有足够的空间来容纳新卷。

释放存储池中的空间

存储空间直通不支持收缩现有卷。 有三种替代方法可以释放存储池中的空间:

  • 选项 1:将卷从固定预配转换为精简预配。 使用精简预配卷也是使用默认设置部署新系统时的默认配置。

  • 选项 2:备份所有数据,重新创建大小较小的卷,并还原内容。

  • 选项 3:添加更多物理驱动器以扩展池容量。

    注意

    将卷转换为精简预配之前,请关闭存储在该特定卷上的所有 VM。

验证可用空间

按照以下步骤确认存储池配置:

  1. 若要确认存储池大小和分配的大小,请运行以下 PowerShell 命令:

    Get-StoragePool -IsPrimordial $false
    
    展开此部分以查看示例输出。
    FriendlyName OperationalStatus HealthStatus IsPrimordial IsReadOnly 大小 AllocatedSize
    毒液上的 S2D 确定 正常 False False 2 TB 1.53 TB
  2. 若要列出存储池中的所有卷,请运行以下 PowerShell 命令:

    Get-StoragePool -IsPrimordial $false | Get-VirtualDisk
    
    展开此部分以查看示例输出。
    FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus 大小 FootprintOnPool StorageEfficiency
    ClusterPerformanceHistory 镜像 1 确定 正常 21 GB 43 GB 48.84%
    TestVolume 镜像 0 确定 正常 1 TB 1 TB 99.95%
    TestVolume2 镜像 0 确定 正常 500 GB 55.5 GB 99.90%
  3. 若要确认已预配固定卷,请运行以下 PowerShell 命令:

    $volume = Get-VirtualDisk -FriendlyName TestVolume
    $volume.ProvisioningType
    
    展开此部分以查看示例输出。

    Fixed

  4. 若要将卷转换为精简预配,请运行以下 PowerShell 命令:

    Set-VirtualDisk -FriendlyName TestVolume -ProvisioningType Thin
    
  5. 若要完成转换,必须重新启动卷。 为此,请运行以下 PowerShell 命令。 请确保调整 CSV 名称以匹配系统:

    Get-ClusterSharedVolume -Name "System Disk 1" | Stop-ClusterResource
    Get-ClusterSharedVolume -Name "System Disk 1" | Start-ClusterResource
    
  6. 若要确认存储池的实际占用空间已更改,请运行以下 PowerShell 命令:

    Get-StoragePool -IsPrimordial $false| Get-VirtualDisk
    
    展开此部分以查看示例输出。
    FriendlyName ResiliencySettingName FaultDomainRedundancy OperationalStatus HealthStatus 大小 FootprintOnPool StorageEfficiency
    ClusterPerformanceHistory 镜像 1 确定 正常 21 GB 43 GB 48.84%
    TestVolume 镜像 0 确定 正常 1 TB 36.5 GB 98.63%
    TestVolume2 镜像 0 确定 正常 750 GB 28.5 GB 98.25%

修正 7:检查存储卷名称

Azure 本地版本 23H2 部署在现有存储池中创建专用卷 Infrastructure_1 。 此卷专用于新的基础结构功能。

请确保验证名称Infrastructure_1不存在卷。 如果存在同名的现有卷,则此测试将失败。

注意

重命名现有卷会影响 VM,因为群集共享卷的装入点发生更改。 所有 VM 都需要其他配置更改。

  • 若要重命名现有卷,请运行以下 PowerShell 命令:

    Set-VirtualDisk -FriendlyName Infrastructure_1 -NewFriendlyName NewName
    

修正 8:检查群集功能级别和存储池版本

确保群集功能级别和存储池版本是最新的。 有关详细信息,请参阅 更新群集功能级别和存储池版本

修正 9:检查 Azure Arc 生命周期扩展

  1. 使用 Azure Arc 资源视图查看扩展状态。

    Azure Arc 扩展列表视图的屏幕截图。

    如果更新可用,请选择 AzureEdgeLifecycleManager 扩展,然后选择“ 更新”。

  2. 如果未列出 AzureEdgeLifecycleManager 扩展,请在每台计算机上安装以下步骤手动安装它:

    $ResourceGroup = "Your Resource Group Name"
    $Region = "eastus" #replace with your region
    $tenantid = "Your tenant ID"
    $SubscriptionId = "Your Subscription ID"
    Login-AzAccount –UseDeviceAuthentication –tenantid  $tenantid –subscriptionid $SubscriptionId
    Install-module az.connectedmachine
    New-AzConnectedMachineExtension -Name "AzureEdgeLifecycleManager" -ResourceGroupName $ResourceGroup -MachineName $env:COMPUTERNAME -Location $Region -Publisher "Microsoft.AzureStack.Orchestration" -ExtensionType "LcmController" -NoWait
    

修正 10:检查 MOC 安装状态

如果在 Azure 本地上运行 AKS 工作负载,则必须在应用解决方案升级之前从 Azure Arc 启用的 AKS 中删除Azure Kubernetes 服务和所有设置。 Kubernetes 版本在 Azure 本地版本 22H2 和版本 23H2 之间不兼容。 此外,无法更新 Arc VM 的预览版本。

有关详细信息,请参阅 Azure Arc 启用的 AKS 的 Uninstall-Aks-Hci。

修正 11:检查 AKS 安装状态

如果在 Azure 本地上运行 AKS 工作负荷,则必须在应用解决方案升级之前从 AKS 混合中删除Azure Kubernetes 服务和所有设置。 Kubernetes 版本在 Azure 本地版本 22H2 和版本 23H2 之间不兼容。

有关详细信息,请参阅 Azure Arc 启用的 AKS 的 Uninstall-Aks-Hci。

后续步骤