查看运行状况服务故障

适用于:Azure Stack HCI 版本 21H2 和 20H2、Windows Server 2022、Windows Server 2019

运行状况服务持续监视存储空间直通群集,以检测问题并生成“故障”。cmdlet 显示任何当前故障,让你能够轻松验证部署的运行状况,而无需逐一查看每个实体或功能。 故障的描述非常精确、易于理解,且可操作。

每个故障包含五个重要的字段:

  • 严重性
  • 问题的描述
  • 用于解决问题的建议后续步骤
  • 故障实体的标识信息
  • 其物理位置(如果适用)

例如,以下是一个典型的故障:

Severity: MINOR
Reason: Connectivity has been lost to the physical disk.
Recommendation: Check that the physical disk is working and properly connected.
Part: Manufacturer Contoso, Model XYZ9000, Serial 123456789
Location: Seattle DC, Rack B07, Node 4, Slot 11

注意

物理位置源自故障域配置。 有关容错域的详细信息,请参阅容错域感知。 如果未提供此信息,则位置字段的帮助较小。 例如,它可能只显示插槽编号。

根本原因分析

运行状况服务可以评估故障实体之间的潜在因果关系以标识和合并由相同根本问题导致的故障。 通过识别作用链,可降低报告的繁琐性。 例如,如果服务器关闭,则预计服务器内的任何驱动器也将无法连接。 因此,根本原因(本例中为服务器)只引发一个错误。

PowerShell 中的用法

若要在 PowerShell 中查看任何当前故障,请运行以下 cmdlet:

Get-HealthFault

这会返回任何影响整体存储空间直通群集的故障。 大多数情况下,这些故障与硬件或配置相关。 如果没有故障,cmdlet 将不返回任何内容。

注意

在非生产环境中,你可以自行触发故障来试验此功能,风险由你自己承担。 例如,可以通过删除一个物理磁盘或关闭一个节点来这样做。 故障出现后,重新插入物理磁盘或重启节点,以使故障消失。

.NET 和 C# 中的用法

本部分演示如何连接到运行状况服务、使用发现对象和运行故障查询。

连接

为了查询运行状况服务,你需与群集建立一个 CimSession。 为此,需要一些仅在完整的 Microsoft.NET 中可用的内容,这意味着你无法直接从 Web 或移动应用中轻松完成此操作。 本部分中的代码示例使用 C#,这是此数据访问层的最直接的选择。

using System.Security;
using Microsoft.Management.Infrastructure;

public CimSession Connect(string Domain = "...", string Computer = "...", string Username = "...", string Password = "...")
{
    SecureString PasswordSecureString = new SecureString();
    foreach (char c in Password)
    {
        PasswordSecureString.AppendChar(c);
    }

    CimCredential Credentials = new CimCredential(
        PasswordAuthenticationMechanism.Default, Domain, Username, PasswordSecureString);
    WSManSessionOptions SessionOptions = new WSManSessionOptions();
    SessionOptions.AddDestinationCredentials(Credentials);
    Session = CimSession.Create(Computer, SessionOptions);
    return Session;
}

提供的用户名应为目标计算机的本地管理员。

建议直接根据用户输入实时构造 Password SecureString,这样密码就永远不会以明文方式存储在内存中。 这有助于缓解各种安全问题。 但在实践中,按如上所述构造它对于原型制作来说很常见。

发现对象

建立 CimSession 后,可查询群集上的 Windows Management Instrumentation (WMI)。

在获取故障或指标之前,需要获取多个相关对象的实例。 首先,获取表示群集上的存储空间直通的 MSFT_StorageSubSystem。 使用它可以获取群集中的每个 MSFT_StorageNode 和数据卷的每个 MSFT_Volume。 最后,需要获取 MSCluster_ClusterHealthService,即运行状况服务本身。

CimInstance Cluster;
List<CimInstance> Nodes;
List<CimInstance> Volumes;
CimInstance HealthService;

public void DiscoverObjects(CimSession Session)
{
    // Get MSFT_StorageSubSystem for Storage Spaces Direct
    Cluster = Session.QueryInstances(@"root\microsoft\windows\storage", "WQL", "SELECT * FROM MSFT_StorageSubSystem")
        .First(Instance => (Instance.CimInstanceProperties["FriendlyName"].Value.ToString()).Contains("Cluster"));

    // Get MSFT_StorageNode for each cluster node
    Nodes = Session.EnumerateAssociatedInstances(Cluster.CimSystemProperties.Namespace,
        Cluster, "MSFT_StorageSubSystemToStorageNode", null, "StorageSubSystem", "StorageNode").ToList();

    // Get MSFT_Volumes for each data volume
    Volumes = Session.EnumerateAssociatedInstances(Cluster.CimSystemProperties.Namespace,
        Cluster, "MSFT_StorageSubSystemToVolume", null, "StorageSubSystem", "Volume").ToList();

    // Get MSFT_StorageHealth itself
    HealthService = Session.EnumerateAssociatedInstances(Cluster.CimSystemProperties.Namespace,
        Cluster, "MSFT_StorageSubSystemToStorageHealth", null, "StorageSubSystem", "StorageHealth").First();
}

