오류 상태 관리 서비스
적용 대상: Windows Server 2016
오류의 정의
상태 관리 서비스는 스토리지 공간 다이렉트 클러스터를 지속적으로 모니터링하여 문제를 감지하고 "오류"를 생성합니다. 하나의 새 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
참고 항목
물리적 위치는 장애 도메인 구성에서 파생됩니다. 장애 도메인에 대한 자세한 내용은 Windows Server 2016의 장애 도메인을 참조하세요. 이 정보를 제공하지 않으면 위치 필드가 유용하지 않습니다. 예를 들어 슬롯 번호만 표시될 수 있습니다.
근본 원인 분석
상태 관리 서비스에서 오류 엔터티 간의 잠재적 인과 관계를 평가하여 동일한 기본 문제에 따른 오류를 식별하고 통합할 수 있습니다. 효과 체인을 인식하면 보고 내용이 깔끔해집니다. 예를 들어 서버가 다운된 경우 서버 내의 드라이브도 연결되지 않을 것으로 예상됩니다. 따라서 하나의 오류만 근본 원인(이 경우 서버)으로 제기됩니다.
PowerShell의 사용량
PowerShell에서 현재 오류를 확인하려면 다음 cmdlet을 실행합니다.
Get-StorageSubSystem Cluster* | Debug-StorageSubSystem
전체 스토리지 공간 다이렉트 클러스터에 영향을 주는 모든 오류가 반환됩니다. 대부분의 경우 이러한 오류는 하드웨어 또는 구성과 관련이 있습니다. 오류가 없는 경우 이 cmdlet은 아무 것도 반환하지 않습니다.
참고 항목
프로덕션이 아닌 환경에서는 직접 오류를 트리거하여 이 기능을 시험해 볼 수 있습니다. 이때 위험은 사용자가 부담합니다. 예를 들어 하나의 실제 디스크를 제거하거나 하나의 노드를 종료해 봅니다. 오류가 나타나면 실제 디스크를 다시 삽입하거나 노드를 다시 시작합니다. 그러면 오류가 다시 사라집니다.
또한 다음 cmdlet을 사용하여 특정 볼륨이나 파일 공유에만 영향을 주는 오류를 볼 수 있습니다.
Get-Volume -FileSystemLabel <Label> | Debug-Volume
Get-FileShare -Name <Name> | Debug-FileShare
그 결과 특정 볼륨이나 파일 공유에만 영향을 주는 모든 오류를 반환합니다. 대부분의 경우 이러한 오류는 용량 계획, 데이터 복원력이나 스토리지 서비스 품질 또는 스토리지 복제본과 같은 기능과 관련이 있습니다.
.NET 및 C#의 사용량
연결
상태 관리 서비스를 쿼리하려면 클러스터를 사용하여 CimSession을 설정해야 합니다. 이렇게 하려면 전체 .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 데이터 볼륨을 가져올 수 있습니다. 마지막으로 MSFT_StorageHealth 상태 관리 서비스 자체도 필요합니다.
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 2016의 각 범위에서 사용할 수 있는 오류의 전체 목록은 아래에 설명되어 있습니다.
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() 메서드가 호출되는 관찰자를 구현합니다.
각 이벤트에는 오류가 생성, 제거 또는 업데이트되는지 여부와 관련 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 한 클러스터의 범위 내에서 고유합니다.
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 2016의 상태 관리 서비스는 다음과 같은 오류 적용 범위를 제공합니다.
PhysicalDisk(8)
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: "다른 펌웨어 이진 파일을 사용해 보세요."
가상 디스크(2)
FaultType: Microsoft.Health.FaultType.VirtualDisks.NeedsRepair
- 심각도: 알림
- 이유: "이 볼륨의 일부 데이터는 완전히 복원력이 없습니다. 계속 액세스할 수 있습니다."
- RecommendedAction: "데이터의 복원력 복원."
FaultType: Microsoft.Health.FaultType.VirtualDisks.Detached
- 심각도: 위험
- 이유: "볼륨에 액세스할 수 없습니다. 일부 데이터가 손실될 수 있습니다."
- RecommendedAction: "모든 스토리지 디바이스의 물리적 및/또는 네트워크 연결을 확인합니다. 백업에서 복원해야 할 수도 있습니다."
풀 용량(1)
FaultType: Microsoft.Health.FaultType.StoragePool.InsufficientReserveCapacityFault
- 심각도: 경고
- 이유: "스토리지 풀에 권장되는 최소 예약 용량이 없습니다. 이로 인해 드라이브 오류가 발생할 경우 데이터 복원력을 복원하는 기능이 제한됩니다."
- RecommendedAction: "스토리지 풀에 용량을 추가하거나 용량을 확보합니다. 최소 권장 예약은 배포에 따라 다르지만 약 2개의 드라이브 용량입니다."
볼륨 용량(2)1
FaultType: Microsoft.Health.FaultType.Volume.Capacity
- 심각도: 경고
- 이유: "볼륨에 사용 가능한 공간이 부족합니다."
- RecommendedAction: "볼륨을 확장하거나 워크로드를 다른 볼륨으로 마이그레이션합니다."
FaultType: Microsoft.Health.FaultType.Volume.Capacity
- 심각도: 위험
- 이유: "볼륨에 사용 가능한 공간이 부족합니다."
- RecommendedAction: "볼륨을 확장하거나 워크로드를 다른 볼륨으로 마이그레이션합니다."
서버(3)
FaultType: Microsoft.Health.FaultType.Server.Down
- 심각도: 위험
- 이유: "서버에 연결할 수 없습니다."
- RecommendedAction: "서버 시작 또는 바꾸기"
FaultType: Microsoft.Health.FaultType.Server.Isolated
- 심각도: 위험
- 이유: "연결 문제로 인해 서버가 클러스터에서 격리되었습니다."
- RecommendedAction: "격리가 지속되는 경우 네트워크를 확인하거나 워크로드를 다른 노드로 마이그레이션합니다."
FaultType: Microsoft.Health.FaultType.Server.Quarantined
- 심각도: 위험
- 이유: "되풀이 오류로 인해 서버가 클러스터에 의해 격리됩니다."
- RecommendedAction: "서버를 바꾸거나 네트워크를 수정합니다."
클러스터(1)
FaultType: Microsoft.Health.FaultType.ClusterQuorumWitness.Error
- 심각도: 위험
- 이유: "클러스터는 특정 서버 오류로 인해 중단되지 않습니다."
- RecommendedAction: "감시 리소스를 확인하고 필요에 따라 다시 시작합니다. 실패한 서버를 시작하거나 교체합니다."
네트워크 어댑터/인터페이스(4)
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: "네트워크 인터페이스 사용"
인클로저(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.FirmwareVerifyVersionFaile
- 심각도: 경고
- 이유: "펌웨어 업데이트를 적용한 후 읽을 수 없거나 예기치 않은 펌웨어 버전 정보로 인해 펌웨어 롤아웃이 취소되었습니다."
- 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 정책을 다시 만듭니다."
1 사용된 볼륨 공간이 80%(경미한 심각도) 또는 90%(중대한 심각도)에 이르렀음을 나타냅니다. 2 볼륨의 일부.vhd가 연속 24시간의 10%(경미), 30%(중대) 또는 50%(심각) 동안 최소 IOPS를 충족하지 않았음을 나타냅니다.
참고 항목
팬, 전원 공급 장치 및 센서와 같은 스토리지 엔클로저 구성 요소의 상태는 SCSI(SCSI Enclosure Services)에서 파생됩니다. 공급업체에서 이 정보를 제공하지 않은 경우 상태 관리 서비스에서 정보를 표시할 수 없습니다.