...
...
...

контроль за жесткими дисками с помощью SMART

Один из ваших жестких дисков, возможно, хочет вам сказать, что скоро отойдет в мир иной. Установите ПО, которое позволит вам узнать, когда его следует заменить.

Выход из строя любого из жестких дисков неизбежен. Причины выхода из строя хорошо известны. Рабочие поверхности в современных жестких дисках делают более сотни оборотов в секунду. При этом зазор между головкой и магнитной поверхностью ничтожно мал. Зачастую диски «бегают» 24 часа в сутки, 7 дней в неделю при повышенной температуре окружающей среды. Также нередки ситуации, когда высокая нагрузка на винчестер вызвана недобросовестным администрированием сервера. Опытные администраторы хорошо знакомы с первыми симптомами выхода из строя винчестера. Это загадочные сообщения об ошибках, заполняющие консоль сервера, нестабильная работа системы, зависания. Хуже того, возможна потеря данных, хранящихся на диске. Даже если вы делаете ежедневное резервное копирование, выход из строя винчестера - это маленькая катастрофа.

Многие пользователи и системные администраторы не знают, что такое Self-Monitoring, Analysis and Reporting Technology (SMART), а также то, что эту технологию используют почти все современные ATA и SCSI жесткие диски. Диски, поддерживающие данную технологию, самостоятельно следят за своим «здоровьем» и производительностью. В большинстве случаев диск способен предупредить администратора о том, что что-то не в порядке, и это позволит избежать вышеописанного сценария. Большинство реализаций SMART позволяет пользователям дисков проводить тестирование диска и контролировать ряд параметров, касающихся его надежности и производительности.

По профессии я физик. Моя исследовательская группа использует для распределенных вычислений кластер рабочих станций, включающий около 600 жестких дисков, которые хранят примерно 50 терабайт данных. Я начал интересоваться технологией SMART несколько лет назад, предположив, что она поможет снизить время простоя и повысить надежность работы нашего кластера. В течение года я использовал open-source ПО smartmontools, ставшее продолжением развития пакета UCSC smartsuit.

В этой заметке я объясню, как использовать утилиту smartctl, входящую в пакет smartmontools, а также демон smartd для контроля за состоянием жестких дисков. Этот пакет можно скачать с сайта smartmontools.sourceforge.net. Там же можно найти руководство по его устанвоке. Дополнительная документация может быть найдем в соответствующих manpages:

man smartctl and man smartd

Сборки smartmontools доступны для Slackware, Debian, SuSE, Mandrake, Gentoo, Conectiva и других дистрибутивов Linux. RedHat включает версии smartctl и smartd из пакета UCSC smartsuit, а smartmontools будет включен в будущие релизы.

матчасть

Чтобы понять, как работает smartmontools, будет полезно узнать историю технологии SMART. Оригинальная версия спецификации SMART (SFF-8035i) была написана группой производителей жестких дисков. В ее второй версии (Revision 2, Апрель 1996) диски поддерживали контроль около 30 показателей, характеризующих надежность и скорость работы. В качестве примера можно назвать количество ошибок при чтении и записи. Каждый показатель имел однобайтовое нормализованное значение, лежащее в пределах от 1 до 253 и соответствующий однобайтовый порог. Если значение одного или нескольких показателей становилось меньше либо равно заданному порогу, то можно было констатировать, что диск либо выйдет из строя в ближайшие 24 часа, либо он достиг предельного срока эксплуатации. Значения части показателей обновлялись в процессе работы диска. Значения остальных показателей обновлялись во время офлайнового тестирования, во время которого скорость доступа к данным снижалась. Поэтому такое тестирование не проводилось в произвольное время, а инициировалось специальной командой в часы наименьшей нагрузки на диск. В конце 1995-ого года часть спецификации SFF- 8035i вошла в стандарт ATA-3.

Начиная со стандарта ATA-4, требование к жестким дискам об использовании таблицы показателей было отменено. Вместо этого диски просто возвращали статусы «OK» или «NOT OK» при получении запросов об их состоянии. Отрицательный ответ на запрос означал, что диск может выйти из строя. В стандарте ATA-5 были добавлены ведение лога ошибок и команды для запуска самотестирования диска.

Чтобы использовать все вышеописанные возможности винчестеров, а именно значения показателей о состоянии диска (большинство накопителей совместимы с SFF-8035i ), опрашивать состояние здоровья диска, запускать самотестирование, контролировать лог ошибок, контролировать лог тестирования (включает результаты 21-го самотестирования), вам нужно знать, как пользоваться пакетом smartmontools.

инструментарий

Эта статья описывает использование smartmontools для работы с ATA-накопителями, а дополнительная информация о SCSI-накопителях может быть найдена на веб-странице данного проекта.
Для начала введите под root’ом команду

smartctl -a /dev/hda

