상태 관리 서비스 결함 보기
적용 대상: Azure Local, 버전 23H2 및 22H2; Windows Server 2022, Windows Server 2019
상태 관리 서비스 저장소 공간 Direct 클러스터를 지속적으로 모니터링하여 문제를 감지하고 "오류"를 생성합니다. 하나의 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
참고 항목
물리적 위치는 장애 도메인 구성에서 파생됩니다. 장애 도메인에 대한 자세한 내용은 장애 도메인 인식을 참조 하세요. 이 정보를 제공하지 않으면 위치 필드가 덜 유용합니다. 예를 들어 슬롯 번호만 표시할 수 있습니다.
근본 원인 분석
상태 관리 서비스 오류 엔터티 간의 잠재적 인과 관계를 평가하여 동일한 기본 문제의 결과인 오류를 식별하고 결합할 수 있습니다. 효과 체인을 인식하면 보고 내용이 깔끔해집니다. 예를 들어 서버가 다운된 경우 서버 내의 모든 드라이브도 연결되지 않은 것으로 예상됩니다. 따라서 하나의 오류만 근본 원인(이 경우 서버)으로 제기됩니다.
PowerShell의 사용량
PowerShell에서 현재 오류를 보려면 다음 cmdlet을 실행합니다.
Get-HealthFault
이렇게 하면 전체 저장소 공간 Direct 클러스터에 영향을 주는 모든 오류가 반환됩니다. 대부분의 경우 이러한 오류는 하드웨어 또는 구성과 관련이 있습니다. 오류가 없으면 cmdlet은 아무 것도 반환하지 않습니다.
참고 항목
비프로덕션 환경 및 사용자 고유의 위험에서 직접 오류를 트리거하여 이 기능을 실험할 수 있습니다. 예를 들어 하나의 실제 디스크를 제거하거나 하나의 노드를 종료하여 이 작업을 수행할 수 있습니다. 오류가 나타나면 실제 디스크를 다시 삽입하거나 노드를 다시 시작하여 오류가 사라지도록 합니다.
.NET 및 C#의 사용량
이 섹션에서는 상태 관리 서비스 연결하고, 검색 개체를 사용하고, 오류 쿼리를 실행하는 방법을 보여 줍니다.
연결
상태 관리 서비스 쿼리하기 위해 클러스터를 사용하여 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)를 쿼리할 수 있습니다.
오류 또는 메트릭을 가져오기 전에 여러 관련 개체의 인스턴스를 가져와야 합니다. 먼저 클러스터에서 저장소 공간 Direct를 나타내는 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-StorageNode, and Get-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의 각 범위에서 사용할 수 있는 오류의 전체 목록은 적용 범위 섹션의 뒷부분에 설명되어 있습니다 .
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.mof에서 MSFT_StorageDiagnoseResult 클래스를 검사합니다.
속성 | 예제 |
---|---|
FaultId | {12345-12345-12345-12345-12345} |
FaultType | Microsoft.Health.FaultType.Volume.Capacity |
원인 | "볼륨에 사용 가능한 공간이 부족합니다." |
PerceivedSeverity | 5 |
FaultingObjectDescription | Contoso XYZ9000 S.N. 123456789 |
FaultingObjectLocation | Rack A06, RU 25, 슬롯 11 |
RecommendedActions | {"볼륨을 확장합니다.", "워크로드를 다른 볼륨으로 마이그레이션합니다."} |
FaultId: 한 클러스터 범위 내의 고유 ID입니다.
PerceivedSeverity: PerceivedSeverity = { 4, 5, 6 } = { "Informational", "Warning" 및 "Error" }, 또는 파란색, 노란색 및 빨간색과 같은 동등한 색입니다.
FaultingObjectDescription: 하드웨어에 대한 파트 정보로, 일반적으로 소프트웨어 개체의 경우 비어 있습니다.
FaultingObjectLocation: 하드웨어에 대한 위치 정보로, 일반적으로 소프트웨어 개체의 경우 비어 있습니다.
RecommendedActions: 독립적이고 특정 순서가 없는 권장 작업 목록입니다. 현재 이 목록은 길이가 1인 경우가 많습니다.
오류 이벤트 속성
다음 표에서는 오류 이벤트의 몇 가지 주요 속성을 제공합니다. 전체 스키마의 경우 storagewmi.mof에서 MSFT_StorageFaultEvent 클래스를 검사합니다.
오류가 생성, 제거 또는 업데이트되는지 여부와 FaultId를 나타내는 ChangeType을 확인합니다. 이벤트에는 영향을 받는 오류의 모든 속성도 포함됩니다.
속성 | 예제 |
---|---|
ChangeType | 0 |
FaultId | {12345-12345-12345-12345-12345} |
FaultType | Microsoft.Health.FaultType.Volume.Capacity |
원인 | "볼륨에 사용 가능한 공간이 부족합니다." |
PerceivedSeverity | 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 Local에서 상태 관리 서비스 다음과 같은 오류 검사를 제공합니다.
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
- 심각도: 경고
- 이유: "클러스터에서 저장소 공간 Direct가 제대로 작동하지 않는 네트워크 연결 문제를 감지했습니다."
- 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
- 심각도: 경고
- 이유: "클러스터에서 저장소 공간 Direct가 제대로 작동하지 않는 네트워크 연결 문제를 감지했습니다. 일관된 성능과 데이터 안전을 보장하기 위해 저장소 공간 Direct는 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
- 심각도: 경고
- 이유: "하나 이상의 스토리지 소비자(일반적으로 가상 머신)가 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 인클로저 서비스)에서 파생됩니다. 공급업체에서 이 정보를 제공하지 않은 경우 상태 관리 서비스에서 정보를 표시할 수 없습니다.