SMART-диагностика дисков сервера: как читать и что делать
SMART читают утилитой smartctl из пакета smartmontools: smartctl -a /dev/sda для SATA и SAS, smartctl -a /dev/nvme0 для NVMe. Диск меняют не по вердикту «PASSED», а по конкретным счётчикам: переназначенным секторам, ожидающим секторам, ошибкам CRC интерфейса и остатку ресурса записи.
- Строка
SMART overall-health self-assessment test result: PASSEDозначает лишь то, что ни один атрибут не пересёк порог производителя. Диск с сотней переназначенных секторов её тоже покажет. - Опасны три вещи: рост
Reallocated_Sector_Ct, ненулевойCurrent_Pending_Sectorи любое значениеOffline_Uncorrectable. - У NVMe свои поля:
percentage_used,media_errors,critical_warning,available_spare. - Демон
smartdгоняет тесты по расписанию и шлёт письмо, когда счётчик двинулся.
Установка и первое чтение
Пакет одинаков в обоих семействах, для NVMe добавьте nvme-cli.
# Debian/Ubuntu
apt-get install -y smartmontools nvme-cli
# RHEL, AlmaLinux, Rocky
dnf install -y smartmontools nvme-cli
# список устройств, которые видит smartctl
smartctl --scan
# полный отчёт по SATA/SAS диску
smartctl -a /dev/sda
# только атрибуты, без шапки
smartctl -A /dev/sda
# NVMe: журнал здоровья
smartctl -a /dev/nvme0
nvme smart-log /dev/nvme0
Если диски спрятаны за RAID-контроллером, к команде добавляют тип устройства, например -d megaraid,8. Как понять, какая у вас реализация массива, разобрано в статье аппаратный RAID или mdadm.
Какие атрибуты смотреть
| Атрибут | Что означает | Норма | Действие |
|---|---|---|---|
| 5 Reallocated_Sector_Ct | сектора, переназначенные из резерва | 0 и не растёт | рост за неделю — планировать замену |
| 197 Current_Pending_Sector | сектора, которые не читаются, но ещё не переназначены | 0 | любое ненулевое значение — запустить длинный тест |
| 198 Offline_Uncorrectable | сектора, не восстановленные при фоновой проверке | 0 | менять диск |
| 199 UDMA_CRC_Error_Count | ошибки передачи по шине | 0 и не растёт | кабель, слот бэкплейна, а не диск |
| 187 Reported_Uncorrect | ошибки, о которых диск сообщил хосту | 0 | менять диск |
NVMe читается иначе
У NVMe нет классической таблицы атрибутов, вместо неё — журнал здоровья с фиксированными полями. Смотреть стоит четыре: critical_warning (любое значение, кроме нуля, — авария), percentage_used (израсходованный ресурс записи в процентах, 100 означает исчерпание гарантированного TBW), media_errors (неисправимые ошибки носителя) и available_spare вместе с available_spare_threshold.
Самотестирование
Короткий тест проверяет электронику и часть поверхности за 1–2 минуты, длинный читает всю поверхность и идёт часы. Оба выполняются самим диском в фоне, сервер при этом работает.
# короткий тест
smartctl -t short /dev/sda
# длинный тест
smartctl -t long /dev/sda
# прервать текущий тест
smartctl -X /dev/sda
# результаты последних тестов
smartctl -l selftest /dev/sda
# журнал ошибок накопителя
smartctl -l error /dev/sda 2>&1 | head -n 40
Автоматический контроль через smartd
# конфиг: /etc/smartd.conf (RHEL) или /etc/smartmontools/smartd.conf (Debian/Ubuntu)
# одна строка на все найденные диски:
# DEVICESCAN -a -o on -S on -n standby,q -s (S/../.././02|L/../../6/03) -W 4,45,55 -m root@localhost
systemctl enable --now smartd # Debian/Ubuntu
systemctl enable --now smartd # RHEL, AlmaLinux, Rocky
systemctl status smartd
Расписание в примере означает короткий тест каждую ночь в 02:00 и длинный по субботам в 03:00. Письма приходят только при наличии рабочего почтового транспорта на сервере; на VDS исходящий SMTP по умолчанию закрыт и открывается по запросу, поэтому надёжнее отдавать метрики SMART в систему мониторинга — это описано в статье про мониторинг железа сервера.
Частая ошибка — считать диск исправным, потому что smartctl -H вернул PASSED. Этот вердикт срабатывает только при пересечении заводского порога, а накопитель с сотнями переназначенных секторов до порога ещё не дошёл и продолжает отдавать ошибки чтения. В RAID это выглядит как случайные подвисания ввода-вывода без единого сообщения о деградации массива. Проверяйте иначе: снимайте smartctl -A раз в сутки и сравнивайте RAW_VALUE атрибутов 5, 187, 197 и 198 с предыдущим снимком. Любой прирост — повод вывести диск и заказать замену накопителя в массиве, не дожидаясь полного отказа.
Когда менять диск
- Немедленно: ненулевой
Offline_Uncorrectable,Reported_Uncorrect,critical_warningу NVMe, ошибки чтения в журнале самотестирования. - В ближайшие дни: растущий
Reallocated_Sector_Ct,Current_Pending_Sector, который не обнуляется после длинного теста. - Не меняем: рост только
UDMA_CRC_Error_Count— это шлейф или слот корзины, замена диска ничего не даст.
На выделенных серверах ZevsHost диск в массиве заменяет дежурная смена дата-центра по заявке: вы снимаете вывод smartctl -a и серийный номер накопителя, дальше работают инженеры площадки.
Коротко
smartctl -aдля SATA и SAS,smartctl -a /dev/nvme0илиnvme smart-logдля NVMe.- Решение принимают по
RAW_VALUEатрибутов 5, 187, 197, 198 и по их динамике, а не по строке PASSED. - У NVMe следят за
percentage_used,media_errors,available_spareиcritical_warning.