排查 Azure 本地版本 23H2 的解决方案更新问题

适用于:Azure 本地版本 23H2

本文介绍如何排查应用于 Azure 本地的解决方案更新以使其保持最新状态。

关于故障排除更新

如果系统是通过 Azure 本地版本 23H2 的新部署创建的,则在部署期间安装了业务流程协调程序。 协调器管理平台的所有更新,包括操作系统、驱动程序和固件、代理和服务。

新的更新解决方案包括重试和修正逻辑。 此逻辑尝试以非中断方式修复更新问题,例如重试群集感知更新 (CAU) 运行。 如果无法自动修正更新运行,更新将失败。 更新失败时,Microsoft建议检查失败消息的详细信息,以确定相应的下一步操作。 如果适用,可以尝试恢复更新,以确定重试是否会解决问题。

排查准备情况检查问题

准备情况检查对于确保顺利应用更新、保持系统最新状态以及维护正确的系统功能至关重要。 准备情况检查在两种情况下分别进行和报告:

  • 每 24 小时运行一次的系统运行状况检查。

  • 在下载更新内容之后和开始安装之前运行的更新就绪情况检查。

系统运行状况检查和更新就绪情况检查的结果通常有所不同。 发生这种情况是因为更新就绪情况检查使用要安装的解决方案更新中的最新验证逻辑,而系统运行状况检查始终使用已安装版本的验证逻辑。

系统和更新前准备情况检查都执行类似的验证,并对三种类型的就绪情况检查进行分类:严重、警告和信息。

  • 关键:防止应用更新的准备情况检查。 此状态指示在继续更新之前必须解决的问题。
  • 警告:就绪情况检查也会阻止您应用更新,但您可以使用 PowerShell绕过这些检查。 此状态表明存在一些可能不够严重以至无法阻止更新的问题,但为了确保更新过程顺利进行,这些问题仍需重视和解决。
  • 信息性:不会阻止更新的准备情况检查。 此状态提供有关系统状态的信息,以及任何不应直接影响更新过程的潜在问题。 这些检查是为了通知你,可能不需要立即采取行动。

故障排除步骤会根据具体的准备情况检查场景而有所不同。

使用 Azure 门户

方案 1:系统运行状况检查

在 Azure 更新管理器中准备安装系统更新时,会出现这种情况:

  1. 在系统列表中,查看更新准备关键状态。

    “更新管理器”页的屏幕截图。

  2. 从列表中选择一个或多个系统,然后选择一次性更新

  3. 检查准备情况页上,查看准备情况检查列表及其结果。

    1. 受影响的系统下,选择查看详细信息链接。

    2. 当详细信息框打开时,可以查看更多详细信息、单个系统结果和针对失败运行状况检查的补救措施

    “安装更新”页的屏幕截图。

    按照修正说明解决故障。

    注意

    系统运行状况检查每 24 小时运行一次,因此在修正故障后,新结果可能需要长达 24 小时才能同步到 Azure 门户。 若要立即启动新的系统运行状况检查或进一步故障排除,请参阅 PowerShell 部分。

方案 2:更新准备情况检查

在 Azure 更新管理器中安装和跟踪系统更新时,会出现这种情况:

  1. 历史记录中,从列表中选择失败的更新操作。

  2. 检查准备情况页上,查看准备情况检查列表及其结果。

    1. 受影响的系统下,选择查看详细信息链接。

    2. 当详细信息框打开时,可以查看更多详细信息、单个系统结果和针对失败运行状况检查的补救措施

    “更新进度”页的屏幕截图。

    按照修正说明解决故障,然后选择“重试”按钮重试预更新准备情况检查,恢复更新

    若要进一步进行故障排除,请参阅 PowerShell 部分。

使用 PowerShell

方案 1:系统运行状况检查

