다음을 통해 공유


상태 관리 서비스 결함 보기

적용 대상: Azure Stack HCI, 버전 23H2 및 22H2; Windows Server 2022, Windows Server 2019

Health Service는 저장소 공간 다이렉트 클러스터를 지속적으로 모니터링하여 문제를 감지하고 "오류"를 생성합니다. 하나의 cmdlet은 현재 오류를 표시하므로 모든 엔터티 또는 기능을 차례로 보지 않고도 배포 상태를 쉽게 확인할 수 있습니다. 오류는 정확하고, 이해하기 쉽고, 조치 가능하도록 설계되었습니다.

각 오류에는 5개의 중요한 필드가 포함됩니다.

  • 심각도
  • 문제에 대한 설명
  • 문제 해결을 위한 권장되는 다음 단계
  • 오류가 있는 엔터티에 대한 식별 정보
  • 물리적 위치(해당되는 경우)

예를 들어 다음은 일반적인 오류입니다.

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

참고

물리적 위치는 장애 도메인 구성에서 파생됩니다. 장애 도메인에 대한 자세한 내용은 장애 도메인 인식을 참조하세요. 이 정보를 제공하지 않으면 위치 필드가 덜 유용합니다. 예를 들어 슬롯 번호만 표시할 수 있습니다.

근본 원인 분석

Health Service는 오류 엔터티 간의 잠재적 인과 관계를 평가하여 동일한 기본 문제의 결과인 오류를 식별하고 결합할 수 있습니다. 효과 체인을 인식하면 보고 내용이 깔끔해집니다. 예를 들어 서버가 다운된 경우 서버 내의 모든 드라이브도 연결되지 않은 것으로 예상됩니다. 따라서 근본 원인(이 경우 서버)에 대해 하나의 오류만 발생합니다.

PowerShell의 사용량

PowerShell에서 현재 오류를 보려면 다음 cmdlet을 실행합니다.

Get-HealthFault

이렇게 하면 전체 저장소 공간 다이렉트 클러스터에 영향을 주는 모든 오류가 반환됩니다. 대부분의 경우 이러한 오류는 하드웨어 또는 구성과 관련이 있습니다. 오류가 없으면 cmdlet은 아무 것도 반환하지 않습니다.

참고

비프로덕션 환경과 사용자 고유의 위험에서 오류를 직접 트리거하여 이 기능을 실험할 수 있습니다. 예를 들어 하나의 실제 디스크를 제거하거나 노드 하나를 종료하여 이 작업을 수행할 수 있습니다. 오류가 나타나면 실제 디스크를 다시 삽입하거나 노드를 다시 시작하여 오류가 사라지도록 합니다.

.NET 및 C의 사용량#

이 섹션에서는 Health Service에 연결하고, 개체 검색을 사용하고, 오류 쿼리를 실행하는 방법을 보여 줍니다.

연결

상태 서비스를 쿼리하기 위해 클러스터를 사용하여 CimSession 을 설정합니다. 이렇게 하려면 전체 Microsoft .NET에서만 사용할 수 있는 몇 가지 항목이 필요합니다. 즉, 웹 또는 모바일 앱에서 직접 이 작업을 수행할 수 없습니다. 이 섹션의 코드 샘플은 이 데이터 액세스 계층에서 가장 간단한 선택인 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;
}

제공된 사용자 이름은 대상 컴퓨터의 로컬 관리자여야 합니다.

암호가 일반 텍스트로 메모리에 저장되지 않도록 사용자 입력에서 직접 암호 SecureString 을 실시간으로 생성하는 것이 좋습니다. 이렇게 하면 다양한 보안 문제를 완화할 수 있습니다. 그러나 실제로 위와 같이 구성하는 것은 프로토타입 제작 목적으로 일반적입니다.

개체 검색

CimSession이 설정되면 클러스터에서 WMI(Windows Management Instrumentation)를 쿼리할 수 있습니다.

오류 또는 메트릭을 가져오기 전에 여러 관련 개체의 인스턴스를 가져와야 합니다. 먼저 클러스터의 저장소 공간 다이렉트 나타내는 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();
}

Get-StorageSubSystem, Get-StorageNodeGet-Volume과 같은 cmdlet을 사용하여 PowerShell에서 가져오는 것과 동일한 개체입니다.

스토리지 관리 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());
}

쿼리 오류

진단을 호출하여 클러스터 또는 볼륨일 수 있는 대상 CimInstance로 범위가 지정된 현재 오류를 가져옵니다.

Windows Server 2019의 각 scope 사용할 수 있는 오류의 전체 목록은 적용 범위 섹션의 뒷부분에 설명되어 있습니다.

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() 메서드가 호출되는 Observer를 구현합니다.

각 이벤트에는 오류가 생성, 제거 또는 업데이트되었는지 여부와 관련 FaultId를 나타내는 ChangeType이 포함됩니다.

