최신 Windows 버전은 SMART 기술을 통해 컴퓨터에 설치된 하드 드라이브의 상태 정보를 수집하며, 문제가 발생하면 사용자에게 알림을 표시할 수 있습니다. 이 글에서는 Windows에서 하드 드라이브의 물리적 문제를 감지했을 때 표시되는 알림의 모습과, WMI 클래스, PowerShell, 명령 프롬프트 등 내장 도구를 활용해 디스크 상태(SMART) 정보를 확인하는 방법을 자세히 살펴보겠습니다.
대부분의 최신 하드 드라이브(HDD, SSD, NVMe SSD 포함)는 S.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology, 자가 모니터링·분석·보고 기술)를 지원합니다. 디스크 컨트롤러가 디스크의 물리적 특성을 지속적으로 측정하며, Windows는 WMI를 통해 이 데이터에 접근할 수 있습니다.
단, SMART 정보는 로컬 물리 디스크(ATA/SATA 장치)에서만 확인할 수 있습니다. 파이버 채널(Fiber Channel), iSCSI, RAID를 통해 연결된 외부 LUN이나 공유 드라이브는 SMART 상태를 보고하지 않습니다.
Windows에서 하드 디스크 문제 감지 알림
Windows에서는 기본적으로 논리 디스크 관리자(Logical Disk Manager)와 진단 정책 서비스(Diagnostic Policy Service)를 통한 디스크 모니터링이 활성화되어 있습니다. 드라이브 중 하나가 Predictive Failure(예측 실패) 상태를 반환하면, 작업 스케줄러가 Microsoft-Windows-DiskDiagnosticResolver(\Microsoft\Windows\DiskDiagnostic) 작업을 실행하여 다음과 같은 오류 메시지를 표시합니다.
Windows detected a hard disk problem Back up your files immediately to prevent information loss, and then contact the computer manufacturer to determine if you need to repair the disk.
이벤트 뷰어 로그에는 다음과 같은 메시지가 기록됩니다.
The driver has detected that device \Device\Harddisk1\DR1 has predicted that it will fail. Immediately back up your data and replace your hard disk drive. A failure may be imminent.
Predictive Failure 상태는 디스크의 특성(기계적 마모 등) 중 하나가 기준값과 일치하지 않아 디스크가 곧 고장날 수 있음을 의미합니다.
이 경우에는 디스크의 데이터를 별도의 미디어에 즉시 백업하는 것이 좋습니다. 그다음 제조사에서 제공하는 SMART 진단 도구(또는 CrystalDiskInfo 같은 서드파티 도구)와 chkdsk를 사용해 디스크를 점검하세요.
이 알림 메시지는 GPO의 디스크 진단: 실행 수준 구성(Disk Diagnostic: Configure execution level) 옵션을 통해 표시하거나 숨길 수 있습니다. 해당 옵션은 관리 템플릿 → 시스템 → 문제 해결 및 진단 → 디스크 진단 섹션에 위치합니다.
Windows에서 디스크 상태를 확인할 때는 대개 CrystalDiskInfo, HDTune 같은 서드파티 도구가 활용됩니다. 이러한 프로그램은 디스크에 대한 방대한 정보를 제공합니다.
예를 들어 SSD의 잔여 수명을 확인할 수 있습니다. Total Host Writes의 현재 값이 507GB이고, 제조사가 보증하는 해당 SSD 모델의 최대 쓰기 수명(TBW)이 300TB라면 디스크 마모율은 0.2% 미만입니다. 디스크 사용 시간은 108시간에 불과합니다.
WMI 클래스와 PowerShell로 하드 디스크 SMART 속성 확인
Windows 내장 도구만으로도 SMART 디스크 데이터를 확인할 수 있습니다. 제어판(제어판 → 시스템 및 보안 → 보안 및 유지 관리)에서 컴퓨터의 디스크 상태 정보를 확인할 수 있으며, 이 섹션에는 Windows 오류 보고 서비스의 상태 정보도 함께 표시됩니다.
디스크에 문제가 없다면 드라이브 상태(Drive Status) 섹션에 다음과 같은 메시지가 표시됩니다. OK, All drives are working properly(정상, 모든 드라이브가 정상적으로 작동 중입니다).
앞서 언급했듯이 Windows는 디스크에서 SMART 정보를 수집하며, WMI를 통해 이 정보에 접근할 수 있습니다. 단, SMART가 BIOS/UEFI 설정에서 활성화되어 있어야 합니다.
관리자 권한 명령 프롬프트를 실행하고 다음 명령을 입력하면 모든 디스크의 상태를 확인할 수 있습니다.
wmic diskdrive get status
모든 디스크가 정상이면 OK가 표시되며, 그렇지 않은 경우 Bad, Unknown, Caution 상태가 표시됩니다.
WMI 접근 시 오류가 발생하면 WMI 저장소를 복구해 보세요.
MSStorageDriver_FailurePredictStatus WMI 클래스를 사용하면 하드 드라이브의 고장 가능성에 대한 정보를 얻을 수 있습니다.
wmic /namespace:\\root\wmi path MSStorageDriver_FailurePredictStatus
디스크 컨트롤러가 디스크 문제를 감지하지 못한 경우 PredictFailure 값은 FALSE여야 합니다.
동일한 클래스는 PowerShell로도 조회할 수 있습니다.
Get-WmiObject -namespace root\wmi –class MSStorageDriver_FailurePredictStatus
PredictFailure 값이 True라면 Reason 매개변수에 표시되는 오류 코드에 주목해야 합니다. PredictFailure 오류 코드의 의미는 제조사마다 다르며, 일부 오류 코드에 대한 정보는 위키(https://en.wikipedia.org/wiki/S.M.A.R.T.#ATA_S.M.A.R.T._attributes)에서 확인할 수 있습니다.
다음 PowerShell 명령으로 일부 신뢰성 카운터 값을 조회할 수 있습니다.
Get-Disk | foreach { $_ | Get-StorageReliabilityCounter | Format-List }
필요한 SMART 속성만 선택하여 표시할 수도 있습니다.
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object -Property DeviceID, Wear, ReadErrorsTotal, ReadErrorsCorrected, WriteErrorsTotal, WriteErrorsUncorrected, Temperature, TemperatureMax | FT
또한 Get-PhysicalDisk cmdlet을 사용하면 디스크에 대한 일반 정보를 확인할 수 있습니다.
$(Get-PhysicalDisk | Select *)[0]
이전에 소개한 것처럼 Get-PhysicalDisk를 사용하면 Windows Server S2D(Storage Spaces Direct) 환경에서 고장난 디스크를 찾아 교체할 수 있습니다.
Get-PhysicalDisk | Where-Object {$_.HealthStatus -ne 'Healthy'}
이러한 WMI 클래스와 PowerShell cmdlet을 활용하면 사용자 컴퓨터에서 디스크 상태 데이터 수집을 자동화하여 디스크 상태를 사전에 추적할 수 있습니다. Zabbix, Nagios, Icinga 같은 모니터링 시스템용 알림 구성, Configuration Baseline을 활용한 SCCM 규정 준수 보고서, PowerShell DSC(Desired State Configuration), PowerShell 원격(Invoke-Command cmdlet)을 통한 원격 컴퓨터의 SMART 상태 조회 등 다양한 방식으로 응용할 수 있습니다.