smartctl
Введение
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 / monitoring
Базовая настройка и использование 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 позволяет системному администратору перейти от реактивного устранения аварий к осознанному, управляемому обслуживанию дисковой подсистемы, снижая риски простоев, потери данных и внеплановых инцидентов, а также создавая прочную основу для дальнейшей автоматизации и интеграции с системами централизованного мониторинга.