또한 각 이벤트에는 오류 자체의 모든 속성이 포함됩니다.

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
    }
}

오류 수명 주기 이해

오류는 사용자가 "표시됨"으로 표시하거나 확인할 수 없습니다. 보건 서비스가 문제를 관찰할 때 생성되며, 보건 서비스가 더 이상 문제를 관찰할 수 없는 후에만 자동으로 제거됩니다. 일반적으로 문제가 해결되었음을 반영합니다.

그러나 경우에 따라 장애 조치(failover) 후, 간헐적 연결 등과 같이 상태 서비스에서 오류를 다시 검색할 수 있습니다. 이러한 이유로 오류의 고유한 표현을 유지하는 것이 합리적일 수 있으므로 쉽게 중복 제거할 수 있습니다. 이는 전자 메일 경고 또는 이와 동등한 경고를 보내는 경우에 특히 중요합니다.

오류 속성

다음 표에서는 장애 개체의 몇 가지 주요 속성을 제공합니다. 전체 스키마의 경우 storagewmi.mofMSFT_StorageDiagnoseResult 클래스를 검사합니다.

속성 예제
FaultId {12345-12345-12345-12345-12345}
FaultType Microsoft.Health.FaultType.Volume.Capacity
이유 "볼륨에 사용 가능한 공간이 부족합니다."
인식 심각도 5
FaultingObjectDescription Contoso XYZ9000 S.N. 123456789
FaultingObjectLocation Rack A06, RU 25, 슬롯 11
RecommendedActions {"볼륨 확장", "워크로드를 다른 볼륨으로 마이그레이션"}

FaultId: 한 클러스터의 scope 내의 고유 ID입니다.

PerceivedSeverity: PerceivedSeverity = { 4, 5, 6 } = { "Informational", "Warning", "Error" }, 또는 파란색, 노란색 및 빨간색과 같은 동등한 색입니다.

FaultingObjectDescription: 하드웨어에 대한 부분 정보이며 일반적으로 소프트웨어 개체의 경우 비어 있습니다.

FaultingObjectLocation: 하드웨어의 위치 정보이며 일반적으로 소프트웨어 개체의 경우 비어 있습니다.

RecommendedActions: 독립적이고 특정 순서 없이 권장되는 작업 목록입니다. 현재 이 목록은 길이가 1인 경우가 많습니다.

오류 이벤트 속성

다음 표에서는 오류 이벤트의 몇 가지 주요 속성을 제공합니다. 전체 스키마의 경우 storagewmi.mofMSFT_StorageFaultEvent 클래스를 검사합니다.

오류가 생성, 제거 또는 업데이트되는지 여부와 FaultId를 나타내는 ChangeType을 확인합니다. 이벤트에는 영향을 받는 오류의 모든 속성도 포함됩니다.

속성 예제
ChangeType 0
FaultId {12345-12345-12345-12345-12345}
FaultType Microsoft.Health.FaultType.Volume.Capacity
이유 "볼륨에 사용 가능한 공간이 부족합니다."
인식 심각도 5
FaultingObjectDescription Contoso XYZ9000 S.N. 123456789
FaultingObjectLocation Rack A06, RU 25, 슬롯 11
RecommendedActions {"볼륨 확장", "워크로드를 다른 볼륨으로 마이그레이션"}

ChangeType ChangeType = { 0, 1, 2 } = { "Create", "Remove", "Update" }.

적용 범위

Windows Server 2019 및 Azure Stack HCI에서 상태 서비스는 다음과 같은 오류 검사를 제공합니다.

