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.