Мониторинг дисков в минимальном NAS: S.M.A.R.T., тесты и алерты в Telegram/email | AdminWiki

Мониторинг дисков в минимальном NAS: S.M.A.R.T., тесты и алерты в Telegram/email

25 июля 2026 9 мин. чтения

Диски выходят из строя не мгновенно. В 90% случаев отказу предшествует период деградации, который можно отследить за недели или месяцы до полной потери данных. Технология S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) встроена в каждый современный HDD и SSD и собирает статистику ошибок чтения, переназначенных секторов, времени раскрутки шпинделя и десятков других параметров. Задача администратора - настроить автоматический сбор этих данных и получать оповещения при выходе показателей за критические пороги.

В минимальном NAS без графического интерфейса вся настройка выполняется через консоль. Пакет smartmontools даёт две утилиты: smartctl для ручной проверки и демон smartd для фонового мониторинга. После установки вы сможете запланировать короткие и длинные тесты самодиагностики, а при обнаружении проблем - отправить уведомление в Telegram или на email. Инструкция протестирована на Debian 12, Ubuntu 24.04 и CentOS Stream 9.

По данным отчётов Backblaze за 2024 год, годовая частота отказов (AFR) для HDD объёмом от 4 до 16 ТБ составляет 1,2–2,5%. Для дисков старше 5 лет показатель вырастает до 6–8%. Без мониторинга вы узнаете об отказе постфактум, когда данные уже потеряны. Настроенный smartd с алертами сокращает окно между первым сигналом деградации и заменой диска до нескольких часов.

Если вы работаете с TrueNAS, обратите внимание на отдельное руководство по настройке S.M.A.R.T. тестов и email-оповещений в TrueNAS. Для централизованного мониторинга десятков серверов подойдёт интеграция с Zabbix через smartctl и UserParameter.

Зачем нужен мониторинг дисков в NAS

S.M.A.R.T. - это стандарт самодиагностики, реализованный на уровне контроллера накопителя. Контроллер фиксирует аномалии: рост времени отклика, появление нестабильных секторов, превышение температуры. Каждый параметр имеет текущее значение (VALUE), наихудшее зарегистрированное (WORST) и порог отказа (THRESHOLD). Когда VALUE опускается до THRESHOLD, диск считается неисправным.

Минимальный NAS - это сервер без GUI, собранный на базе Debian или Ubuntu Server с программным RAID или ZFS. В такой конфигурации нет панели управления с графиком состояния дисков. Единственный способ узнать о проблеме - настроить автоматический мониторинг и оповещения. Пропуск сигнала о росте числа переназначенных секторов приводит к тому, что через 2–4 недели диск полностью отказывает, и пул ZFS теряет избыточность.

Практика показывает: диски не умирают внезапно. Анализ 200 000+ накопителей Backblaze подтверждает, что рост атрибутов 5 (Reallocated Sectors Count) и 197 (Current Pending Sector) коррелирует с отказом в ближайшие 30 дней с вероятностью 70%. Своевременный алерт даёт фору на замену без потери данных и без ночных аварийных выездов.

Установка и первичная настройка smartmontools

Пакет smartmontools доступен в репозиториях всех основных дистрибутивов. Установка занимает одну команду.

Debian / Ubuntu:

sudo apt update && sudo apt install smartmontools -y

CentOS / RHEL / Fedora:

sudo dnf install smartmontools -y

После установки проверьте, включена ли поддержка S.M.A.R.T. на целевом диске. Не все производители активируют её по умолчанию. Команда для проверки:

sudo smartctl -i /dev/sda

В выводе найдите строку SMART support is: Available - device has SMART capability. Если следом идёт SMART support is: Disabled, включите принудительно:

sudo smartctl -s on /dev/sda

Для NVMe-накопителей путь устройства отличается - /dev/nvme0n1. Команды smartctl работают с ними аналогично, но набор атрибутов специфичен.

Проверка состояния диска вручную с помощью smartctl

Общий статус здоровья диска выводится флагом -H. Это первая команда, которую стоит выполнить на новом сервере:

sudo smartctl -H /dev/sda

Результат PASSED означает, что критические атрибуты в норме. FAILED - диск необходимо заменить немедленно. Однако PASSED не гарантирует отсутствия проблем: диск может пройти проверку здоровья, но иметь 50 переназначенных секторов при пороге в 100. Поэтому всегда смотрите полную таблицу атрибутов:

sudo smartctl -A /dev/sda

Вывод содержит колонки:

  • ID# - номер атрибута;
  • ATTRIBUTE_NAME - название;
  • VALUE - текущее нормализованное значение (обычно от 1 до 253, чем выше - тем лучше);
  • WORST - наихудшее значение за историю наблюдений;
  • THRESHOLD - порог, при котором диск считается неисправным;
  • RAW_VALUE - сырое значение (количество событий, часов, секторов).