PhysicalDisk (31)

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailedMedia

  • 심각도: 경고
  • 이유: "실제 디스크가 실패했습니다."
  • RecommendedAction: "실제 디스크 바꾸기."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.LostCommunication

  • 심각도: 경고
  • 이유: "실제 디스크에 대한 연결이 끊어졌습니다."
  • RecommendedAction: "실제 디스크가 작동하고 제대로 연결되어 있는지 확인합니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.Unresponsive

  • 심각도: 경고
  • 이유: "물리적 디스크가 되풀이되지 않는 것을 나타내고 있습니다."
  • RecommendedAction: "실제 디스크 바꾸기."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.PredictiveFailure

  • 심각도: 경고
  • 이유: "물리적 디스크의 오류는 곧 발생할 것으로 예측됩니다."
  • RecommendedAction: "실제 디스크 바꾸기."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.UnsupportedHardware

  • 심각도: 경고
  • 이유: "솔루션 공급업체에서 지원하지 않으므로 물리적 디스크가 격리됩니다."
  • RecommendedAction: "실제 디스크를 지원되는 하드웨어로 바꿉니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.UnsupportedFirmware

  • 심각도: 경고
  • 이유: "솔루션 공급업체에서 펌웨어 버전을 지원하지 않으므로 물리적 디스크가 격리됩니다."
  • RecommendedAction: "실제 디스크의 펌웨어를 대상 버전으로 업데이트합니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.UnrecognizedMetadata

  • 심각도: 경고
  • 이유: "실제 디스크에 인식할 수 없는 메타 데이터가 있습니다."
  • RecommendedAction: "이 디스크에는 알 수 없는 스토리지 풀의 데이터가 포함될 수 있습니다. 먼저 이 디스크에 유용한 데이터가 없는지 확인한 다음 디스크를 다시 설정합니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailedFirmwareUpdate

  • 심각도: 경고
  • 이유: "실제 디스크에서 펌웨어를 업데이트하지 못했습니다."
  • RecommendedAction: "다른 펌웨어 이진 파일을 사용해 보세요."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.SblFailedMedia

  • 심각도: 경고
  • 이유: "드라이브가 실패했습니다."
  • RecommendedAction: "드라이브를 바꿉니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.SblUnresponsive

  • 심각도: 경고
  • 이유: "물리적 디스크가 되풀이되지 않는 것을 나타내고 있습니다."
  • RecommendedAction: "실제 디스크 바꾸기."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureBadBlock

  • 심각도: 경고
  • 이유: "드라이브가 쓰기 중에 잘못된 블록을 보고했습니다. 가끔 나쁜 블록은 정상이지만 너무 많으면 드라이브가 오작동하거나 손상되거나 실패하기 시작할 수 있습니다."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureBadBlockRead

  • 심각도: 경고
  • 이유: "드라이브가 읽기 중에 잘못된 블록을 보고했습니다. 가끔 나쁜 블록은 정상이지만 너무 많으면 드라이브가 오작동하거나 손상되거나 실패하기 시작할 수 있습니다."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureIoRetry

  • 심각도: 경고
  • 이유: "드라이브에 읽기 또는 쓰기를 여러 번 시도해야 했습니다. 이 문제가 계속되면 드라이브가 오작동하거나 손상되거나 실패하기 시작했음을 의미할 수 있습니다."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

참고

이 오류는 기본적으로 사용하지 않도록 설정됩니다. 사용하도록 설정하려면 상태 설정 System.Storage.PhysicalDisk.MarginalFailure.EventBased.IoRetry.Enabled를 true로 설정합니다.

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureIoFailure

  • 심각도: 경고
  • 이유: "드라이브가 읽거나 쓰지 못했습니다. 이 문제가 계속되면 드라이브가 오작동하거나 손상되거나 실패하기 시작했음을 의미할 수 있습니다."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

참고

이 오류는 기본적으로 사용하지 않도록 설정됩니다. 사용하도록 설정하려면 상태 설정 System.Storage.PhysicalDisk.MarginalFailure.EventBased.IoFailure.Enabled를 true로 설정합니다.

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureSmart

  • 심각도: 경고
  • 이유: "드라이브는 SMART(자체 모니터링, 분석 및 보고 기술)를 사용하여 Windows에 다음과 같은 잠재적인 문제를 보고했습니다."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureHighWear

  • 심각도: 경고
  • 이유: "드라이브가 등급이 지정된 쓰기 내구성의 높은 비율에 도달했습니다. 드라이브는 읽기 전용이 될 수 있습니다. 즉, 정격 내구성의 100%에 도달하면 더 이상 쓰기를 수행할 수 없습니다. 데이터 시트를 확인하거나 제조업체에 지구력 등급 및 수명 종료 동작에 대한 자세한 내용을 문의하세요."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.FailureReadOnly

  • 심각도: 경고
  • 이유: "드라이브는 등급이 지정된 쓰기 내구성의 100%에 도달했으며 이제 읽기 전용이므로 더 이상 쓰기를 수행할 수 없습니다. 단색 드라이브는 드라이브의 내구성 등급에 따라 달라지는 특정 수의 쓰기 후에 마모됩니다. 자세한 내용은 드라이브 사양을 검사 제조업체에 지구력 등급 및 수명 종료 동작에 대해 문의하세요."
  • RecommendedAction: "계속 발생하거나 성능이 저하되는 경우 드라이브를 교체하는 것이 좋습니다."

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

  • 심각도: 경고
  • 이유: "드라이브의 최대 대기 시간이 높습니다."
  • RecommendedAction: "드라이브의 성능을 모니터링하고 드라이브를 교체하는 것이 좋습니다."

참고

이 오류는 기본적으로 사용하지 않도록 설정됩니다. 사용하도록 설정하려면 상태 설정 System.Storage.PhysicalDisk.HighLatency.Threshold.Tail.Enabled를 true로 설정합니다.

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

  • 심각도: 경고
  • 이유: "드라이브의 평균 대기 시간이 높습니다."
  • RecommendedAction: "드라이브의 성능을 모니터링하고 드라이브를 교체하는 것이 좋습니다."