若要通过 PowerShell 排查系统运行状况检查问题,请执行以下操作:

  1. 若要验证系统运行状况检查是否失败,请在系统中的某个计算机上运行以下命令:

    Get-SolutionUpdateEnvironment
    

    下面是示例输出:

    PS C:\Users\lcmuser> Get-SolutionUpdateEnvironment 
    ResourceId        : redmond  
    SbeFamily         : VirtualForTesting  
    HardwareModel     : Virtual Machine  
    LastChecked       : 9/12/2023 10:34:42 PM  
    PackageVersions   : {Solution: 10.2309.0.20, Services: 10.2309.0.20, Platform: 1.0.0.0, SBE: 4.0.0.0}  
    CurrentVersion    : 10.2309.0.20  
    CurrentSbeVersion : 4.0.0.0  
    LastUpdated       :  
    State             : AppliedSuccessfully  
    HealthState       : Failure 
    HealthCheckResult : {Storage Pool Summary, Storage Services Physical Disks Summary, Storage Services Physical Disks  
    
                    Summary, Storage Services Physical Disks Summary...}  
    
    HealthCheckDate   : 9/12/2023 7:03:32 AM  
    
    AdditionalData    : {[SBEAdditionalData, Solution Builder extension is partially installed. Please install the latest  
    
                    Solution Builder Extension provided by your hardware vendor.  
    
                    For more information, see https://aka.ms/SBE.]}  
    
    HealthState       : Success  
    HealthCheckResult : {}  
    HealthCheckDate   : 8/4/2022 9:10:36 PM 
    
    PS C:\Users\lcmuser>
    
  2. 查看系统上的 HealthState,并查看 FailureWarning 值。

  3. 若要筛选 HealthCheckResult 属性以识别失败的测试,请运行以下命令:

    $result = Get-SolutionUpdateEnvironment 
    
    $result.HealthCheckResult | Where-Object {$_.Status -ne "SUCCESS"} | FL Title,Status,Severity,Description,Remediation
    

    下面是示例输出:

    Title       : The machine proxy on each failover cluster node should be set to a local proxy server 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : `https://learn.microsoft.com/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness`
    
    Title       : The CAU clustered role should be installed on the failover cluster to enable self-updating mode 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : `https://learn.microsoft.com/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness`
    
  4. 查看失败测试的 Remediation 字段,并采取适当措施来解决故障。

  5. 解决失败后,运行以下命令再次调用系统运行状况检查:

    Invoke-SolutionUpdatePrecheck -SystemHealth
    
  6. 使用 Get-SolutionUpdateEnvironment 以确认失败的运行状况检查已得到解决。 运行系统运行状况检查可能需要几分钟。

    下面是示例输出:

    PS C:\Users\lcmuser>  Get-SolutionUpdateEnvironment | FL HealthState, HealthCheckResult, HealthCheckDate 
    
    HealthState       : InProgress 
    HealthCheckResult : 
    HealthCheckDate   : 1/1/0001 12:00:00 AM 
    
    PS C:\Users\lcmuser>  Get-SolutionUpdateEnvironment | FL HealthState, HealthCheckResult, HealthCheckDate
    
    HealthState       : Success 
    
    HealthCheckResult : {Storage Pool Summary, Storage Subsystem Summary, Storage Services Summary, Storage Services 
    
                    Summary...} 
    
    HealthCheckDate   : 10/18/2024 11:56:49 PM 
    

方案 2:更新准备情况检查

更新就绪情况检查失败时,这会导致更新在系统上失败。 若要通过 PowerShell 解决更新准备检查的问题:

  1. 若要验证更新就绪情况检查是否失败,请在系统中的一台计算机上运行以下命令:

    Get-SolutionUpdate | FT Version,State,HealthCheckResult
    

    下面是示例输出:

    PS C:\Users\lcmuser> Get-SolutionUpdate | FT Version,State,HealthCheckResult 
    
    Version     State              HealthCheckResult 
    -------     -----              ----------------- 
    10.2405.2.7 HealthCheckFailed {Storage Subsystem Summary, Storage Pool Summary, Storage Services Physical Disks Summary, Stora...                       
    
    PS C:\Users\lcmuser>
    
  2. 查看 State 了解更新,并查看 HealthCheckFailed 值。

  3. 若要筛选 HealthCheckResult 属性以识别失败的测试,请运行以下命令:

    $result = Get-SolutionUpdate 
    $result.HealthCheckResult | Where-Object {$_.Status -ne "SUCCESS"} | FL Title,Status,Severity,Description,Remediation
    

    下面是示例输出:

    Title       : The machine proxy on each failover cluster node should be set to a local proxy server 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : https://learn.microsoft.com/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness 
    
    Title       : The CAU clustered role should be installed on the failover cluster to enable self-updating mode 
    Status      : FAILURE 
    Severity    : INFORMATIONAL 
    Description : Validating cluster setup for update. 
    Remediation : https://learn.microsoft.com/en-us/windows-server/failover-clustering/cluster-aware-updating-requirements# 
              tests-for-cluster-updating-readiness
    
  4. 查看失败测试中的 Remediation 字段,并酌情采取措施解决问题。

  5. 解决失败后,运行以下命令再次调用更新准备情况检查:

    Get-SolutionUpdate -Id <some ID> | Start-SolutionUpdate -PrepareOnly
    

排查更新失败的原因

如果存在导致更新失败的问题,检查详细的步骤进度以确定失败的地方通常是确定问题是可以通过简单的修复(和恢复)即可修复还是需要支持人员参与来解决问题的最佳方法。 失败步骤需要注意的关键事项包括:

  • 失败步骤的名称和描述。

  • 导致步骤失败的计算机或服务器(如果是计算机特定的问题)。

  • 失败消息字符串(可能会将问题识别为具有记录在案的解决措施的特定已知问题)。

Microsoft 建议使用 Azure 门户来识别失败步骤的信息,如恢复更新所示。 或者,请参阅下一部分,了解如何使用 Start-MonitoringActionplanInstanceToComplete在 PowerShell 中查看类似的详细信息。

有关更新失败情形和修正指南,请参阅下表。

步骤名称 问题类型 整改
任意 更新期间系统断电或其他类似的中断。 1. 还原电源。
2.运行系统运行状况检查。
3.恢复更新。
CAU 更新 群集感知更新 (CAU) 更新运行失败,出现 max retries exceeded 故障。 如果有迹象表明已进行多次 CAU 尝试并且全部失败,通常最好先调查第一次失败。

使用第一次失败的开始时间和结束时间与正确的 Get-CauReport 输出相匹配,以便进一步调查失败。
任意 一个或多个节点上的内存、电源、启动驱动程序或类似严重故障。 请参阅 修复 Azure 本地版本 23H2 上的节点,了解如何修复失败的节点。
修复节点后,可以恢复更新。

收集更新日志

还可以收集诊断日志来帮助Microsoft识别和解决问题。

若要使用 Azure 门户收集更新的日志,请参阅恢复更新

若要收集更新失败的日志,请参阅 收集 Azure 本地版本 23H2的诊断日志。

查看更新摘要报告

若要使用 PowerShell 查看详细的更新摘要报告,请在用于访问系统的客户端上执行以下步骤:

  1. 与计算机建立远程 PowerShell 会话。 以管理员身份运行 PowerShell 并运行以下命令:

    Enter-PSSession -ComputerName <machine_IP_address> -Credential <username\password for the machine>
    
  2. 获取所有解决方案更新,然后筛选与特定版本对应的解决方案更新。 使用的版本对应于无法安装的解决方案更新的版本。

    $Update = Get-SolutionUpdate | ? Version -eq "<Version string>" -verbose
    
  3. 为失败的解决方案更新运行确定操作计划。

    $Failure = $update | Get-SolutionUpdateRun
    
  4. 为更新确定 ResourceID

    $Failure
    

    下面是示例输出:

    PS C:\Users\lcmuser> $Update = Get-SolutionUpdate| ? Version -eq "10.2303.1.7" -verbose
    PS C:\Users\lcmuser> $Failure = $Update|Get-SolutionUpdateRun
    PS C:\Users\lcmuser> $Failure
    
    ResourceId      : redmond/Solution10.2303.1.7/6bcc63af-b1df-4926-b2bc-26e06f460ab0
    Progress        : Microsoft.AzureStack.Services.Update.ResourceProvider.UpdateService.Models.Step
    TimeStarted     : 4/21/2023 10:02:54 PM
    LastUpdatedTime : 4/21/2023 3:19:05 PM
    Duration        : 00:16:37.9688878
    State           : Failed
    

    记下 ResourceID GUID。 此 GUID 对应于 ActionPlanInstanceID.

  5. 查看之前记录的 ActionPlanInstanceID 摘要。

    Start-MonitoringActionplanInstanceToComplete -actionPlanInstanceID <Action Plan Instance ID>
    

    下面是示例输出:

    PS C:\Users\lcmuser> Start-MonitoringActionplanInstanceToComplete -actionPlanInstanceID 6bcc63af-b1df-4926-b2bc-26e06f460ab0
    

    Powershell 收集日志输出的屏幕截图。

恢复更新

若要恢复以前失败的更新运行,可以通过 Azure 门户 或 PowerShell 重试更新运行。

Azure 门户

强烈建议使用Azure 门户浏览到失败的更新,然后选择“重试”按钮。 此功能在更新下载、检查就绪情况和更新运行的安装阶段可用。

重试失败更新按钮的屏幕截图。

如果无法成功重新运行失败的更新或需要进一步排查错误,请执行以下步骤:

  1. 选择错误的查看详细信息

  2. 打开详细信息框后,可以查看错误详细信息。 有关收集诊断日志的详细信息,可以单击“开具支持票证”按钮附近的如何收集日志链接。

    下载错误日志的屏幕截图。

    有关检索日志的详细信息,请参阅 收集 Azure 本地的诊断日志。

  3. 此外,还可以选择开具支持票证按钮,填写相应的信息,并附加日志,以便 Microsoft 支持部门可以使用。

    开具支持票证的屏幕截图 。

有关创建支持票证的详细信息,请参阅 创建支持请求

PowerShell

如果使用 PowerShell 并且需要恢复以前失败的更新运行,请使用以下命令:

Get-SolutionUpdate | ? Version -eq "10.2302.0.31" | Start-SolutionUpdate

若要恢复以前因处于警告状态的更新运行状况检查而失败的更新,请使用以下命令:

Get-SolutionUpdate | ? Version -eq "10.2302.0.31" | Start-SolutionUpdate -IgnoreWarnings

后续步骤

详细了解如何 通过 PowerShell 运行更新。

详细了解如何通过Azure 门户运行更新。