这些是你在 PowerShell 中使用 cmdlet(如 Get-StorageSubSystem、Get-StorageNode 和 Get-Volume)得到的相同对象。

你可以访问记录在存储管理 API 类中的所有相同属性。

using System.Diagnostics;

foreach (CimInstance Node in Nodes)
{
    // For illustration, write each node's Name to the console. You could also write State (up/down), or anything else!
    Debug.WriteLine("Discovered Node " + Node.CimInstanceProperties["Name"].Value.ToString());
}

查询故障

调用 Diagnose 可获取范围为目标 CimInstance(可以是群集或任何卷)的任何当前故障。

Windows Server 2019 中每个范围内可用的故障的完整列表记录在稍后的覆盖率部分中。

public void GetFaults(CimSession Session, CimInstance Target)
{
    // Set Parameters (None)
    CimMethodParametersCollection FaultsParams = new CimMethodParametersCollection();
    // Invoke API
    CimMethodResult Result = Session.InvokeMethod(Target, "Diagnose", FaultsParams);
    IEnumerable<CimInstance> DiagnoseResults = (IEnumerable<CimInstance>)Result.OutParameters["DiagnoseResults"].Value;
    // Unpack
    if (DiagnoseResults != null)
    {
        foreach (CimInstance DiagnoseResult in DiagnoseResults)
        {
            // TODO: Whatever you want!
        }
    }
}

可选:MyFault 类

构造并保留自己的故障表示形式可能是有意义的。 例如,MyFault 类存储多个故障的关键属性(包括 FaultId),稍后可以使用这些属性来关联更新、删除通知或在多次检测到同一故障时删除重复故障。

public class MyFault {
    public String FaultId { get; set; }
    public String Reason { get; set; }
    public String Severity { get; set; }
    public String Description { get; set; }
    public String Location { get; set; }

    // Constructor
    public MyFault(CimInstance DiagnoseResult)
    {
        CimKeyedCollection<CimProperty> Properties = DiagnoseResult.CimInstanceProperties;
        FaultId     = Properties["FaultId"                  ].Value.ToString();
        Reason      = Properties["Reason"                   ].Value.ToString();
        Severity    = Properties["PerceivedSeverity"        ].Value.ToString();
        Description = Properties["FaultingObjectDescription"].Value.ToString();
        Location    = Properties["FaultingObjectLocation"   ].Value.ToString();
    }
}
List<MyFault> Faults = new List<MyFault>;

foreach (CimInstance DiagnoseResult in DiagnoseResults)
{
    Faults.Add(new Fault(DiagnoseResult));
}

每个故障 (DiagnoseResult) 中属性的完整列表记录在稍后的故障属性部分。

故障事件

创建、删除或更新故障时,运行状况服务会生成 WMI 事件。 这些对于保持应用程序状态同步而不需要频繁轮询至关重要,并且可以帮助确定何时发送电子邮件警报等。 为了订阅这些事件,下面的示例代码使用观察程序设计模式。

首先,订阅 MSFT_StorageFaultEvent 事件。

public void ListenForFaultEvents()
{
    IObservable<CimSubscriptionResult> Events = Session.SubscribeAsync(
        @"root\microsoft\windows\storage", "WQL", "SELECT * FROM MSFT_StorageFaultEvent");
    // Subscribe the Observer
    FaultsObserver<CimSubscriptionResult> Observer = new FaultsObserver<CimSubscriptionResult>(this);
    IDisposable Disposeable = Events.Subscribe(Observer);
}

接下来,实现其 OnNext() 方法在每次生成新事件时被调用的观察程序。

每个事件都包含 ChangeType(用于指示是创建、删除还是更新了故障),以及相关的 FaultId。

此外,每个事件都包含故障本身的所有属性。