참고

이 오류는 기본적으로 사용하지 않도록 설정됩니다. 사용하도록 설정하려면 상태 설정 System.Storage.PhysicalDisk.HighLatency.Threshold.Tail.Enabled를 true로 설정합니다.

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

  • 심각도: 경고
  • 이유: "드라이브의 평균 대기 시간이 높습니다."
  • RecommendedAction: "드라이브의 성능을 모니터링하고 드라이브를 교체하는 것이 좋습니다."

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

  • 심각도: 경고
  • 이유: "드라이브의 최대 대기 시간이 높습니다."
  • RecommendedAction: "드라이브의 성능을 모니터링하고 드라이브를 교체하는 것이 좋습니다."

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

  • 심각도: 경고
  • 이유: "드라이브에 많은 오류가 있습니다."
  • RecommendedAction: "드라이브의 성능을 모니터링하고 드라이브를 교체하는 것이 좋습니다."

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

  • 심각도: 경고
  • 이유: "드라이브에 많은 오류가 있습니다."
  • RecommendedAction: "드라이브의 성능을 모니터링하고 드라이브를 교체하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.CacheReadOnly

  • 심각도: 경고
  • 이유: "캐시 드라이브가 일부 읽기 또는 쓰기에 실패했기 때문에 데이터를 보호하기 위해 용량 드라이브로 이동했습니다."
  • RecommendedAction: "드라이브를 교체하거나 지우고 초기화하려고 합니다."

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

  • 심각도: 경고
  • 이유: "캐시 드라이브에 일부 읽기 또는 쓰기가 실패했습니다. 데이터를 보호하기 위해 캐시 드라이브에 대한 쓰기를 중지했으며 해당 데이터를 용량 드라이브로 이동하려고 합니다."
  • RecommendedAction: "데이터를 이동하는 동안 중단합니다."

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

  • 심각도: 경고
  • 이유: "캐시 드라이브의 일부 데이터를 읽을 수 없으므로 용량 드라이브로 이동할 수 없습니다."
  • RecommendedAction: "드라이브 바꾸기."

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

  • 심각도: 경고
  • 이유: "SED 암호화 키를 새 기본값으로 회전하지 못했습니다."
  • RecommendedAction: "드라이브가 작동하고 제대로 연결되어 있는지 확인합니다. 드라이브가 실패한 경우 교체합니다. 드라이브가 정상이 되면 SED 암호화 키 회전을 다시 시작합니다."

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

  • 심각도: 경고
  • 이유: "실제 디스크에는 SED 암호화 키가 있지만 현재 기본 키와 일치하지 않습니다."
  • RecommendedAction: "SED 암호화 키 회전 시작."

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

  • 심각도: 경고
  • 이유: "드라이브에 대해 정의된 기본 SED 암호화 키가 없습니다."
  • RecommendedAction: "기본 SED 암호화 키 설정."

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

  • 심각도: 경고
  • 이유: "시간 제한 전에 서버에서 SED 암호화 키 회전을 완료하지 못했습니다."
  • RecommendedAction: "서버에 연결할 수 있고 모든 실제 디스크가 정상인지 확인합니다."

FaultType: Microsoft.Health.FaultType.PhysicalDisk.DriveArriveFailure

  • 심각도: 경고
  • 이유: "실제 디스크가 쿼리에 실패합니다. "
  • RecommendedAction: "네트워크 안정성의 유효성을 검사하세요. 문제가 지속되면 디바이스를 교체하는 것이 좋습니다."

가상 디스크(3)

FaultType: Microsoft.Health.FaultType.VirtualDisks.NeedsRepair

  • 심각도: 알림
  • 이유: "이 볼륨의 일부 데이터는 완전히 복원력이 없습니다. 계속 액세스할 수 있습니다."
  • RecommendedAction: "데이터의 복원력 복원"

FaultType: Microsoft.Health.FaultType.VirtualDisks.Detached

  • 심각도: 위험
  • 이유: "볼륨에 액세스할 수 없습니다. 일부 데이터가 손실될 수 있습니다."
  • RecommendedAction: "모든 스토리지 디바이스의 물리적 및/또는 네트워크 연결을 확인합니다. 백업에서 복원해야 할 수도 있습니다."

FaultType: Microsoft.Health.FaultType.VirtualDisks.NoRedundancy

  • 심각도: 위험
  • 이유: "가상 디스크 지역에서는 모든 데이터 복사본을 사용할 수 없습니다. 워크로드가 중단되고 IO 오류가 관찰될 수 있습니다."
  • RecommendedAction: "유지 관리 작업이 진행 중인 경우 스토리지가 안정화될 때까지 일시 중단하고 모든 스토리지에 대한 액세스를 복원하세요."

풀 용량(2)