Если SMART не включен для данного диска, его необходимо предварительно включить с помощью опции «-s on». Если SMART включен, вы увидите всю информацию о диске:

Device Model: IC35L120AVV207-0
Serial Number: VNVD02G4G3R72G
Firmware Version: V24OA63A
Device is: In smartctl database [for details use: -P show]
ATA Version is: 6
ATA Standard is: ATA/ATAPI-6 T13 1410D revision 3a
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Приведенный фрагмент вывода этой команды содержит системную информацию о накопителе. Затем следует фрагмент, содержащий отчет о состоянии диска.

SMART overall-health self-assessment test result: PASSED
General SMART Values:
Off-line data collection status: (0x82) Offline data collection activity was completed without error.
Auto Off-line Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run.
Total time to complete off-line data collection: (2855) seconds.
Offline data collection capabilities: (0x1b) SMART execute Offline immediate.
Automatic timer ON/OFF support.
Suspend Offline collection upon new command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
No Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
General Purpose Logging supported.
Short self-test routine recommended polling time: ( 1) minutes.
Extended self-test routine recommended polling time: ( 48) minutes.

Если результат теста в первой строке данного фрагмента указан как FAILED, немедленно сделайте резервную копию данных – диск может выйти из строя. Оставшаяся часть приведенного фрагмента содержит информацию о технических возможностях накопителя и примерном времени, необходимом для сокращенного и полного самотестирования.

Третий фрагмент вывода команды «smartctl -a /dev/hda» содержит значения около 30 показателей состояния диска:

Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000b 100 100 060 Pre-fail Always - 0
2 Throughput_Performance 0x0005 155 155 050 Pre-fail Offline - 225
3 Spin_Up_Time 0x0007 097 097 024 Pre-fail Always - 293 (Average 270)
4 Start_Stop_Count 0x0012 100 100 000 Old_age Always - 10
5 Reallocated_Sector_Ct 0x0033 100 100 005 Pre-fail Always - 0
7 Seek_Error_Rate 0x000b 100 100 067 Pre-fail Always - 0
8 Seek_Time_Performance 0x0005 125 125 020 Pre-fail Offline - 36
9 Power_On_Hours 0x0012 100 100 000 Old_age Always - 3548
10 Spin_Retry_Count 0x0013 100 100 060 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 10
192 Power-Off_Retract_Count 0x0032 100 100 050 Old_age Always - 158
193 Load_Cycle_Count 0x0012 100 100 050 Old_age Always - 158
194 Temperature_Celsius 0x0002 189 189 000 Old_age Always - 29 (Lifetime Min/Max 23/33)
196 Reallocated_Event_Count 0x0032 100 100 000 Old_age Always - 0
197 Current_Pending_Sector 0x0022 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0008 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x000a 200 200 000 Old_age Always - 0

Напомню, что хранение значений этих показателей не требуется стандартом ATA, но большинство производителей накопителей поддерживают совместимость с SFF-8035i.

Например, показатель с ID 194 – температура накопителя. Практика показывает, что снижение температуры накопителя на 5°C уменьшает количество ошибок, поэтому одним из способов увеличить надежность диска является его охлаждение специальным кулером.