class FaultsObserver : IObserver
{
    public void OnNext(T Event)
    {
        // Cast
        CimSubscriptionResult SubscriptionResult = Event as CimSubscriptionResult;

        if (SubscriptionResult != null)
        {
            // Unpack
            CimKeyedCollection<CimProperty> Properties = SubscriptionResult.Instance.CimInstanceProperties;
            String ChangeType = Properties["ChangeType"].Value.ToString();
            String FaultId = Properties["FaultId"].Value.ToString();

            // Create
            if (ChangeType == "0")
            {
                Fault MyNewFault = new MyFault(SubscriptionResult.Instance);
                // TODO: Whatever you want!
            }
            // Remove
            if (ChangeType == "1")
            {
                // TODO: Use FaultId to find and delete whatever representation you have...
            }
            // Update
            if (ChangeType == "2")
            {
                // TODO: Use FaultId to find and modify whatever representation you have...
            }
        }
    }
    public void OnError(Exception e)
    {
        // Handle Exceptions
    }
    public void OnCompleted()
    {
        // Nothing
    }
}

了解故障生命周期

故障不应标记为“已发现”或由用户解决。 故障是在运行状况服务发现问题时创建的,并且只有在运行状况服务不再观察到该问题时才会自动被删除。 一般情况下,这反映了问题已得到解决。

但是,在某些情况下(如在故障转移之后、连接时好时坏等),运行状况服务可能会重新发现故障。 因此,保留自己的故障表示形式可能有意义,以便可以轻松删除重复故障。 在发送电子邮件警报或等效项时,这一点尤其重要。

故障属性

下表显示了故障对象的多个关键属性。 对于完整的架构,请检查 storagewmi.mof 中的 MSFT_StorageDiagnoseResult 类。

属性 示例
FaultId {12345-12345-12345-12345-12345}
FaultType Microsoft.Health.FaultType.Volume.Capacity
Reason “卷的可用空间不足。”
PerceivedSeverity 5
FaultingObjectDescription Contoso XYZ9000 S.N. 123456789
FaultingObjectLocation 机架 A06,RU 25,插槽 11
RecommendedActions {“扩展卷。”,“将工作负载迁移到其他卷。”}

FaultId:一个群集范围内的唯一 ID。

PerceivedSeverity:PerceivedSeverity = { 4, 5, 6 } = {“信息”,“警告”和“错误”},或等效颜色(如蓝色、黄色和红色)。

FaultingObjectDescription:硬件的部分信息,通常软件对象为空白。

FaultingObjectLocation:硬件的位置信息,通常软件对象为空白。

RecommendedActions:独立且无特定顺序的建议操作列表。 目前,此列表的长度通常为 1。

故障事件属性

下表显示了故障事件的多个关键属性。 对于完整的架构,请检查 storagewmi.mof 中的 MSFT_StorageFaultEvent 类。

记下 ChangeType(指示是创建、删除还是更新了故障)和 FaultId。 事件还包含受影响故障的所有属性。

属性 示例
ChangeType 0
FaultId {12345-12345-12345-12345-12345}
FaultType Microsoft.Health.FaultType.Volume.Capacity
Reason “卷的可用空间不足。”
PerceivedSeverity 5
FaultingObjectDescription Contoso XYZ9000 S.N. 123456789
FaultingObjectLocation 机架 A06,RU 25,插槽 11
RecommendedActions {“扩展卷。”,“将工作负载迁移到其他卷。”}

ChangeType ChangeType = { 0, 1, 2 } = {“创建”,“删除”,“更新”}。

覆盖率

在 Windows Server 2019 和 Azure Stack HCI 中,运行状况服务提供以下故障覆盖范围:

PhysicalDisk (31)

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailedMedia

  • 严重性:警告
  • Reason:“物理磁盘发生故障。”
  • RecommendedAction:“更换物理磁盘。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.LostCommunication

  • 严重性:警告
  • Reason:“与物理磁盘的连接已丢失。”
  • RecommendedAction:“检查物理磁盘是否工作正常且连接正确。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.Unresponsive

  • 严重性:警告
  • Reason:“物理磁盘反复出现无响应。”
  • RecommendedAction:“更换物理磁盘。”