FaultType: Microsoft.Health.FaultType.StoragePool.TransactionAndCleanupFailure

  • 심각도: 경고
  • 이유: "스토리지 풀이 메타데이터 디바이스의 쿼럼에 쓸 수 없습니다. 워크로드가 중단되고 IO 오류가 관찰될 수 있습니다."
  • RecommendedAction: "유지 관리 작업이 진행 중인 경우 스토리지가 안정화될 때까지 일시 중단하고 모든 스토리지에 대한 액세스를 복원하세요."

FaultType: Microsoft.Health.FaultType.StoragePool.PoolCapacityThresholdExceeded

  • 심각도: 경고
  • 이유: "스토리지 풀에 용량이 부족합니다."
  • RecommendedAction: "스토리지 풀에 용량을 추가하거나 용량을 확보합니다."

볼륨 용량 (5)1

FaultType: Microsoft.Health.FaultType.Volume.Capacity

  • 심각도: 경고
  • 이유: "볼륨에 사용 가능한 공간이 부족합니다."
  • RecommendedAction: "볼륨을 확장하거나 워크로드를 다른 볼륨으로 마이그레이션합니다."

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

  • 심각도: 경고
  • 이유: "파일 시스템에서 체크섬 오류를 감지하여 수정할 수 있었습니다."
  • RecommendedAction: "작업 스케줄러에서 데이터 무결성 검사를 시작하면 스토리지가 좋지 않을 수 있습니다. 업데이트 또는 유지 관리 작업이 진행 중인 경우 즉시 중지합니다. 백업에서 복원해야 할 수도 있습니다."

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

  • 심각도: 경고
  • 이유: "파일 시스템에서 체크섬 오류를 감지하여 수정할 수 없습니다."
  • RecommendedAction: "작업 스케줄러에서 데이터 무결성 검사를 시작하면 스토리지가 좋지 않을 수 있습니다. 업데이트 또는 유지 관리 작업이 진행 중인 경우 즉시 중지합니다. 백업에서 복원해야 할 수도 있습니다."

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

  • 심각도: 경고
  • 이유: "파일 시스템에서 파일 또는 폴더의 손상을 감지했습니다. 파일 또는 폴더가 파일 시스템 네임스페이스에서 제거되었습니다."
  • RecommendedAction: "작업 스케줄러에서 데이터 무결성 검사를 시작하면 스토리지가 좋지 않을 수 있습니다. 업데이트 또는 유지 관리 작업이 진행 중인 경우 즉시 중지합니다. 백업에서 복원해야 할 수도 있습니다."

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

  • 심각도: 경고
  • 이유: "파일 시스템에서 파일 또는 폴더의 손상을 감지했습니다. 파일 시스템이 파일 시스템 네임스페이스에서 제거하지 못했을 수 있습니다."
  • RecommendedAction: "작업 스케줄러에서 데이터 무결성 검사를 시작하면 스토리지가 좋지 않을 수 있습니다. 업데이트 또는 유지 관리 작업이 진행 중인 경우 즉시 중지합니다. 백업에서 복원해야 할 수도 있습니다."

서버(12)

FaultType: Microsoft.Health.FaultType.Server.Down

  • 심각도: 위험
  • 이유: "서버에 연결할 수 없습니다."
  • RecommendedAction: "서버 시작 또는 바꾸기."

FaultType: Microsoft.Health.FaultType.Server.Isolated

  • 심각도: 위험
  • 이유: "연결 문제로 인해 서버가 클러스터에서 격리되었습니다."
  • RecommendedAction: "격리가 지속되면 네트워크를 검사 워크로드를 다른 노드로 마이그레이션합니다."

FaultType: Microsoft.Health.FaultType.Server.Quarantined

  • 심각도: 위험
  • 이유: "되풀이 오류로 인해 서버가 클러스터에 의해 격리됩니다."
  • RecommendedAction: "서버를 바꾸거나 네트워크를 수정합니다."

FaultType: Microsoft.Health.FaultType.Server.Temperature

  • 심각도: 경고
  • 이유: "서버 온도 센서에 경고가 발생했습니다."
  • RecommendedAction: "서버 온도 확인"

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

  • 심각도: 경고
  • 이유: "서버에 완료되지 않았거나 최신 상태로 유지되지 않은 스토리지가 있으므로 클러스터의 다른 서버의 데이터와 동기화해야 합니다. 서버가 다시 시작되거나 드라이브가 실패하면 정상입니다."
  • RecommendedAction: "스토리지를 동기화하는 동안 중단합니다. 동기화가 완료된 것을 확인할 때까지 드라이브를 제거하거나 클러스터의 서버를 다시 시작하지 마세요."

FaultType: Microsoft.Health.FaultType.Node.CPUOverloaded

  • 심각도: 경고
  • 이유: "서버의 CPU 사용률이 지속적으로 임계값을 초과합니다."
  • RecommendedAction: "CPU 사용량이 낮은 다른 서버로 가상 머신을 이동하거나 클러스터에 컴퓨팅 용량을 추가하는 것이 좋습니다(일반적으로 서버를 추가)."

