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
выводит, какие тесты поддерживает устройство и приблизительное время выполнения каждого теста. Например:
# smartctl -c /dev/sda
... Short self-test routine recommended polling time: ( 1) minutes. Extended self-test routine recommended polling time: ( 74) minutes. Conveyance self-test routine recommended polling time: ( 2) minutes. ...
Для запуска теста используйте опцию /:
# 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-службу .
Определение устройств для мониторинга
Чтобы отслеживать все возможные ошибки SMART на всех дисках, в файле конфигурации должен быть следующий параметр:
/etc/smartd.conf
DEVICESCAN -a
Он уже есть в конфигурации smartd по умолчанию, а параметр , который является параметром по умолчанию, может быть опущен.
Чтобы отслеживать все возможные ошибки SMART на и и игнорировать все остальные устройства:
Чтобы отслеживать все возможные ошибки SMART на подключенных внешних дисках (к примеу, USB-дисках для резервного копирования), лучше указать UUID устройства, так как при перезагрузке диска может измениться.
Сначала необходимо получить UUID диска для мониторинга: ls -lah /dev/disk/by-uuid/
теперь найдите диск, который вы хотите отслеживать:
К примеру, если нужный вам диск в данный момент является , то вы можете взять отсюда его UUID и в настройках smartd просто указать путь в :
/etc/smartd.conf
/dev/disk/by-uuid/820cdd8a-866a-444d-833c-1edb0f4becac -a
Также может понадобиться добавить опцию для работы smartd.
Теперь этот диск будет корректно отслеживаться, даже если его путь изменится после перезагрузки.
Уведомление о возможных проблемах
Для получения email при появлении новых ошибок укажите адрес своей электронной почты в опции :
Чтобы иметь возможность отправлять почту в интернет (то есть не на локальный почтовый аккаунт root), необходимо установить и настроить MTA (Mail Transport Agent) или MUA (Mail User Agent). Распространёнными MUA являются msmtp и Postfix, но, вероятно, подойдёт и самый простой dma. Распространёнными MTA являются sendmail и Postfix. Достаточно просто настроить S-nail, если вам не нужно ничего другого, но нужно следовать этим инструкциям.
Опция включит отправку тестового письма при каждом запуске демона smartd:
Доставка электронных писем может занять довольно много времени. Чтобы быть уверенным, что вы будете немедленно предупреждены о сбое жёсткого диска, можно указать скрипт, который будет выполняться в дополнение к отправке письма:
Для отправки письма и системного уведомления можно использовать примерно такой скрипт :
#!/bin/sh # Отправка письма echo "$SMARTD_MESSAGE" | mail -s "$SMARTD_FAILTYPE" "$SMARTD_ADDRESS" # Отправка системного уведомления wall "$SMARTD_MESSAGE"
Если вы работаете в среде рабочего стола, вы можете захотеть получать всплывающее уведомление на рабочем столе. Для этого можно использовать такой скрипт (замените и X_userid
на пользователя и userid, под которым запущен X, соответственно):
Для работы скрипта нужны libnotify и совместимая среда рабочего стола. Смотрите статью Desktop notifications (Русский) для более подробной информации.
Также можно добавлять скрипты в каталог .
Скрипт, который уведомляет всех вошедших пользователей через libnotify:
Для работы скрипта нужны libnotify и и совместимая среда рабочего стола.
Для запуска скрипта из этого каталога укажите его название в таком формате:
Управление питанием
Можно проинструктировать smartd, как обращаться с дисками в режиме пониженного энергопотребления. Обычно в ответ на команды SMART, выдаваемые smartd, пластины диска раскручиваются. Поэтому если эта опция не используется, то диск, находящийся в режиме пониженного энергопотребления, может быть раскручен и переведён в режим повышенного энергопотребления, если smartd его периодически опрашивает.
Подробнее в smartmontools wiki.
Иногда опция не работает. Вы можете увидеть подобное сообщение в системном журнале:
В качестве альтернативы можно использовать опцию -i
. Она определяет, как часто smartd раскручивает диски для проверки их состояния. По умолчанию это 30 минут. Для изменения создайте и измените файл /etc/default/smartmontools
.
Смотрите smartd(8) для более подробной информации.
Выполнение тестов по расписанию
smartd может запускать самотестирование дисков по расписанию. Следующая конфигурация будет запускать короткий тест каждый день между 2-3 часами ночи и расширенный тест еженедельно по субботам между 3-4 часами утра:
Оповещение об изменении температуры
smartd может отслеживать температуру дисков и предупреждать, если она повышается слишком быстро или достигает верхнего предела. Приведённый ниже пример будет записывать изменение температуры на 4 градуса и более, достижение температуры 35 градусов и отправлять предупреждение при достижении температуры 40:
Полный пример smartd.conf
Объединение всего вышеперечисленного даст следующий пример конфигурации:
- — smartd отслеживает все диски, которые найдёт
- — отслеживание всех атрибутов
- — включение SMART Automatic Offline Testing
- — включение автоматического сохранения атрибутов
- — не проверять диск, если он в режиме пониженного энергопотребления, и подавлять сообщение об этом в журнале, чтобы не вызвать запись на диск
- — выполнение коротких и расширенных тестов по расписанию
-W ...
— отслеживание температуры- — уведомления на почту
Консольные приложения
- skdump — утилита для мониторинга и управления устройствами SMART для мониторинга и отчёта о состоянии жёсткого диска.
- (из пакета ) также предоставляет некоторые показатели состояния диска: в частности, высокие значения в столбце f_await означают, что диск не отвечает быстро на запросы и может выйти из строя.