FaultType:icrosoft.Health.FaultType.PhysicalDisk.PredictiveFailure

  • 严重性:警告
  • Reason:“预计物理磁盘很快会出现故障。”
  • RecommendedAction:“更换物理磁盘。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.UnsupportedHardware

  • 严重性:警告
  • Reason:“物理磁盘已被隔离,因为它不受解决方案供应商的支持。”
  • RecommendedAction:“将物理磁盘替换为支持的硬件。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.UnsupportedFirmware

  • 严重性:警告
  • Reason:“物理磁盘处于隔离状态,因为其固件版本不受解决方案供应商支持。”
  • RecommendedAction:“将物理磁盘上的固件更新到目标版本。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.UnrecognizedMetadata

  • 严重性:警告
  • Reason:“物理磁盘包含无法识别的元数据。”
  • RecommendedAction:“此磁盘可能包含来自未知存储池的数据。首先确保此磁盘上没有有用的数据,然后重置磁盘。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailedFirmwareUpdate

  • 严重性:警告
  • Reason:“尝试更新物理磁盘上的固件失败。”
  • RecommendedAction:“尝试使用其他固件二进制文件。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.SblFailedMedia

  • 严重性:警告
  • Reason:“驱动器发生故障。”
  • RecommendedAction:“更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.SblUnresponsive

  • 严重性:警告
  • Reason:“物理磁盘反复出现无响应。”
  • RecommendedAction:“更换物理磁盘。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureBadBlock

  • 严重性:警告
  • Reason:“驱动器在写入过程中报告了错误块。偶尔出现错误块是正常的,但错误块过多可能意味着驱动器工作不正常、损坏或开始出现故障。”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureBadBlockRead

  • 严重性:警告
  • Reason:“驱动器在读取过程中报告了错误块。偶尔出现错误块是正常的,但错误块过多可能意味着驱动器工作不正常、损坏或开始出现故障。”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureIoRetry

  • 严重性:警告
  • Reason:“驱动器需要多次尝试读取或写入。如果这种情况持续发生,这可能意味着驱动器工作不正常、损坏或开始出现故障。”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

注意

此故障默认禁用。 若要启用它,请将运行状况设置 System.Storage.PhysicalDisk.MarginalFailure.EventBased.IoRetry.Enabled 设置为 true

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureIoFailure

  • 严重性:警告
  • Reason:“驱动器无法读取或写入。如果这种情况持续发生,这可能意味着驱动器工作不正常、损坏或开始出现故障。”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

注意

此故障默认禁用。 若要启用它,请将运行状况设置 System.Storage.PhysicalDisk.MarginalFailure.EventBased.IoFailure.Enabled 设置为 true

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureSmart

  • 严重性:警告
  • Reason:“驱动器使用 SMART(自我监视、分析和报告技术)向 Windows 报告了以下潜在问题”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureHighWear

  • 严重性:警告
  • Reason:“驱动器已达到高百分比的额定写入耐力。当驱动器达到 100% 的额定耐力时,它可能变为只读,这意味着它无法再执行任何写入操作。查看数据工作表或询问制造商有关耐力额定值和生命周期终止行为的更多详细信息。”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.FailureReadOnly

  • 严重性:警告
  • Reason:“驱动器已达到 100% 的额定写入耐力,现已变为只读,这意味着它不能再执行任何写入操作。固态硬盘在写入一定数量后会损耗,这因驱动器的额定耐力值而异。有关详细信息,请查看驱动器规格或询问制造商有关额定耐力值和生命周期终止行为的信息。”
  • RecommendedAction:“如果这种情况持续发生或你观察到性能下降,请考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.HighLatency.SlowestIO

  • 严重性:警告
  • Reason:“驱动器具有高峰值延迟。”
  • RecommendedAction:“监视驱动器的性能,并考虑更换驱动器。”

注意

此故障默认禁用。 若要启用它,请将运行状况设置 System.Storage.PhysicalDisk.HighLatency.Threshold.Tail.Enabled 设置为 true

FaultType:Microsoft.Health.FaultType.PhysicalDisk.HighLatency.AverageIO

  • 严重性:警告
  • Reason:“驱动器具有高平均延迟。”
  • RecommendedAction:“监视驱动器的性能,并考虑更换驱动器。”

注意

此故障默认禁用。 若要启用它,请将运行状况设置 System.Storage.PhysicalDisk.HighLatency.Threshold.Tail.Enabled 设置为 true

FaultType:Microsoft.Health.FaultType.PhysicalDisk.HighLatency.Outlier.AverageIO

  • 严重性:警告
  • Reason:“驱动器具有高平均延迟。”
  • RecommendedAction:“监视驱动器的性能,并考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.HighLatency.Outlier.SlowestIO

  • 严重性:警告
  • Reason:“驱动器具有高峰值延迟。”
  • RecommendedAction:“监视驱动器的性能,并考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.HighErrorCount.AverageIO

  • 严重性:警告
  • Reason:“驱动器有大量错误。”
  • RecommendedAction:“监视驱动器的性能,并考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.HighErrorCount.Outlier.AverageIO

  • 严重性:警告
  • Reason:“驱动器有大量错误。”
  • RecommendedAction:“监视驱动器的性能,并考虑更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.CacheReadOnly

  • 严重性:警告
  • Reason:“缓存驱动器无法执行某些读取和写入操作,因此,为了保护数据,我们已将其移动到容量驱动器。”
  • RecommendedAction:“更换驱动器或尝试清除并重置它。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.CacheReadOnly.Draining

  • 严重性:警告
  • Reason:“缓存驱动器无法执行某些写入或读取操作。为了保护数据,我们已停止写入缓存驱动器,并且正在尝试将其数据移到容量驱动器上。”
  • RecommendedAction:“请稍候,正在移动数据。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.CacheReadOnly.FailedDrain

  • 严重性:警告
  • Reason:“无法读取缓存驱动器上的某些数据,因而无法将其移动到容量驱动器上。”
  • RecommendedAction:“更换驱动器。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.SedEncKey.RotationFailure

  • 严重性:警告
  • Reason:“将 SED 加密密钥轮换到新默认值的尝试失败。”
  • RecommendedAction:“检查驱动器是否正常工作并正确连接。如果驱动器发生故障,则更换它。驱动器运行正常后,重启 SED 加密密钥轮换。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.SedEncKey.NotDefault

  • 严重性:警告
  • Reason:“物理磁盘具有 SED 加密密钥,但它与当前默认密钥不匹配。”
  • RecommendedAction:“启动 SED 加密密钥轮换。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.SedEncKey.NotDefined

  • 严重性:警告
  • Reason:“驱动器没有定义的默认 SED 加密密钥。”
  • RecommendedAction:“设置默认 SED 加密密钥。”

