smartctl та smartd: моніторинг стану дисків через S.M.A.R.T.
Вступ
smartctl — консольна утиліта, що входить до пакету smartmontools, призначена для роботи з технологією S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology), реалізованою в сучасних накопичувачах.
Де та для чого застосовується:
- сервери хостинг-компаній;
- вузли VPS/VDS;
- виділені сервери;
- файлові сервери;
- системи резервного копіювання;
- корпоративні інфраструктури.
Які завдання вирішує:
- раннє виявлення деградації дисків;
- прогнозування відмов накопичувачів;
- зниження ризику втрати даних;
- автоматизація моніторингу стану HDD, SSD, NVMe;
- аналіз фізичних проблем дискових підсистем.
Проактивний моніторинг SMART дозволяє виявити проблему до фактичної відмови диска, що є критично важливим для продакшн-середовищ.
Вимоги та підготовка
Підтримувані ОС та версії:
Linux:
- Debian 10+
- Ubuntu 18.04+
- RHEL / AlmaLinux / Rocky Linux 8+
- CentOS 7 (підтримується, але застарів)
- FreeBSD 12+
Windows (через smartmontools, обмеженого застосування)
Далі приклади наводяться для Linux.
Необхідне ПЗ та пакети:
- пакет smartmontools
- доступ до /dev/sdX, /dev/nvmeX
- встановлений systemd (для smartd)
Права доступу:
- обов'язкові права root
- або доступ через sudo
Попередні перевірки
Перегляд списку дисків у системі:
lsblk -d -o NAME,MODEL
Огляд та основні поняття
Ключові терміни
- SMART – вбудована система самодіагностики диска
- Attributes – атрибути стану (Reallocated_Sector_Ct, Pending_Sectors тощо)
- Self-test – вбудовані тести накопичувача
- smartctl – CLI-утиліта керування SMART
- smartd – демон автоматичного моніторингу
Принципи роботи
- Диск самостійно збирає статистику
- smartctl зчитує ці дані
- smartd аналізує порогові значення та події
- При проблемах відправляються сповіщення
Логіка вирішення
Диск > SMART-атрибути > smartctl > smartd > лог / email / моніторинг
Базова налаштування та використання smartctl
Встановлення утиліти smartmontools
Робота з SMART неможлива без встановленого пакету smartmontools, який включає утиліти smartctl (ручна робота з дисками) та smartd (фоновий демон моніторингу).
Встановлення виконується стандартними засобами пакетного менеджера дистрибутива.
Debian / Ubuntu
sudo apt update
sudo apt install smartmontools
RHEL / AlmaLinux / Rocky Linux
sudo dnf install smartmontools
Після встановлення утиліти стають доступні в системі та готові до використання без додаткової ініціалізації.
Перевірка версії та доступності smartctl
На першому етапі рекомендується переконатися, що утиліта коректно встановлена та доступна в системі:
smartctl --version
Команда виводить версію пакету та список технологій, що підтримуються.
Це дозволяє:
- переконатися, що використовується актуальна версія;
- перевірити наявність підтримки NVMe, RAID та інших типів пристроїв.
Перевірка підтримки SMART конкретним диском
Далі необхідно перевірити, чи підтримує сам накопичувач технологію SMART та чи увімкнена вона на рівні пристрою.
sudo smartctl -i /dev/sda
Приклад коректного виводу:
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Available – диск фізично підтримує SMART;
Enabled – збір SMART-даних увімкнено та доступний для читання.
Якщо SMART підтримується, але вимкнений, це часто зустрічається на нових або раніше невикористовуваних дисках. У такому разі його необхідно увімкнути вручну:
sudo smartctl -s on /dev/sda
Після цього рекомендується повторно виконати команду smartctl -i та переконатися, що SMART активовано.
Перегляд SMART-атрибутів та первинна оцінка стану
Основна практична цінність SMART полягає в його атрибутах — числових показниках, що відображають стан поверхні, механіки та електроніки диска.
Для перегляду атрибутів використовується команда:
sudo smartctl -A /dev/sda
У виводі міститься таблиця атрибутів з поточними значеннями та їхньою історією. У першу чергу слід звертати увагу на наступні показники:
Ключові поля у виводі:
- VALUE (Поточне значення): Нормалізоване значення атрибута (зазвичай від 1 до 100, 100 — ідеально). Диск вважається несправним, якщо VALUE ≤ THRESH.
- WORST (Найгірше значення): Найгірше значення, якого було досягнуто за час роботи диска.
- THRESH (Поріг): Мінімальне допустиме значення VALUE. Перевищення порогу (VALUE ≤ THRESH) — ознака критичного стану.
- RAW_VALUE: «Сире», ненормалізоване значення атрибута. Саме його потрібно аналізувати для оцінки зносу та підрахунку подій.
Ключові атрибути для HDD (традиційні жорсткі диски):
- Reallocated_Sector_Ct: Зростання вказує на фізичну деградацію поверхні.
- Current_Pending_Sector (Сектори в очікуванні переназначення): Нестабільні сектори. Навіть одне ненульове значення — тривожний сигнал.
- Offline_Uncorrectable (Невідновлювані помилки): Сектори, які не вдалося прочитати.
- Power_On_Hours: Загальний час роботи диска.
Ключові атрибути для SSD:
- Retired_Block_Count: Аналог Reallocated_Sector_Ct для HDD. Показує кількість блоків, виведених з експлуатації. Навіть невисоке значення при VALUE=100 може бути нормою.
- Reallocated_Event_Count: Кількість подій переназначення.
- SSD_Life_Left або Percentage Used/Media Wearout Indicator: Відсоток ресурсу, що залишився (або зносу). Низьке значення (наприклад, <10%) — ознака швидкої відмови.
- Wear_Range_Delta: Показник рівномірності зносу комірок пам'яті.
- Power_On_Hours_and_Msec: Час напрацювання.
- Lifetime_Writes_GiB / Lifetime_Reads_GiB (Атрибути 241, 242): Загальний обсяг записаних/прочитаних даних.
Ключові атрибути для NVMe (через smartctl -a /dev/nvme0):
- Percentage Used: Відсоток вичерпання ресурсу запису. Основний показник зносу.
- Media and Data Integrity Errors: Помилки цілісності даних.
- Critical Warning: Прапорці критичних попереджень.
- Temperature: Поточна температура.
На даному етапі адміністратор отримує загальне уявлення про стан диска та може виявити явні ознаки проблем.
Розширене налаштування та практичні сценарії
SMART підтримує вбудовані самотести, які виконуються самим накопичувачем без участі операційної системи.
Короткий тест призначений для швидкої перевірки ключових компонентів:
sudo smartctl -t short /dev/sda
Тривалий тест виконує повне сканування поверхні і займає значно більше часу:
sudo smartctl -t long /dev/sda
Після завершення тесту необхідно перевірити результати:
sudo smartctl -l selftest /dev/sda
У виводі зазначається:
- тип тесту;
- статус виконання;
- наявність або відсутність помилок.
Невдалий тест — пряма підстава для підготовки до заміни диска.
Робота з RAID-контролерами
Апаратні RAID-контролери часто приховують SMART-дані від системи. У таких випадках необхідно явно вказувати тип пристрою.
Приклад для LSI-контролера:
smartctl -a -d megaraid,0 /dev/sda
Де:
- -a – ключ для виведення всієї доступної SMART-інформації (атрибути, логи, помилки, загальна оцінка здоров'я).
- -d – ключ для вказання типу пристрою.
- megaraid – вказує драйверу SMART, що диск знаходиться за контролером LSI/Broadcom (часто використовується в серверах).
- 0 – фізичний номер диска (PD, Physical Drive) у масиві RAID. Це не sda, а унікальний ID, який присвоює контролер. Його можна дізнатися з утиліти керування контролером (наприклад, storcli або MegaCLI).
- /dev/sda – у даному контексті це не реальний диск, а псевдопристрій, що представляє сам RAID-контролер у системі. Зазвичай це /dev/sgX (SCSI Generic) або просто /dev/sda, якщо контролер створив віртуальний диск.
Типова помилка при відсутності вказання типу пристрою:
SMART support is: Unavailable
Це не означає, що SMART недоступний — лише те, що smartctl не зміг автоматично визначити шлях до фізичного диска. Рішення — коректно вказати параметр -d.
Діагностика та пошук проблем
Ознаки можливих несправностей:
- зростання значення Reallocated_Sector_Ct;
- ненульовий Current_Pending_Sector;
- помилки програм/стирань (Program_Fail_Count, Erase_Fail_Count);
- помилки самотестів;
- збільшення затримок введення-виведення;
- повідомлення про помилки в системних логах.
Аналіз логів:
journalctl -u smartd
dmesg | grep -i error
Пояснення:
Pending Sectors > 0 – високий ризик відмови;
Reallocated Sectors збільшуються – прогресуюча деградація;
Self-test FAILED – диск підлягає заміні.
Визначення джерел проблем
Для виключення хибних спрацьовувань важливо зіставляти SMART-дані з реальним навантаженням.
iostat -x 1
iotop
Перевірка, куди змонтовано диск:
lsblk -o NAME,SERIAL,MOUNTPOINT
Виявлення контролерів:
lspci | grep -i raid
Додаткові метрики:
- температура вище 50 °C;
- зростання CRC-помилок;
- нестабільні SMART-значення.
Налаштування надсилання сповіщень адміністратору при наближенні SMART-показників до порогових значень
Сама по собі наявність SMART-даних ще не гарантує безпеки інфраструктури. Ключовим елементом моніторингу є своєчасне сповіщення адміністратора в момент, коли стан диска починає погіршуватися, але відмова ще не відбулася.
Механізм сповіщень дозволяє:
- виявити деградацію накопичувача на ранній стадії;
- завчасно спланувати заміну диска;
- уникнути аварійного простою та втрати даних;
- діяти в рамках регламентних вікон обслуговування.
У smartmontools за надсилання сповіщень відповідає демон smartd, який автоматично відстежує зміни SMART-атрибутів і реагує на відхилення від норми.
Принцип роботи сповіщень smartd
Демон smartd функціонує як фоновий сервіс і виконує наступні завдання:
- Періодично опитує SMART-атрибути дисків.
- Порівнює поточні значення з: заводськими порогами, попередніми значеннями (динаміка змін).
- Виявляє: зростання критичних атрибутів, появу нових помилок, збої самотестів.
- Формує сповіщення та надсилає його адміністратору.
Вимоги для роботи сповіщень
Перед налаштуванням необхідно переконатися в наступному:
- у системі встановлено та коректно налаштовано MTA (Postfix, Exim, Sendmail, ssmtp);
- сервер здатен надсилати вихідну пошту;
- визначено адресу адміністратора для отримання сповіщень.
Приклад налаштування ssmtp — легкого та простого MTA для надсилання пошти з системи.
Встановлення:
Debian/Ubuntu:
sudo apt update && sudo apt install ssmtp mailutils -y
RHEL:
sudo dnf install ssmtp mailx
Створіть файл конфігурації:
sudo nano /etc/ssmtp/ssmtp.conf
та відредагуйте вміст:
# Default sender address [email protected] # SMTP server and port of your email provider mailhub=smtp.your-domain.com:587 # Alternative example: # mailhub=smtp.gmail.com:587 # For Gmail # Authentication credentials [email protected] AuthPass=your-password # Encryption settings UseSTARTTLS=YES # Use STARTTLS UseTLS=YES # Use TLS FromLineOverride=YES # Allow overriding the sender address # Hostname (specify your server's name) hostname=server1.your-domain.com # you can use hostname=localhost or specify the system's actual hostname
Збережіть файл та налаштуйте права доступу:
sudo chmod 640 /etc/ssmtp/ssmtp.conf
sudo chown root:mail /etc/ssmtp/ssmtp.conf
Налаштуйте відправників (revaliases):
sudo nano /etc/ssmtp/revaliases
root:[email protected]:smtp.your-domain.com:587 www-data:[email protected]:smtp.your-domain.com:587
Для успішного надсилання повідомлень на сервері мають бути відкриті порти: 587 (основний для надсилання з шифруванням STARTTLS), або 25 (стандартний SMTP), 465 (захищений SMTP з SSL), якщо вони будуть передбачені конфігурацією.
Базова перевірка надсилання пошти:
echo "SMART test message" | mail -s "SMART notification test" [email protected]
Можна явно вказати відправника:
echo "SMART test message" | mail -s "SMART notification test" -a "From: [email protected]" [email protected]
Або через ssmtp напряму:
echo "SMART test message" | ssmtp [email protected]
[email protected] – адреса отримувача, куди буде надіслано повідомлення.
Якщо лист не доставляється, подальше налаштування smartd не має сенсу до усунення проблем з роботою пошти.
Конфігурація сповіщень SMART виконується у файлі:
/etc/smartd.conf
Приклад простої робочої конфігурації:
/dev/sda -a -o on -S on -m [email protected]
Параметри:
- /dev/sda – диск, який знаходиться під наглядом;
- -a – повний набір перевірок;
- -S on – увімкнено збереження атрибутів між перезавантаженнями;
- -o on – активовано автоматичний збір офлайн-даних;
- -m – сповіщення надсилаються на вказаний email.
З цього моменту smartd почне відстежувати стан диска у фоновому режимі.
Сповіщення при наближенні до порогових значень
Ключова особливість smartd полягає в тому, що він відстежує зміну значень атрибутів, а не тільки їх критичне перевищення.
На практиці це означає, що сповіщення може бути надіслане:
- при першій появі Current_Pending_Sector;
- при збільшенні Reallocated_Sector_Ct, навіть якщо поріг ще не досягнуто;
- при виявленні помилок самотестів;
- при деградації NVMe-параметрів.
Найбільш значущі атрибути ранньої відмови:
- Reallocated_Sector_Ct
- Current_Pending_Sector
- Offline_Uncorrectable
- Media and Data Integrity Errors (NVMe)
- Percentage Used (SSD/NVMe)
Навіть мінімальні зміни цих параметрів повинні розглядатися як привід для уваги.
Використання самотестів як джерела сповіщень
Для підвищення інформативності рекомендується поєднувати моніторинг атрибутів з регулярними самотестами.
Приклад конфігурації з розкладом:
/dev/sda -a -o on -S on \ -s (S/../.././02|L/../../6/03) \ -m [email protected]
Логіка роботи:
- щодня виконується короткий тест;
- раз на тиждень — повний тест;
- при будь-якому збої тесту адміністратор отримує сповіщення.
Управління частотою та обсягом сповіщень
Щоб уникнути надлишкових оповіщень, використовується параметр -M once:
/dev/sda -a -m [email protected] -M once
У цьому режимі:
- сповіщення надсилається при першому виявленні проблеми;
- повторні повідомлення не дублюються до усунення причини.
Для тестування системи сповіщень можна використовувати -M test. Це дозволяє переконатися, що smartd здатен надсилати повідомлення без очікування реальної помилки.
Висновок
У рамках даного мануалу було послідовно розглянуто повний цикл впровадження та експлуатації smartctl і демона smartd як інструменту проактивного моніторингу стану дисків. Було розібрано базові принципи роботи SMART, практичні способи аналізу атрибутів, запуск та інтерпретацію самотестів, особливості роботи з NVMe-накопичувачами та RAID-контролерами, а також методи діагностики та виявлення першопричин проблем. Окрему увагу приділено налаштуванню сповіщень, які дозволяють виявляти деградацію накопичувачів на ранніх стадіях, ще до настання критичної відмови.
Коректно налаштований моніторинг SMART є невід'ємною частиною надійної серверної інфраструктури і повинен розглядатися як обов'язковий експлуатаційний стандарт. Використання smartctl та smartd дозволяє системному адміністратору перейти від реактивного усунення аварій до усвідомленого, керованого обслуговування дискової підсистеми, знижуючи ризики простоїв, втрати даних та позапланових інцидентів, а також створюючи міцну основу для подальшої автоматизації та інтеграції з системами централізованого моніторингу.