FaultType: Microsoft.Health.FaultType.Node.VCPUToLCPU

  • 심각도: 경고
  • 이유: "이 서버의 논리 프로세서(스레드)에 대한 가상 프로세서의 비율이 구성된 임계값을 초과했습니다."
  • RecommendedAction: "CPU 사용량이 낮은 다른 서버로 가상 머신을 이동하거나 클러스터에 컴퓨팅 용량을 추가하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Node.LowFreeRam

  • 심각도: 경고
  • 이유: "사용 가능한 메모리가 구성된 임계값보다 낮습니다."
  • RecommendedAction: "CPU 사용량이 낮은 다른 서버로 가상 머신을 이동하거나 클러스터에 컴퓨팅 용량을 추가하는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Node.HighRootPartitionMemoryUsage

  • 심각도: 경고
  • 이유: "Windows Server에서 구성된 임계값을 초과하는 실제 메모리를 많이 사용하고 있습니다."
  • RecommendedAction: "너무 많은 메모리를 사용하는 프로세스 또는 앱을 확인하거나, 가상 머신을 다른 서버로 이동하거나, 서버에 메모리를 추가합니다."

FaultType: Microsoft.Health.FaultType.Node.TooHighCpuReservation

  • 심각도: 경고
  • 이유: "이 서버에서 가상 머신의 결합된 CPU 예약이 구성된 임계값을 초과합니다."
  • RecommendedAction: "가상 머신을 이동하거나 CPU 예약을 줄이는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Node.TooHighMemoryUseAfterReclamation

  • 심각도: 경고
  • 이유: "이 서버에서 가상 머신의 결합된 메모리 할당이 구성된 임계값을 초과합니다."
  • RecommendedAction: "가상 머신을 이동하거나 할당된 메모리를 줄이는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Node.SustainedHighCpuUsage

  • 심각도: 경고
  • 이유: "서버에 CPU 사용량이 지속적으로 임계값을 초과합니다."
  • RecommendedAction: "CPU 사용량이 낮은 다른 서버로 가상 머신을 이동하거나 컴퓨팅 용량을 더 추가하는 것이 좋습니다."

클러스터(6)

FaultType: Microsoft.Health.FaultType.ClusterQuorumWitness.Error

  • 심각도: 위험
  • 이유: "클러스터가 중단되지 않도록 한 서버 오류입니다."
  • RecommendedAction: "감시 리소스를 확인하고 필요에 따라 다시 시작합니다. 실패한 서버를 시작하거나 교체합니다."

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

  • 심각도: 위험
  • 이유: "클러스터 유효성 검사에서 문제가 발견되었습니다."
  • RecommendedAction: "클러스터 유효성 검사에서 일부 테스트 범주에서 오류가 발견되었습니다. 클러스터 유효성 검사 보고서를 참조하세요."

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

  • 심각도: 위험
  • 이유: "Validate-DCB에서 문제가 발견되었습니다."
  • RecommendedAction: "Validate-DCB에서 네트워킹 오류가 발견되었습니다. DCB 유효성 검사 보고서를 참조하세요."

FaultType: Microsoft.Health.FaultType.Cluster.TooHighCpuReservation

  • 심각도: 위험
  • 이유: "이 서버에서 가상 머신의 결합된 CPU 예약이 구성된 임계값을 초과합니다."
  • RecommendedAction: "가상 머신을 이동하거나 CPU 예약을 줄이는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Cluster.TooHighMemoryUseAfterReclamation

  • 심각도: 위험
  • 이유: "이 서버에서 가상 머신의 결합된 메모리 할당이 구성된 임계값을 초과합니다."
  • RecommendedAction: "가상 머신을 이동하거나 할당된 메모리를 줄이는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Cluster.SustainedHighCpuUsage

  • 심각도: 위험
  • 이유: "서버에 CPU 사용량이 지속적으로 임계값을 초과합니다."
  • RecommendedAction: "CPU 사용량이 낮은 다른 서버로 가상 머신을 이동하거나 컴퓨팅 용량을 더 추가하는 것이 좋습니다."

네트워크 어댑터/인터페이스(6)

FaultType: Microsoft.Health.FaultType.NetworkAdapter.Disconnected

  • 심각도: 경고
  • 이유: "네트워크 인터페이스의 연결이 끊어졌습니다."
  • RecommendedAction: "네트워크 케이블 다시 연결"

FaultType: Microsoft.Health.FaultType.NetworkInterface.Missing

  • 심각도: 경고
  • 이유: "서버 {server}에 클러스터 네트워크 {cluster network}에 연결된 네트워크 어댑터가 없습니다."
  • RecommendedAction: "누락된 클러스터 네트워크에 서버를 연결합니다."