FaultType:Microsoft.Health.FaultType.StorageScaleUnit.SedEncKey.RotationTimeout

  • 严重性:警告
  • Reason:“超时前未能完成服务器上的 SED 加密密钥轮换”
  • RecommendedAction:“确保服务器可访问,且所有物理磁盘都正常运行。”

FaultType:Microsoft.Health.FaultType.PhysicalDisk.DriveArriveFailure

  • 严重性:警告
  • Reason:“物理磁盘查询失败。”
  • RecommendedAction:“请验证网络可靠性。如果问题仍然存在,请考虑更换设备。”

虚拟磁盘 (3)

FaultType:Microsoft.Health.FaultType.VirtualDisks.NeedsRepair

  • 严重性:信息
  • Reason:“此卷上的某些数据并非完全可复原。它仍然可以访问。”
  • RecommendedAction:“正在还原数据的复原能力。”

FaultType:Microsoft.Health.FaultType.VirtualDisks.Detached

  • Severity:严重
  • Reason:“卷无法访问。某些数据可能丢失。”
  • RecommendedAction:“检查所有存储设备的物理和/或网络连接。你可能需要从备份中还原。”

FaultType:Microsoft.Health.FaultType.VirtualDisks.NoRedundancy

  • Severity:严重
  • Reason:“所有数据副本在虚拟磁盘的一个区域中均不可用。工作负载可能会中断,且可能会观察到 IO 故障。”
  • RecommendedAction:“如果维护操作正在进行中,请暂停该操作并还原对所有存储的访问,直到存储稳定下来。”

池容量 (2)

FaultType:Microsoft.Health.FaultType.StoragePool.TransactionAndCleanupFailure

  • 严重性:警告
  • Reason:“存储池无法写入一批元数据设备。工作负载可能会中断,且可能会观察到 IO 故障。”
  • RecommendedAction:“如果维护操作正在进行中,请暂停该操作并还原对所有存储的访问,直到存储稳定下来。”

FaultType:Microsoft.Health.FaultType.StoragePool.PoolCapacityThresholdExceeded

  • 严重性:警告
  • Reason:“存储池的容量不足。”
  • RecommendedAction:“向存储池添加额外容量或释放容量。”

卷容量 (5)1

FaultType:Microsoft.Health.FaultType.Volume.Capacity

  • 严重性:警告
  • Reason:“卷的可用空间不足。”
  • RecommendedAction:“扩展卷或将工作负载迁移到其他卷。”

FaultType:Microsoft.Health.FaultType.Volume.FileSystem.Corruption.Correctable

  • 严重性:警告
  • Reason:“文件系统检测到校验和错误,并能够更正它。”
  • RecommendedAction:“从任务计划程序启动数据完整性扫描,存储可能会出现问题。如果有更新或维护操作正在进行,请立即停止。你可能需要从备份中还原。”

FaultType:Microsoft.Health.FaultType.Volume.FileSystem.Corruption.Uncorrectable

  • 严重性:警告
  • Reason:“文件系统检测到校验和错误,但不能够更正它。”
  • RecommendedAction:“从任务计划程序启动数据完整性扫描,存储可能会出现问题。如果有更新或维护操作正在进行,请立即停止。你可能需要从备份中还原。”

FaultType:Microsoft.Health.FaultType.Volume.FileSystem.Corruption.Uncorrectable.DataRemoved

  • 严重性:警告
  • Reason:“文件系统检测到文件或文件夹损坏。文件或文件夹已从文件系统命名空间中删除。”
  • RecommendedAction:“从任务计划程序启动数据完整性扫描,存储可能会出现问题。如果有更新或维护操作正在进行,请立即停止。你可能需要从备份中还原。”