Каждый показатель имеет 6-байтовое первичное (сырое) значение (RAW-VALUE) и однобайтовое нормализованное. В этом примере первичное значение содержит три цифры: температура в градусах по Цельсию (29), ее минимальное (23) и максимальное (33) за все время работы диска значения. Формат, в котором хранятся первичные значения показателей определяется производителем диска и не является частью какого-либо стандарта. Для оценки надежности диска, его ПО преобразует первичное значение показателя в нормализованное, которое лежит в пределах от 1 до 253. Если нормализованное значение меньше либо равно порогу (THRESH), показатель помечается пометкой FAILED в колонке WHEN_FAILED. В данном примере эта колонка пуста, так как ни один из показателей не ниже заданного для него порога. Самое низкое с момента включения SMART значение показателя можно увидеть в колонке WORST. В колонке TYPE содержится информация о том, что означает неудовлетворительное значение показателя: что диск просто выработал свой ресурс (old_age) или что диск на грани сбоя (pre-fail). Например, если значение показателя disk spin up time (ID #3) неудовлетворительное, вероятен сбой диска в ближайшие 24 часа.

Значения и названия показателей, а также способ преобразования первичных значений в нормализованные не включены в какие-либо стандарты. Различные производители могут использовать одни и те же имена показателей для разных целей. Поэтому существует возможность управлять способом интерпретации различных показателей с помощью опции -v. Например, некоторые диски хранят в показателе 9 время работы диска в минутах. Опция «-v 9,minutes» указывает smartctl на то, что значения этого показателя нужно отображать в минутах. Если модель диска включена в базу smartmontools, то smartctl автоматически будет использовать правильные способы интерпретации значений.

Следующий фрагмент вывода команды «smartctl –a» - это лог ошибок диска. Обычно такие ошибки отсутствуют, поэтому лог пуст. Поводом для беспокойства является появление большого числа ошибок. Чаще всего ошибки, которые появляются здесь время от времени, не являются признаками серьезных проблем. Веб-сайт smartmontools содержит большое число примеров лога ошибок. Там указано общее время работы диска, ATA-команда, которая привела к возникновению ошибки и время ее возникновения с момента включения диска в миллисекундах. Также можно узнать, имела ли место ошибка давно или она совсем свежая.

SMART Error Log Version: 1
No Errors Logged

Последняя, пятая часть вывода «smartctl –a» – это отчет о самотестированиях, которые выполнялись на данном накопителе. Тут изображены 2 варианта самотестирования – сокращенный и полный. Эти самотестирования могут быть инициированы командами

smartctl -t short /dev/hda

и

smartctl -t long /dev/hda

Самотестирование не приводит к порче данных на диске. Сокращенная проверка обычно длится несколько минут, полная – около часа. Тестирование не влияет на работу диска, поэтому инициировать его можно при работающей системе, когда диск смонтирован. На узлах нашего кластера, например, полный вариант проверки выполняется утром в воскресенье по планировщику. Ниже приведены примеры результатов проверок, которые не содержат ошибок. Колонка LifeTime показывает время, начиная с момента включения диска до проведения проверки. Если в ходе проверки выявляются ошибки, то Logical Block Address (LBA) указывает, где именно эта ошибка произошла. Оставшаяся колонка указывает, какая часть теста (в процентах) осталась до его завершения в момент обнаружения ошибки. Если вы подозреваете, что с диском что-то не так, я бы настоятельно рекомендовал выполнить полное самотестирование диска чтобы выявить проблему.

SMART Self-test log, version number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Extended off-line Completed 00% 3525 -
# 2 Extended off-line Completed 00% 3357 -
# 3 Short off-line Completed 00% 3059 -

Команда

smartctl -t offline

позволяет выполнять оффлайновый тесты. Эти тесты не делают записей в логе самотестирования. Они используются для обновления значения тех показателей состояния диска, которые не могут быть обновлены во время его обычной работы. Некоторые накопители поддерживают автоматическое проведение оффлайновых тестов раз в несколько часов. Эту возможность можно включить командой

smartctl -o on

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

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

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

# /etc/smartd.conf config file
/dev/hda -S on -o on -a -I 194 -m sense@phys.uwm.edu
/dev/hdc -S on -o on -a -I 194 -m sense@phys.uwm.edu

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

/etc/rc.d/init.d/smartd start

и

/etc/rc.d/init.d/smartd stop

Более подробная информация о демоне smartd и его файле конфигурации может быть найдена в manpages (man smartd). Короткую справку можно получить с помощью команд

smartd –D

и

smartd –h

Например, директива «-M test» посылает тестовое письмо чтобы удостовериться, что письма с сообщениями об ошибках будут доставлены получателю. Другие директивы позволяют выполнять более тонкую настройку демона, например, мониторинг первичных значений показателей.

если обнаружены проблемы...

Что следует делать, если обнаружены проблемы с диском? Во-первых, необходимо немедленно выполнить резервное копирование всех данных. Во-вторых, нужно повторить проверку и убедиться, появляется ли снова ошибка в том же LBA. Если ошибка повторится, то с диском действительно что-то не так. Если диск еще на гарантии, то его можно заменить у поставщика. Если диск не проходит самотестирование, можно попробовать воспользоваться специальным ПО, поставляемого производителями винчестеров, например Maxtor Power Max или IBM's Drive Fitness Test. Нередко подобные программы могут «отремонтировать» диск, произведя скрытие поврежденных секторов. Часто они сообщают код ошибки, который необходимо сообщить поставщику при замене диска.

заключение

Эта статья включает в себя описание базовых функций smartmontools. Если вы хотите узнать больше, вы можете воспользоваться официальной документацией, либо подписаться на рассылку техподдержки данного пакета. Помните, что пакет smartmontools не дает возможности отказаться от резервного копирования, а только позволяет определить, когда выход из строя диска наиболее вероятен.
Некоторые разработчики портировали smartmontools под FreeBSD, Darwin и Solaris, и добавили расширения, позволяющие контролировать ATA-диски, используемые совместно с RAID-контроллерами. Если вы хотите принять участие в развитии пакета smartmontools, вы можете связаться с
разработчиками через рассылку техподдержки. В данный момент нам наиболее интересна информация, касающаяся интерпретации первичных значений показателей состояния дисков, которые используют различные производители накопителей.

Впервые опубликовано в Linuxjournal.



Bruce Allen профессор физики в Университете Висконсина, Милуоки. Перевод Юрия Левина, yl@tut.by.


© Сетевые решения