FaultType: Microsoft.Health.FaultType.NetworkAdapter.Hardware

  • 심각도: 경고
  • 이유: "네트워크 인터페이스에 하드웨어 오류가 발생했습니다."
  • RecommendedAction: "네트워크 인터페이스 어댑터 바꾸기"

FaultType: Microsoft.Health.FaultType.NetworkAdapter.Disabled

  • 심각도: 경고
  • 이유: "네트워크 인터페이스 {network interface}을(를) 사용할 수 없으며 사용되지 않습니다."
  • RecommendedAction: "네트워크 인터페이스 사용"

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

  • 심각도: 경고
  • 이유: "클러스터에서 저장소 공간 다이렉트 제대로 작동하지 않는 네트워크 연결 문제를 감지했습니다."
  • RecommendedAction: "네트워크가 제대로 구성되고 작동하는지 확인합니다. RDMA Over Converged Ethernet(RoCE)을 사용하는 경우 DCB(Data Center Bridging), ETS(Enhanced Transmission Service) 및 PFC(Priority Flow Control)가 모든 클러스터 노드 및 물리적 스위치에서 정확하고 일관되게 구성되었는지 확인합니다. 이 작업을 수행하는 방법을 모르는 경우 공급업체 또는 신뢰할 수 있는 사람에게 도움을 요청하세요."

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

  • 심각도: 경고
  • 이유: "클러스터에서 저장소 공간 다이렉트 제대로 작동하지 않는 네트워크 연결 문제를 감지했습니다. 일관된 성능 및 데이터 안전을 보장하기 위해 RDMA 지원 하드웨어가 있고 사용하도록 설정된 경우에도 저장소 공간 다이렉트 RDMA(원격 직접 메모리 액세스) 사용을 중지했습니다. 스토리지 트래픽은 계속 흐르지만 TCP/IP를 사용하여 성능이 저하됩니다."
  • RecommendedAction: "네트워크가 제대로 구성되고 작동하는지 확인한 다음 RDMA를 다시 켭니다. RDMA Over Converged Ethernet(RoCE)을 사용하는 경우 DCB(Data Center Bridging), ETS(Enhanced Transmission Service) 및 PFC(Priority Flow Control)가 모든 클러스터 노드 및 물리적 스위치에서 정확하고 일관되게 구성되었는지 확인합니다. 이 작업을 수행하는 방법을 모르는 경우 공급업체 또는 신뢰할 수 있는 사람에게 도움을 요청하세요. RDMA를 계속 해제하려면 이 경고를 해제할 수 있습니다."

엔클로저(6)

FaultType: Microsoft.Health.FaultType.StorageEnclosure.LostCommunication

  • 심각도: 경고
  • 이유: "스토리지 인클로저에 대한 통신이 손실되었습니다."
  • RecommendedAction: "스토리지 엔클로저를 시작하거나 바꿉니다."

FaultType: Microsoft.Health.FaultType.StorageEnclosure.FanError

  • 심각도: 경고
  • 이유: "스토리지 엔클로저의 {position} 위치에 있는 팬이 실패했습니다."
  • RecommendedAction: "스토리지 엔클로저의 팬을 교체합니다."

FaultType: Microsoft.Health.FaultType.StorageEnclosure.CurrentSensorError

  • 심각도: 경고
  • 이유: "스토리지 인클로저의 {position} 위치에 있는 현재 센서가 실패했습니다."
  • RecommendedAction: "스토리지 엔클로저의 현재 센서를 교체합니다."

FaultType: Microsoft.Health.FaultType.StorageEnclosure.VoltageSensorError

  • 심각도: 경고
  • 이유: "스토리지 인클로저의 {position} 위치에 있는 전압 센서가 실패했습니다."
  • RecommendedAction: "스토리지 인클로저의 전압 센서 교체"

FaultType: Microsoft.Health.FaultType.StorageEnclosure.IoControllerError

  • 심각도: 경고
  • 이유: "스토리지 인클로저의 {position} 위치에 있는 IO 컨트롤러가 실패했습니다."
  • RecommendedAction: "스토리지 엔클로저의 IO 컨트롤러 교체"

FaultType: Microsoft.Health.FaultType.StorageEnclosure.TemperatureSensorError

  • 심각도: 경고
  • 이유: "스토리지 인클로저의 {position} 위치에 있는 온도 센서가 실패했습니다."
  • RecommendedAction: "스토리지 인클로저의 온도 센서 교체"

펌웨어 출시(3)

FaultType: Microsoft.Health.FaultType.FaultDomain.FailedMaintenanceMode

  • 심각도: 경고
  • 이유: "현재 펌웨어 롤아웃을 수행하는 동안 진행할 수 없습니다."
  • RecommendedAction: "모든 스토리지 공간이 정상이며 현재 유지 관리 모드에 장애 도메인이 없는지 확인합니다."