FaultType:Microsoft.Health.FaultType.Volume.FileSystem.Corruption.Uncorrectable.DataRemovalFailure

  • 严重性:警告
  • Reason:“文件系统检测到文件或文件夹损坏。文件系统可能未能将其从文件系统命名空间中删除。”
  • RecommendedAction:“从任务计划程序启动数据完整性扫描,存储可能会出现问题。如果有更新或维护操作正在进行,请立即停止。你可能需要从备份中还原。”

服务器 (12)

FaultType:Microsoft.Health.FaultType.Server.Down

  • Severity:严重
  • Reason:“无法访问服务器。”
  • RecommendedAction:“启动或更换服务器。”

FaultType:Microsoft.Health.FaultType.Server.Isolated

  • Severity:严重
  • Reason:“由于连接问题,服务器已与群集相隔离。”
  • RecommendedAction:“如果隔离仍然存在,请检查网络或将工作负载迁移到其他节点。”

FaultType:Microsoft.Health.FaultType.Server.Quarantined

  • Severity:严重
  • Reason:“由于反复出现故障,服务器被群集隔离。”
  • RecommendedAction:“更换服务器或修复网络。”

FaultType:Microsoft.Health.FaultType.Server.Temperature

  • 严重性:警告
  • Reason:“服务器温度传感器已发出警告。”
  • RecommendedAction:“查看服务器温度。”

FaultType:Microsoft.Health.FaultType.Server.Storage.Degraded

  • 严重性:警告
  • Reason:“服务器的存储不完整或不是最新,因此我们需要将其与群集中其他服务器的数据同步。这是服务器重启或驱动器出现故障后的正常现象。”
  • RecommendedAction:“请稍后,正在同步存储。在我们确认同步完成之前,请勿在群集中删除任何驱动器或重启任何服务器。”

FaultType:Microsoft.Health.FaultType.Node.CPUOverloaded

  • 严重性:警告
  • Reason:“服务器的 CPU 利用率始终超过阈值。”
  • RecommendedAction:“将虚拟机移动到 CPU 使用率较低的其他服务器,或考虑向群集添加额外的计算容量(通常通过添加服务器)。”

FaultType:Microsoft.Health.FaultType.Node.VCPUToLCPU

  • 严重性:警告
  • Reason:“此服务器上的虚拟处理器与逻辑处理器(线程)的比例已超过所配置的阈值。”
  • RecommendedAction:“将虚拟机移动到 CPU 使用率较低的其他服务器,或考虑向群集添加额外的计算容量。”

FaultType:Microsoft.Health.FaultType.Node.LowFreeRam

  • 严重性:警告
  • Reason:“可用内存低于所配置的阈值。”
  • RecommendedAction:“将虚拟机移动到 CPU 使用率较低的其他服务器,或考虑向群集添加额外的计算容量。”

FaultType:Microsoft.Health.FaultType.Node.HighRootPartitionMemoryUsage

  • 严重性:警告
  • Reason:“Windows Server 消耗了大量物理内存,这超出了所配置的阈值。”
  • RecommendedAction:“检查消耗过多内存的进程或应用,将虚拟机移动到其他服务器或向服务器添加内存。”

FaultType:Microsoft.Health.FaultType.Node.TooHighCpuReservation

  • 严重性:警告
  • Reason:“此服务器上虚拟机的组合 CPU 预留超过了所配置的阈值。”
  • RecommendedAction:“考虑移动虚拟机或减少其 CPU 预留。”

FaultType:Microsoft.Health.FaultType.Node.TooHighMemoryUseAfterReclamation

  • 严重性:警告
  • Reason:“此服务器上虚拟机的组合内存分配超过了所配置的阈值。”
  • RecommendedAction:“考虑移动虚拟机或减少其分配的内存。”

FaultType:Microsoft.Health.FaultType.Node.SustainedHighCpuUsage

  • 严重性:警告
  • Reason:“服务器的 CPU 使用率始终超过阈值。”
  • RecommendedAction:“将虚拟机移动到 CPU 使用率较低的其他服务器,或考虑添加更多计算容量。”

群集 (6)

FaultType:Microsoft.Health.FaultType.ClusterQuorumWitness.Error

  • Severity:严重
  • Reason:“群集只要出现一个服务器故障就会关闭。”
  • RecommendedAction:“检查见证资源,并根据需要重启。启动或更换失败的服务器。”

FaultType:Microsoft.Health.FaultType.Cluster.ValidationReport.Failed

  • Severity:严重
  • Reason:“群集验证已发现问题。”
  • RecommendedAction:“群集验证已发现某些类别的测试中出现故障。请参阅群集验证报告。”