Если VALUE приближается к THRESHOLD или RAW_VALUE ненулевое для критических атрибутов - пора планировать замену.

Планирование автоматических тестов самодиагностики

Ручная проверка полезна при аудите, но мониторинг должен работать без участия человека. smartmontools поддерживает три типа тестов:

  • Short (короткий) - проверяет электронику, механику и выборочные участки поверхности. Длится 2–5 минут.
  • Long (длинный) - полное сканирование поверхности. Для HDD 8–16 ТБ занимает 12–24 часа.
  • Conveyance - тест на повреждения при транспортировке. Актуален только для новых дисков сразу после установки.

Рекомендуемое расписание: короткий тест ежедневно в 02:00, длинный - еженедельно в ночь с субботы на воскресенье в 03:00. Такое расписание не пересекается с пиковыми нагрузками и даёт достаточно данных для раннего обнаружения деградации.

Конфигурация демона smartd для выполнения тестов

Демон smartd читает конфигурацию из /etc/smartd.conf. Строки, начинающиеся с DEVICESCAN, применяются ко всем обнаруженным дискам. Формат директивы -s задаёт расписание тестов:

DEVICESCAN -s (S/../.././02|L/../../7/03) -m root

Разбор формата -s:

  • S - Short тест, L - Long тест;
  • Пять полей через / соответствуют: минуты (0–59), часы (0–23), день месяца (1–31), месяц (1–12), день недели (0–7, где 0 и 7 - воскресенье);
  • Точка . означает «любое значение»;
  • | разделяет несколько расписаний.

Пример выше означает: короткий тест каждый день в 02:00, длинный - каждое воскресенье в 03:00. После редактирования конфигурации перезапустите демон:

sudo systemctl restart smartd
sudo systemctl status smartd

Проверьте логи, чтобы убедиться, что тесты запускаются по расписанию:

sudo journalctl -u smartd --since "1 hour ago"

Альтернативный способ - cron. Запись в crontab:

0 2 * * * /usr/sbin/smartctl -t short /dev/sda
0 3 * * 0 /usr/sbin/smartctl -t long /dev/sda

Минус cron-подхода: он не отслеживает результаты тестов и не отправляет уведомления при ошибках. Для этого нужен smartd.

Настройка уведомлений о проблемах с дисками

Демон smartd при обнаружении проблемы выполняет действие, заданное директивой -M. Базовый синтаксис:

  • -m admin@example.com - отправить письмо через системный MTA;
  • -M exec /path/to/script.sh - выполнить скрипт, передав ему текст ошибки через стандартный ввод.

Второй вариант универсален: скрипт может отправить сообщение в Telegram, Slack или записать инцидент в систему мониторинга. Готовое решение для комплексного мониторинга с Grafana и Zabbix описано в статье про автоматический мониторинг дисков с уведомлениями в Telegram и email.

Отправка алертов в Telegram через Bot API

Telegram - самый быстрый канал для критических алертов. Настройка состоит из трёх шагов.

Шаг 1. Создание бота. В Telegram найдите @BotFather, отправьте команду /newbot, задайте имя и получите токен вида 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11. Сохраните токен в защищённом месте.

Шаг 2. Получение chat_id. Напишите боту любое сообщение, затем выполните запрос:

curl -s "https://api.telegram.org/bot<ТОКЕН>/getUpdates" | jq '.result[0].message.chat.id'

Если jq не установлен, поставьте его через apt install jq или найдите chat_id вручную в JSON-выводе.

Шаг 3. Скрипт-обёртка. Создайте файл /usr/local/bin/smartd-telegram.sh:

#!/bin/bash
TOKEN="ВАШ_ТОКЕН"
CHAT_ID="ВАШ_CHAT_ID"
MESSAGE=$(cat)
curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
  -d chat_id="${CHAT_ID}" \
  -d text="SMARTd Alert%0A${MESSAGE}" \
  -d parse_mode="HTML" > /dev/null

Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/smartd-telegram.sh

Протестируйте вручную:

echo "Тестовое сообщение от smartd" | /usr/local/bin/smartd-telegram.sh

Если сообщение пришло, добавьте вызов скрипта в /etc/smartd.conf:

DEVICESCAN -s (S/../.././02|L/../../7/03) -M exec /usr/local/bin/smartd-telegram.sh -M test

Флаг -M test отправляет тестовое сообщение при каждом перезапуске smartd. После отладки уберите его, чтобы не засорять канал.

Настройка email-уведомлений через msmtp

Email-оповещения - резервный канал. Для отправки почты без поднятия полноценного MTA используйте лёгкий SMTP-клиент msmtp.

Установка:

sudo apt install msmtp msmtp-mta mailutils -y

Конфигурация /etc/msmtprc (пример для Gmail):

defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile        /var/log/msmtp.log

account        gmail
host           smtp.gmail.com
port           587
from           your-email@gmail.com
user           your-email@gmail.com
password       ваш-пароль-приложения

account default : gmail

Для Gmail требуется пароль приложения, а не основной пароль аккаунта. Создайте его в настройках безопасности Google (раздел «Пароли приложений»). Права на файл конфигурации:

sudo chmod 600 /etc/msmtprc

Проверка отправки:

echo "Тест email-оповещения" | mail -s "SMARTd Test" admin@example.com

Для интеграции со smartd используйте стандартную директиву -m. Она работает через команду mail, которую предоставляет пакет mailutils. Пример строки в /etc/smartd.conf:

DEVICESCAN -s (S/../.././02|L/../../7/03) -m admin@example.com -M test

Можно комбинировать оба канала - email и Telegram - указав две директивы -M exec или -m и -M exec одновременно.

Интерпретация S.M.A.R.T. атрибутов и принятие решений

Не все атрибуты одинаково важны. Производители дисков включают в S.M.A.R.T. десятки параметров, но только несколько из них достоверно предсказывают отказ.

Критические атрибуты для HDD:

IDНазваниеЗначениеДействие
5Reallocated Sectors CountRAW_VALUE > 0Начать мониторинг ежедневно. При росте - замена.
197Current Pending SectorRAW_VALUE > 0Немедленная замена. Сектора не читаются.
198Offline UncorrectableRAW_VALUE > 0Замена. Данные в этих секторах потеряны.
10Spin Retry CountRAW_VALUE > 0Проблемы с механикой шпинделя. Замена.
187Reported Uncorrectable ErrorsRAW_VALUE > 0Ошибки, не исправленные ECC. Замена.

Критические атрибуты для SSD:

IDНазваниеЗначениеДействие
177Wear Leveling CountVALUE < 10Ресурс ячеек исчерпан. Планировать замену.
233Media Wearout IndicatorVALUE < 10Аналог Wear Leveling для некоторых вендоров.
9Power-On HoursСравнить с TBWКосвенный показатель износа.

При получении алерта о превышении порога выполните три действия. Первое: проверьте RAW_VALUE атрибута - один переназначенный сектор не критичен, но 50 и более требуют реакции. Второе: запустите длинный тест (smartctl -t long /dev/sda) и проверьте результат через smartctl -l selftest /dev/sda. Третье: если тест завершился с ошибкой Completed: read failure - немедленно замените диск.

Типовые проблемы и их решение

S.M.A.R.T. не поддерживается или отключен. Частая ситуация с USB-контейнерами и дешёвыми SATA-контроллерами. Проверьте флагом -d:

smartctl -d sat -i /dev/sdb

Для USB-дисков часто требуется указать тип устройства явно: -d sat, -d usbjmicron или -d usbprolific. Если ни один вариант не работает, мост USB-SATA не пропускает S.M.A.R.T.-команды. Решение - подключить диск напрямую к SATA-порту.

smartd не запускается. Проверьте статус и логи:

sudo journalctl -u smartd -n 50

Типичная ошибка - отсутствие прав на устройства. Убедитесь, что пользователь, от которого работает smartd (обычно root), имеет доступ к /dev/sd*. В конфигурации /etc/smartd.conf можно указать конкретные устройства вместо DEVICESCAN:

/dev/sda -s (S/../.././02|L/../../7/03) -m admin@example.com

Уведомления не приходят. Отлаживайте по цепочке. Сначала проверьте скрипт вручную: echo "test" | /usr/local/bin/smartd-telegram.sh. Если скрипт работает, проверьте, что smartd его вызывает. Включите -M test, перезапустите демон и проверьте логи. Для email - убедитесь, что msmtp отправляет почту командой echo "test" | mail -s "test" admin@example.com. Лог msmtp находится в /var/log/msmtp.log.

Ложные срабатывания на новые диски. Некоторые производители (особенно Seagate) поставляют диски с ненулевыми RAW_VALUE атрибутов 1 (Raw Read Error Rate) и 7 (Seek Error Rate). Это нормально - данные атрибуты содержат закодированную информацию, а не абсолютное число ошибок. Ориентируйтесь только на атрибуты 5, 197, 198 и результаты тестов самодиагностики.

Для тех, кто строит централизованную систему мониторинга, рекомендуем материал по настройке алертов в TrueNAS с интеграцией Telegram и Prometheus. Если часть инфраструктуры работает на Windows, пригодится обзор инструментов мониторинга HDD и SSD для Windows.

Настроенный мониторинг - это страховка от внезапной потери данных. Затраты на внедрение: 20–30 минут на установку и конфигурацию. Отдача: спокойные ночи и отсутствие аварийных восстановлений из бэкапов.

Поделиться:
Сохранить гайд? В закладки браузера