Мониторинг состояния жестких дисков и SMART в Windows
Современные версии Windows собирают информацию о состоянии жестких дисках компьютера через SMART и могут оповестить пользователя о наличии проблем. Рассмотрим, как выглядит уведомление Windows о физических проблемах с жестким диском и как с помощью PowerShell и командной строки получить SMART информацию о здоровье ваших дисков через встроенные WMI классы.
Большинство современных жестких дисков (в том числе HDD, SSD, NVMe SSD) поддерживает технологию базового самотестирования и анализа состояния S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology). Контроллер диска оценивает состояние физических характеристик диска, и Windows может получить доступ к этим данным через WMI.
В этой статье:
- Ошибка “Windows обнаружила неполадки жесткого диска”
- Получение SMART параметров жесткого диска через WMI класс
Ошибка “Windows обнаружила неполадки жесткого диска”
В Windows по умолчанию включен мониторинг дисков службами диспетчера дилогических дисков (Logical Disk Manager) и Diagnostic Policy Service. И если один из дисков возвращает статус Predictive Failure, ОС запускает задание планировщика Microsoft-Windows-DiskDiagnosticResolver (\Microsoft\Windows\DiskDiagnostic), которое выводит сообщение:
Немедленно создайте резервную копию всех файлов для предотвращения потери информации. Затем свяжитесь с производителем компьютера для замены или ремонта жесткого диска.
В журнале событий при этом появляются сообщения вида:
Статус Predictive Failure говорит о том, что одна из характеристик диска (например, механический износ) не соответствует эталонным значениям и велика вероятность отказа этого диска в будущем.
В этом случае рекомендуется выполнить резервное копирование данных с этого диска на отдельный носитель. Затем выполните проверку диска с помощью штатной SMART утилиты от производителя (или универсальными утилитами типа CrystalDiskInfo), проверьте носитель с помощью chkdsk.
Вы можете включить или отключить вывод этого сообщения пользователя с помощью специального параметра групповой политики Disk Diagnostic: Configure execution level в разделе GPO Administrative Templates -> System -> Troubleshooting and Diagnostics -> Disk Diagnostics.
Чаще всего для получения информации о состоянии дисков в Windows используют сторонни программы (например, CrystalDiskInfo, HDTune и т.д.). Такие программы, действительно позволяют получить много информации о дисках.
Например, я могу узнать оставшийся ресурс SSD. Текущее значение Total Host Writes – 507 Gb. Производитель гарантирует максимальный ресурс записи (TBW)для этой модели SSD 300 Тб. Значит диск изношен менее чем на 0.2%. Срок использования диска всего 108 часов.
Получение SMART параметров жесткого диска через WMI класс
В Windows вы можете получить доступ к данным SMART дисков с помощью встроенных средств.
Информацию о состоянии дисков компьютера можно посмотреть через панель управления Control Panel\System and Security\Security and Maintenance.
В моем случае с дисками все ОК, т.к. в разделе Drive Status указано: OK, All drives are working properly.
Как мы уже говорили выше, Windows собирает информацию SMART с дисков и позволяет получать к ней доступ через WMI.
В BIOS/UEFI для дисков должна быть включена поддержка SMART.
Откройте командную строку с правами администратора и выполните следующую команду чтобы получить состояние всех дисков:
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 зависит от вендора.
Значения некоторых счетчиков надежности дисков можно получить с помощью следующего кода 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]
С помощью данных WMI классов и командлетов PowerShell можно настроить сбор данных о состоянии дисков на компьютерах пользователей для проактивного мониторинга. Можно создать алерты для вашей системы мониторинга (например, zabbix, nagios, icinga и т.д.), compliance отчет SCCM через Configuration Baseline для или PowerShell Desired State Configuration (DSC), опрашивать состояние SMART на удаленных компьютерах скриптом через PowerShell Remoting (командлет Invoke-Command) или использовать что-то свое.