S.M.A.R.T. (Русский)
S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology) — дополнительный компонент, встроенный во многие современные устройства хранения данных, с помощью которого они отслеживают, хранят и анализируют состояние своей работы. Собирается статистика (температура, количество переназначенных секторов, ошибки поиска...), которую программное обеспечение может использовать для оценки состояния устройства, прогнозирования возможных сбоев в его работе и уведомления о небезопасных значениях.
Smartmontools
Пакет smartmontools содержит две утилиты для анализа и мониторинга устройств хранения данных: smartctl
и smartd
. Для их использования установите пакет smartmontools.
Для эффективного использования этих инструментов поддержка SMART должна быть доступна и включена на каждом устройстве хранения данных. Можно использовать #smartctl для проверки наличия и включения поддержки SMART. После этого вы можете вручную выполнить #Запуск теста и #Просмотр результатов теста или использовать #smartd для автоматического запуска тестов и отправки уведомлений по электронной почте.
smartctl
smartctl — инструмент командной строки для управления системой SMART, встроенной в большинство ATA/SATA и SCSI/SAS жёстких дисков и твердотельных накопителей.
Опция -i
/--info
выводит различную информацию об устройстве, в том числе о том, доступен ли SMART и включен ли он:
# smartctl --info /dev/sda | grep 'SMART support is:'
SMART support is: Available - device has SMART capability. SMART support is: Enabled
Если SMART доступен, но не включен, вы можете включить его:
# smartctl --smart=on /dev/устройство
Может потребоваться указать тип устройства. Например, опция --device=ata
укажет smartctl, что тип устройства — ATA, что предотвратит попытки отправки SCSI-команд на это устройство.
Запуск теста
Существует три типа самотестирования, которые может выполнить устройство (все они безопасны для хранящихся на устройстве данных):
- Короткий (Short): выполняет тесты, которые с высокой вероятностью обнаруживают проблемы устройства,
- Расширенный (Extended) или долгий (Long): аналогичен короткому, но без ограничения времени и с полным исследованием поверхности диска,
- Транспортировка (Conveyance): выявляет наличие повреждений, которые устройство могло получить во время транспортировки.
Опция -c
/--capabilities
выводит, какие тесты поддерживает устройство и приблизительное время выполнения каждого теста. Например:
Для запуска теста используйте опцию -t
/:
# smartctl -t short /dev/устройство # smartctl -t long /dev/устройство # smartctl -t conveyance /dev/устройство
Просмотр результатов теста
Посмотреть общее состояние здоровья устройства можно с помощью флага . Если устройство сообщает об отказе, это означает либо то, что устройство уже вышло из строя, либо то, что оно прогнозирует свой отказ в течение следующих 24 часов. Если это произошло — как можно скорее скопируйте данные с диска в безопасное место.
# smartctl -H /dev/устройство
Можно также просмотреть список последних результатов тестирования и подробную информацию об устройстве:
# smartctl -l selftest /dev/устройство # smartctl -a /dev/устройство
Генерация таблицы с атрибутами всех дисков
#!/bin/bash function drives_csv { declare -A drive_values for d in `smartctl --scan -d scsi | cut -d' ' -f1`; do drive_values["-Drive-----------------"]="${drive_values[-Drive-----------------]},$d" for l in `smartctl -A $d | grep ATTRIBUTE_NAME -A30 | grep -v ATTRIBUTE_NAME | column -H1,3,4,5,6,7,8,9,11,12,13,14,15 -t -o, | sed 's/ //g'`; do key=`echo $l | cut -d',' -f1` value=`echo $l | cut -d',' -f2` existing=${drive_values["$key"]} drive_values["${key}"]="${existing},${value}" #~ echo "${key},${drive_values[$key]}" done done for key in "${!drive_values[@]}"; do echo "${key}${drive_values[$key]}" done | sort } drives_csv | column -s, -t
smartd
Демон smartd отслеживает состояние SMART и отправляет уведомления, когда что-то идёт не так. Он управляется через systemd и настраивается в файле . Синтаксис конфигурационного файла эзотеричен, и в данной статье представлено лишь краткое описание. Для получения более полной информации читайте примеры и комментарии в конфигурационном файле или в smartd.conf(5).
Управление демоном
Чтобы запустить демон, проверить его состояние, сделать его автозапуск при загрузке системы и прочитать последние записи в журнале, просто запустите/включите systemd-службу smartd.service
.
Определение устройств для мониторинга
Чтобы отслеживать все возможные ошибки SMART на всех дисках, в файле конфигурации должен быть следующий параметр:
Он уже есть в конфигурации smartd по умолчанию, а параметр , который является параметром по умолчанию, может быть опущен.
Чтобы отслеживать все возможные ошибки SMART на и и игнорировать все остальные устройства:
Чтобы отслеживать все возможные ошибки SMART на подключенных внешних дисках (к примеу, USB-дисках для резервного копирования), лучше указать UUID устройства, так как при перезагрузке диска может измениться.
Сначала необходимо получить UUID диска для мониторинга: теперь найдите диск, который вы хотите отслеживать:
К примеру, если нужный вам диск в данный момент является , то вы можете взять отсюда его UUID и в настройках smartd просто указать путь в /dev/disk/by-uuid/
:
Также может понадобиться добавить опцию для работы smartd.
Теперь этот диск будет корректно отслеживаться, даже если его путь изменится после перезагрузки.
Уведомление о возможных проблемах
Для получения email при появлении новых ошибок укажите адрес своей электронной почты в опции :
Чтобы иметь возможность отправлять почту в интернет (то есть не на локальный почтовый аккаунт root), необходимо установить и настроить MTA (Mail Transport Agent) или MUA (Mail User Agent). Распространёнными MUA являются msmtp и Postfix, но, вероятно, подойдёт и самый простой dma. Распространёнными MTA являются sendmail и Postfix. Достаточно просто настроить S-nail, если вам не нужно ничего другого, но нужно следовать этим инструкциям.
Опция включит отправку тестового письма при каждом запуске демона smartd:
Доставка электронных писем может занять довольно много времени. Чтобы быть уверенным, что вы будете немедленно предупреждены о сбое жёсткого диска, можно указать скрипт, который будет выполняться в дополнение к отправке письма:
/etc/smartd.conf
DEVICESCAN -m address@domain.com -M exec /usr/local/bin/smartdnotify
Для отправки письма и системного уведомления можно использовать примерно такой скрипт :
#!/bin/sh # Отправка письма echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS" # Отправка системного уведомления wall "$SMARTD_MESSAGE"
Если вы работаете в среде рабочего стола, вы можете захотеть получать всплывающее уведомление на рабочем столе. Для этого можно использовать такой скрипт (замените и на пользователя и userid, под которым запущен X, соответственно):
/usr/local/bin/smartdnotify
#!/bin/sh sudo -u ''X_user'' DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/''X_userid''/bus notify-send "S.M.A.R.T Error ($SMARTD_FAILTYPE)" "$SMARTD_MESSAGE" --icon=dialog-warning -u critical
Для работы скрипта нужны и совместимая среда рабочего стола. Смотрите статью Desktop notifications (Русский) для более подробной информации.
Также можно добавлять скрипты в каталог .
Скрипт, который уведомляет всех вошедших пользователей через libnotify:
Для работы скрипта нужны и и совместимая среда рабочего стола.
Для запуска скрипта из этого каталога укажите его название в таком формате:
Управление питанием
Можно проинструктировать smartd, как обращаться с дисками в режиме пониженного энергопотребления. Обычно в ответ на команды SMART, выдаваемые smartd, пластины диска раскручиваются. Поэтому если эта опция не используется, то диск, находящийся в режиме пониженного энергопотребления, может быть раскручен и переведён в режим повышенного энергопотребления, если smartd его периодически опрашивает.
Подробнее в smartmontools wiki.
Иногда опция -n
не работает. Вы можете увидеть подобное сообщение в системном журнале:
В качестве альтернативы можно использовать опцию -i
. Она определяет, как часто smartd раскручивает диски для проверки их состояния. По умолчанию это 30 минут. Для изменения создайте и измените файл .
/etc/default/smartmontools
SMARTD_ARGS="-i 10800" Проверка каждые 10800 секунд (3 часа)
Смотрите для более подробной информации.
Выполнение тестов по расписанию
smartd может запускать самотестирование дисков по расписанию. Следующая конфигурация будет запускать короткий тест каждый день между 2-3 часами ночи и расширенный тест еженедельно по субботам между 3-4 часами утра:
Оповещение об изменении температуры
smartd может отслеживать температуру дисков и предупреждать, если она повышается слишком быстро или достигает верхнего предела. Приведённый ниже пример будет записывать изменение температуры на 4 градуса и более, достижение температуры 35 градусов и отправлять предупреждение при достижении температуры 40:
Полный пример smartd.conf
Объединение всего вышеперечисленного даст следующий пример конфигурации:
- — smartd отслеживает все диски, которые найдёт
- — отслеживание всех атрибутов
- — включение SMART Automatic Offline Testing
- — включение автоматического сохранения атрибутов
-n standby,q
— не проверять диск, если он в режиме пониженного энергопотребления, и подавлять сообщение об этом в журнале, чтобы не вызвать запись на диск- — выполнение коротких и расширенных тестов по расписанию
- — отслеживание температуры
-m ...
— уведомления на почту
Консольные приложения
- (из пакета ) также предоставляет некоторые показатели состояния диска: в частности, высокие значения в столбце f_await означают, что диск не отвечает быстро на запросы и может выйти из строя.
Графические приложения
- GSmartControl — GNOME-фронтенд для утилиты smartctl.