FaultType:Microsoft.Health.FaultType.Cluster.ValidationReportDcb.Failed

  • Severity:严重
  • Reason:“验证-DCB 已发现问题。”
  • RecommendedAction:“验证-DCB 已发现网络错误。请参阅 DCB 验证报告。”

FaultType:Microsoft.Health.FaultType.Cluster.TooHighCpuReservation

  • Severity:严重
  • Reason:“此服务器上虚拟机的组合 CPU 预留超过了所配置的阈值。”
  • RecommendedAction:“考虑移动虚拟机或减少其 CPU 预留。”

FaultType:Microsoft.Health.FaultType.Cluster.TooHighMemoryUseAfterReclamation

  • Severity:严重
  • Reason:“此服务器上虚拟机的组合内存分配超过了所配置的阈值。”
  • RecommendedAction:“考虑移动虚拟机或减少其分配的内存。”

FaultType:Microsoft.Health.FaultType.Cluster.SustainedHighCpuUsage

  • Severity:严重
  • Reason:“服务器的 CPU 使用率始终超过阈值。”
  • RecommendedAction:“将虚拟机移动到 CPU 使用率较低的其他服务器,或考虑添加更多计算容量。”

网络适配器/接口 (6)

FaultType:Microsoft.Health.FaultType.NetworkAdapter.Disconnected

  • 严重性:警告
  • Reason:“网络接口已断开连接。”
  • RecommendedAction:“重新连接网络电缆。”

FaultType:Microsoft.Health.FaultType.NetworkInterface.Missing

  • 严重性:警告
  • Reason:“服务器 {server} 缺少连接到群集网络 {cluster network} 的网络适配器。”
  • RecommendedAction:“将服务器连接到缺少的群集网络。”

FaultType:Microsoft.Health.FaultType.NetworkAdapter.Hardware

  • 严重性:警告
  • Reason:“网络接口出现了硬件故障。”
  • RecommendedAction:“更换网络接口适配器。”

FaultType:Microsoft.Health.FaultType.NetworkAdapter.Disabled

  • 严重性:警告
  • Reason:“网络接口 {network interface} 未启用,也未被使用。”
  • RecommendedAction:“启用网络接口。”

FaultType:Microsoft.Health.FaultType.StorageSubsystem.RDMA.Alert

  • 严重性:警告
  • Reason:“群集检测到网络连接问题,这些问题阻止存储空间直通正常工作。”
  • RecommendedAction:“验证网络是否配置正确且正常工作。如果使用的是 RDMA Over Converged Ethernet (RoCE),请验证数据中心桥接 (DCB)、增强型传输服务 (ETS) 和优先流控制 (PFC) 是否在每个群集节点和物理交换机上正确且一致地配置。如果不知道如何做到这一点,请咨询你的供应商或信任的人来获取帮助。”

FaultType:Microsoft.Health.FaultType.StorageSubsystem.RDMA.Disabled

  • 严重性:警告
  • Reason:“群集检测到网络连接问题,这些问题阻止存储空间直通正常工作。为了确保一致的性能和数据安全,存储空间直通已停止使用远程直接内存访问 (RDMA)(即使存在并启用了支持 RDMA 的硬件)。存储流量将继续流动,但使用 TCP/IP 会降低性能。”
  • RecommendedAction:“验证网络是否配置正确且正常工作,然后重新打开 RDMA。如果使用的是 RDMA Over Converged Ethernet (RoCE),请验证数据中心桥接 (DCB)、增强型传输服务 (ETS) 和优先流控制 (PFC) 是否在每个群集节点和物理交换机上正确且一致地配置。如果不知道如何做到这一点,请咨询你的供应商或信任的人来获取帮助。若要在关闭 RDMA 的情况下继续,可关闭此警报。”

机箱 (6)

FaultType:Microsoft.Health.FaultType.StorageEnclosure.LostCommunication

  • 严重性:警告
  • Reason:“已失去与存储机箱的通信。”
  • RecommendedAction:“启动或更换存储机箱。”

FaultType:Microsoft.Health.FaultType.StorageEnclosure.FanError

  • 严重性:警告
  • Reason:“存储机箱位置 {position} 的风扇出现故障。”
  • RecommendedAction:“更换存储机箱中的风扇。”

FaultType:Microsoft.Health.FaultType.StorageEnclosure.CurrentSensorError

  • 严重性:警告
  • Reason:“存储机箱位置 {position} 的当前传感器出现故障。”
  • RecommendedAction:“更换存储机箱中的当前传感器。”

FaultType:Microsoft.Health.FaultType.StorageEnclosure.VoltageSensorError

  • 严重性:警告
  • Reason:“存储机箱位置 {position} 的电压传感器出现故障。”
  • RecommendedAction:“更换存储机箱中的电压传感器。”

