Мониторинг жёстких дисков при помощи SMART, часть 2






При помощи команды smartctl -l error /dev/hda можно просмотреть протокол ошибок диска. Если ошибки отсутствуют, то, естественно, протокол ошибок будет пустым. Обычно волноваться стоит лишь в том случае, когда количество ошибок в протоколе будет значительным, поскольку часто возникают случайные, незначительные ошибки в работе, которые не представляют особой серьёзности. Если вам уж очень хочется посмотреть, на что похож протокол, содержащий ошибки, вы можете взглянуть на примеры, представленные на веб-странице smartmontools.


Ниже представлен вывод команды smartctl -l selftest /dev/hda, запускающей механизмы самотестирования диска. В примере показаны результаты двух типов тестирования: короткого и длинного (диски стандарта ATA-6/7 могут иметь ещё два других типа встроенных тестов). По отдельности короткий и длинный тесты могут быть запущены командами smartctl -t short /dev/hda и smartctl -t long /dev/hda соответственно. Выполнение этих тестов не затрагивает содержащиеся на диске данные, поэтому эти тесты можно выполнять на работающей системе. Обычно короткие тесты длятся не более минуты-двух, а длинные — около часа. В кластере, который обслуживает автор статьи, длинное самотестирование автоматически запускается по расписанию в воскресенье утром. В примере ниже показан вывод, когда самотестирование прошло без ошибок. В колонке LifeTime отображается время, относительно момента включения питания диска, когда был запущен тест. Если в результате самотестирования была обнаружена ошибка, то в колонке LBA_of_first_error будет отображён логический адрес блока, в котором обнаружена ошибка. Если тест не будет проведён до конца в связи с ошибкой, то в колонке Remaining будет отображено количество процентов, оставшееся до завершения. Если у вас есть подозрения, что что-то не так с вашим диском, автор настоятельно рекомендует запустить длинное самотестирование, которое поможет выявить потенциальные проблемы.

При помощи команды smartctl -t offline можно запустить оффлайн-тестирование. Такие тесты появились ещё со времён стандарта SFF-8035i и обновляют значения тех атрибутов, которые не обновляются в процессе нормальной работы диска (см. столбец UPDATED). Некоторые диски поддерживают автоматическое оффлайн-тестирование, выполняющееся каждые несколько часов после его включения командой smartctl -o on.

SMART предоставляет механизм мониторинга параметров производительности диска. Однако есть существенная проблема, заключающаяся в том, что не существует механизма, с помощью которого можно было бы напрямую уведомлять операционную систему о возникающих проблемах. А поскольку SMART-мониторинг обычно не настраивается по умолчанию, то многие явные проблемы не обнаруживаются на ранних этапах, что зачастую приводит к плачевным последствиям. Конечно же, вы можете регулярно самостоятельно вручную отслеживать состояние дисков при помощи smartctl, однако это довольно нудное и утомительное занятие.

В пакете smartmontools имеется демон smartd, который умеет выполнять всю рутину по регулярной проверке состояния дисков. Этот демон отслеживает SMART-данные дисков и обнаруживает ошибки. smartd может быть сконфигурирован таким образом, чтобы запускать определённые сценарии оболочки, а также отсылать уведомления на e-mail администраторам в случае обнаружения ошибок. По умолчанию, когда smartd запускается, он регистрирует диски, находящиеся в системе и затем опрашивает SMART дисков каждые 30 минут на предмет ошибок в значениях атрибутов, состояний, результатов самотестирования или увеличения количества ATA-ошибок. По умолчанию все найденные ошибки протоколируются в /var/log/messages через syslog.

Управлять настройкой smartd можно при помощи файла конфигурации /etc/smartd.conf. Содержимое этого файла считывается smartd в момент его запуска. Каждая строка содержит директивы, относящиеся к одному диску. Конфигурационные файлы хостов кластера, который обслуживает автор статьи, выглядят так:

В первом поле определяется путь к устройству. Директива -o on включает автоматический запуск оффлайн-тестов, а директива -S on включает функцию автоматического сохранения значений атрибутов. Директива -m совместно с e-mail адресом указывает smartd адрес для отсылки уведомлений о найденных ошибках. Директива -a заставляет smartd наблюдать за всеми доступными SMART-параметрами дисков. В приведённом примере конфигурации smartd будет протоколировать все изменения нормализованных значений атрибутов. Директива -I 194 указывает smartd игнорировать изменения значения атрибута #194, поскольку температура жёсткого диска довольно часто изменяется, а наличие в протоколе кучи сообщений об этом лишь будет мешать.

Обычно smartd запускается при помощи традиционного UNIX-механизма init. Например, в RedHat для запуска и останова smartd используются команды /etc/rc.d/init.d/smartd start и /etc/rc.d/init.d/smartd stop.

Больше информации о работе smartd вы можете получить в его man-странице (man smartd), а краткую информацию по использованию — при помощи команд smartd -D и smartd -h. Например, при помощи опции -M test можно инициировать отправку тестового e-mail сообщения, чтобы убедиться в том, что оно корректно будет доставлено получателю. Различные опции позволяют гибко управлять smartd. Например, можно включить наблюдение за изменением значений raw-атрибутов.

Что делать, если при работе диска стали проявляться проблемы? Что делать, если результаты самотестирования сообщают об ошибке или SMART-статус жизненно-важных параметров диска находится в ошибочном состоянии? Начните с того, что как можно быстрее переместите все важные данные на другую систему. Затем запустите расширенное самотестирование диска и посмотрите, возникают ли ошибки на тех же самых блоках. Если это так, значит с диском творится что-то неладное. Если SMART сообщает вам об ошибках, но диск ещё находится на гарантии, вам должны без проблем его заменить. Если диск не может выполнить самотестирование, можно попробовать поискать специальное ПО, иногда предоставляемое производителями, например, PowerMax от Maxtor или Drive Fitness Test от IBM. Иногда такие программы могут помочь предотвратить потерю данных за счёт блокирования повреждённых блоков. А иногда при помощи них можно получить специальный код, который поможет вам получить замену плохого диска.

В этой статье рассмотрены лишь основы работы со smartmontools. Если вам необходимо больше информации, вы всегда можете обратиться к man-страницам, веб-сайту проекта или же задать вопрос в список рассылки. Не забывайте, что использование smartmontools не избавляет вас от необходимости делать резервные копии данных. SMART не может предотвратить все возможные сбои в работе жёстких дисков, однако часто даёт ключ к тому, что с вашим диском происходит что-то нехорошее, а это, в свою очередь, поможет вам повысить стабильность работы вашей системы.

Разработчики портировали smartmontools на FreeBSD, Darwin и Solaris, а также добавили некоторые расширения, позволяющие, например, наблюдать за дисками, находящимися за RAID-контроллером. Если вы желаете принять участие в разработке, просто напишите об этом в списке рассылки smartmontools. Особенно полезными для разработчиков будут данные о дисках, которых ещё нет в базе данных smartmontools.

По мотивам LinuxJournal.Com