FaultType: Microsoft.Health.FaultType.FaultDomain.FirmwareVerifyVersionFailed

  • 심각도: 경고
  • 이유: "펌웨어 업데이트를 적용한 후 읽을 수 없거나 예기치 않은 펌웨어 버전 정보로 인해 펌웨어 롤아웃이 취소되었습니다."
  • RecommendedAction: "펌웨어 문제가 해결되면 펌웨어 롤아웃을 다시 시작합니다."

FaultType: Microsoft.Health.FaultType.FaultDomain.TooManyFailedUpdates

  • 심각도: 경고
  • 이유: "펌웨어 업데이트 시도에 실패한 실제 디스크가 너무 많아 펌웨어 롤아웃이 취소되었습니다."
  • RecommendedAction: "펌웨어 문제가 해결되면 펌웨어 롤아웃을 다시 시작합니다."

스토리지 QoS (3)2

FaultType: Microsoft.Health.FaultType.StorQos.InsufficientThroughput

  • 심각도: 경고
  • 이유: "스토리지 처리량이 예약을 충족하기에 충분하지 않습니다."
  • RecommendedAction: "스토리지 QoS 정책 다시 구성"

FaultType: Microsoft.Health.FaultType.StorQos.LostCommunication

  • 심각도: 경고
  • 이유: "스토리지 QoS 정책 관리자가 볼륨과의 통신을 잃었습니다."
  • RecommendedAction: "노드 {nodes}를 다시 부팅하세요."

FaultType: Microsoft.Health.FaultType.StorQos.MisconfiguredFlow

  • 심각도: 경고
  • 이유: "하나 이상의 스토리지 소비자(일반적으로 Virtual Machines)가 ID가 {id}인 존재하지 않는 정책을 사용하고 있습니다."
  • RecommendedAction: "누락된 스토리지 QoS 정책을 다시 만듭니다."

VM/VHD(7)

FaultType: Microsoft.Health.FaultType.Vm.BadHealthState

  • 심각도: 경고
  • 이유: "가상 머신 상태가 정상이 아닙니다."
  • RecommendedAction: "가상 머신 문제 해결"

FaultType: Microsoft.Health.FaultType.Vm.BadOperationalStatus

  • 심각도: 경고
  • 이유: "가상 머신 작동 상태 정상이 아닙니다."
  • RecommendedAction: "가상 머신 문제 해결"

FaultType: Microsoft.Health.FaultType.Vm.GuestUnhealthy

  • 심각도: 경고
  • 이유: "가상 머신의 게스트 운영 체제가 비정상 상태를 보고하고 있습니다."
  • RecommendedAction: "가상 머신 문제 해결."

FaultType: Microsoft.Health.FaultType.Vm.ConfigIsOffline

  • 심각도: 경고
  • 이유: "가상 머신 구성 리소스가 오프라인 상태이므로 가상 머신을 관리할 수 없습니다."
  • RecommendedAction: "가상 머신 구성을 온라인 상태로 만듭니다."

FaultType: Microsoft.Health.FaultType.Vm.NotRespondingToControlCodes

  • 심각도: 경고
  • 이유: "가상 머신이 클러스터 제어 코드에 응답하지 않습니다."
  • RecommendedAction: "가상 머신 클러스터 리소스의 상태를 확인합니다."

FaultType: Microsoft.Health.FaultType.Vm.IsNearMemoryLimit

  • 심각도: 경고
  • 이유: "가상 머신에 구성된 최대 메모리가 더 필요합니다."
  • RecommendedAction: "너무 많은 메모리를 사용하는 프로세스 또는 앱을 확인하거나 최대 메모리를 늘리는 것이 좋습니다."

FaultType: Microsoft.Health.FaultType.Vhd.IsNearlyFull

  • 심각도: 경고
  • 이유: "가상 하드 디스크가 용량에 도달했습니다. 더 이상 데이터를 쓸 수 없으므로 가상 머신에 부정적인 영향을 미칠 수 있습니다."
  • RecommendedAction: "가상 하드 디스크 크기를 조정하거나 원치 않는 파일을 삭제합니다."

1 볼륨이 80%(사소한 심각도) 또는 90%(주요 심각도)에 도달했음을 나타냅니다. 2 볼륨의 일부 .vhd가 롤링 24시간 기간의 10%(부), 30%(주) 또는 50%(중요)에 대한 최소 IOPS를 충족하지 못했음을 나타냅니다.

참고

팬, 전원 공급 장치 및 센서와 같은 스토리지 인클로저 구성 요소의 상태는 SES(SCSI 엔클로저 서비스)에서 파생됩니다. 공급업체에서 이 정보를 제공하지 않은 경우 상태 관리 서비스에서 정보를 표시할 수 없습니다.

추가 참조