Современные версии Windows собирают информацию о состоянии жестких дисках компьютера через SMART и могут оповестить пользователя о наличии проблем. Рассмотрим, как выглядит уведомление Windows о физических проблемах с жестким диском и как с помощью PowerShell и командной строки получить SMART информацию о здоровье ваших дисков через встроенные WMI классы.
Большинство современных жестких дисков (в том числе HDD, SSD, NVMe SSD) поддерживает технологию базового самотестирования и анализа состояния S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology). Контроллер диска оценивает состояние физических характеристик диска, и Windows может получить доступ к этим данным через WMI.
Ошибка “Windows обнаружила неполадки жесткого диска”
В Windows по умолчанию включен мониторинг дисков службами диспетчера дилогических дисков (Logical Disk Manager) и Diagnostic Policy Service. И если один из дисков возвращает статус Predictive Failure, ОС запускает задание планировщика Microsoft-Windows-DiskDiagnosticResolver (\Microsoft\Windows\DiskDiagnostic), которое выводит сообщение:
Windows обнаружила неполадки жесткого диска Немедленно создайте резервную копию всех файлов для предотвращения потери информации. Затем свяжитесь с производителем компьютера для замены или ремонта жесткого диска.
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.
Windows Disk Diagnostic detected a S.M.A.R.T. fault on disk .......... (volumes E:\). This disk might fail; back up your computer now. All data on the hard disk, including files, documents, pictures, programs, and settings might be lost if your hard disk fails. To determine if the hard disk needs to be repaired or replaced, contact the manufacturer of your computer. If you can't back up (for example, you have no CDs or other backup media), you should shut down your computer and restart when you have backup media available. In the meantime, do not save any critical files to this disk.
Статус
Predictive Failure
говорит о том, что одна из характеристик диска (например, механический износ) не соответствует эталонным значениям и велика вероятность отказа этого диска в будущем.
В этом случае рекомендуется выполнить резервное копирование данных с этого диска на отдельный носитель. Затем выполните проверку диска с помощью штатной SMART утилиты от производителя (или универсальными утилитами типа CrystalDiskInfo), проверьте носитель с помощью chkdsk.
Вы можете включить или отключить вывод этого сообщения пользователя с помощью специального параметра групповой политики Disk Diagnostic: Configure execution level в разделе GPO Administrative Templates -> System -> Troubleshooting and Diagnostics -> Disk Diagnostics.
Например, я могу узнать оставшийся ресурс SSD. Текущее значение Total Host Writes – 507 Gb. Производитель гарантирует максимальный ресурс записи (TBW)для этой модели SSD 300 Тб. Значит диск изношен менее чем на 0.2%. Срок использования диска всего 108 часов.
Получение SMART параметров жесткого диска через WMI класс
В Windows вы можете получить доступ к данным SMART дисков с помощью встроенных средств.
Информацию о состоянии дисков компьютера можно посмотреть через панель управления Control Panel\System and Security\Security and Maintenance (в этом же разделе есть информацию о состоянии службы Windows Error Reporting).
В моем случае с дисками все ОК, т.к. в разделе Drive Status указано:
OK, All drives are working properly
.
Как мы уже говорили выше, Windows собирает информацию SMART с дисков и позволяет получать к ней доступ через WMI.
Откройте командную строку с правами администратора и выполните следующую команду чтобы получить состояние всех дисков:
wmic diskdrive get status
В данном случае с дисками все хорошо. Если нет – будет статус bad, unknown или caution.
Получить информацию о вероятном отказе жесткого диска можно через WMI класс MSStorageDriver_FailurePredictStatus:
wmic /namespace:\\root\wmi path MSStorageDriver_FailurePredictStatus
Если контроллер диска не видит проблем с диском, значение PredictFailure должно быть равно FALSE.
Этот же класс можно опросить с помощью PowerShell:
Get-WmiObject -namespace root\wmi –class MSStorageDriver_FailurePredictStatus
Если значение PredictFailure = True, обратите внимание на причину ошибки, код которой указывается в параметре Reason. Расшифровка кода ошибки PredictFailure зависит от вендора. Информацию по некоторым кодам ошибок можно найти в wiki (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 }
Можно вывести информацию только об определенных характеристиках:
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object -Property DeviceID, Wear, ReadErrorsTotal, ReadErrorsCorrected, WriteErrorsTotal, WriteErrorsUncorrected, Temperature, TemperatureMax | FT
Также можно вывести общую информацию о дисках через Get-PhysicalDisk:
$(Get-PhysicalDisk | Select *)[0]
Get-PhysicalDisk | Where-Object {$_.HealthStatus -ne ‘Healthy’}
С помощью данных WMI классов и командлетов PowerShell можно настроить сбор данных о состоянии дисков на компьютерах пользователей для проактивного мониторинга. Можно создать алерты для вашей системы мониторинга (например, zabbix, nagios, icinga и т.д.), compliance отчет SCCM через Configuration Baseline для или PowerShell Desired State Configuration (DSC), опрашивать состояние SMART на удаленных компьютерах скриптом через PowerShell Remoting (командлет Invoke-Command) или использовать что-то свое.