FaultType:Microsoft.Health.FaultType.StorageEnclosure.IoControllerError

  • 严重性:警告
  • Reason:“存储机箱位置 {position} 的 IO 控制器出现故障。”
  • RecommendedAction:“更换存储机箱中的 IO 控制器。”

FaultType:Microsoft.Health.FaultType.StorageEnclosure.TemperatureSensorError

  • 严重性:警告
  • Reason:“存储机箱位置 {position} 的温度传感器出现故障。”
  • RecommendedAction:“更换存储机箱中的温度传感器。”

固件推出 (3)

FaultType:Microsoft.Health.FaultType.FaultDomain.FailedMaintenanceMode

  • 严重性:警告
  • Reason:“目前无法在执行固件推出时取得进展。”
  • RecommendedAction:“验证是否所有存储空间都正常,并且当前没有容错域处于维护模式。”

FaultType:Microsoft.Health.FaultType.FaultDomain.FirmwareVerifyVersionFailed

  • 严重性:警告
  • Reason:“已取消固件推出,因为在应用固件更新后,无法读取固件版本信息或生成了意外的固件版本信息。”
  • RecommendedAction:“固件问题得到解决后,重启固件推出。”

FaultType:oft.Health.FaultType.FaultDomain.TooManyFailedUpdates

  • 严重性:警告
  • Reason:“固件推出被取消,因为太多的物理磁盘未能通过固件更新尝试。”
  • RecommendedAction:“固件问题得到解决后,重启固件推出。”

存储 QoS (3)2

FaultType:Microsoft.Health.FaultType.StorQos.InsufficientThroughput

  • 严重性:警告
  • Reason:“存储吞吐量不足以满足预留。”
  • RecommendedAction:“重新配置存储 QoS 策略。”

FaultType:Microsoft.Health.FaultType.StorQos.LostCommunication

  • 严重性:警告
  • Reason:“存储 QoS 策略管理器已与该卷失去通信。”
  • RecommendedAction:“请重启节点 {nodes}”

FaultType:Microsoft.Health.FaultType.StorQos.MisconfiguredFlow

  • 严重性:警告
  • Reason:“一个或多个存储使用者(通常是虚拟机)正在使用 id 为 {id} 的不存在的策略。”
  • RecommendedAction:“重新创建任何丢失的存储 QoS 策略。”

VM/VHD (7)

FaultType:Microsoft.Health.FaultType.Vm.BadHealthState

  • 严重性:警告
  • Reason:“虚拟机运行状况状态不佳。”
  • RecommendedAction:“对虚拟机进行故障排除。”

FaultType:Microsoft.Health.FaultType.Vm.BadOperationalStatus

  • 严重性:警告
  • Reason:“虚拟机操作状态不佳。”
  • RecommendedAction:“对虚拟机进行故障排除。”

FaultType:Microsoft.Health.FaultType.Vm.GuestUnhealthy

  • 严重性:警告
  • Reason:“虚拟机中的来宾操作系统报告了运行不正常的状态。”
  • RecommendedAction:“对虚拟机进行故障排除。”

FaultType:Microsoft.Health.FaultType.Vm.ConfigIsOffline

  • 严重性:警告
  • Reason:“虚拟机配置资源处于脱机状态,这意味着无法管理虚拟机。”
  • RecommendedAction:“使虚拟机配置联机。”

FaultType:Microsoft.Health.FaultType.Vm.NotRespondingToControlCodes

  • 严重性:警告
  • Reason:“虚拟机没有响应群集控制代码。”
  • RecommendedAction:“检查虚拟机群集资源的状态。”

FaultType:Microsoft.Health.FaultType.Vm.IsNearMemoryLimit

  • 严重性:警告
  • Reason:“虚拟机需要更多的配置的最大内存。”
  • RecommendedAction:“检查消耗过多内存的进程或应用,或考虑增加其最大内存。”

FaultType:Microsoft.Health.FaultType.Vhd.IsNearlyFull

  • 严重性:警告
  • Reason:“虚拟硬盘已达到其容量。不能再向它写入数据,这可能会对虚拟机产生负面影响。”
  • RecommendedAction:“调整虚拟硬盘的大小或删除不需要的文件。”

1 指示卷 80% 已满(次要严重性)或 90% 已满(主要严重性)。 2 指示卷上的某些 .vhd(s) 尚未达到其最小 IOPS,超过滚动 24 小时时段的 10%(次要)、30%(主要)或 50%(严重)。

注意

存储机箱组件(如风扇、电源和传感器)的运行状况派生自 SCSI 机箱服务 (SES)。 如果你的供应商不提供此信息,运行状况服务不能对其进行显示。

其他参考