Мониторинг жестких дисков с помощью SMART

Monitoring Hard Disks with SMART
January 1st, 2004 by Bruce Allen in SysAdmin

Все жесткие диски когда-нибудь умирают, это данность. Легко понять, почему это происходит. Пластины современного жесткого диска делают более ста оборотов в секунду, выдерживая микронную точность позиционирования головки чтения/записи над магнитным слоем. Часто они работают в пыльной, перегретой среде, на перегруженных или плохо сопровождаемых машинах. Также не секрет, что "продвинутые" пользователи позволяют себе достаточно вольно относится к тревожным симптомам, свойственным умирающим дискам. С системой начинают происходить странные вещи. Сообщения об ошибках ядра валятся на консоль, после чего система становится нестабильной или зависает. Часто целые дни проходят в попытках повторить недавно выполненную работу, переустановках оси, восстановлении утерянных данных. Даже если ваши резервные копии делаются часто, крах диска представляет собой маленькую катастрофу.

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

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

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

Сборки smartmontools доступны для Slackware, Debian, SuSE, Mandrake, Gentoo, Conectiva и других дистрибутивов Linux. Текущие проекты Red Hat содержат оснастку UCSC, но smartmontools будут доступны в будущих релизах.

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

Некоторые параметры могут обновляться в процессе работы диска. Другие изменяются только при прохождении так называемых оффлайновых тестов, которые измеряют характеристики операций чтения/записи, временно замедляя скорость вращения диска. Они могут быть запущены только специальными командами. Версия стандарта SFF-8035i в конце 1995 года вошла, по крайне мере частично, в стандарт ATA-3.

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

Для использования этих особенностей современных дисков вы должны знать, как использовать smartmontools в целях проверки состояния устройств путем получения значений внутренних параметров (многие диски поддерживают таблицы значений атрибутов в стиле SFF-8035i), как запрашивать диск о его состоянии в целом, запускать тесты и просматривать журнал ошибок. Данная статья сосредоточена на дисках ATA, информацию о SCSI можно получить на веб-странице проекта.

Для начала введите команду smartctl -a /dev/hda (используя корректное имя своего устройства), от суперпользователя. Если на данном диске SMART недоступна, ваше первое действие - использовать опцию -s для включения доступа к SMART. Вывод должен быть подобен Листингу 1.

Первая часть вывода - информация о модели и версии прошивки, в данном случае это один из IBM/Hitachi GXP-180. Smartmontools имеет собственную базу данных, содержащую типы дисков. Если модель имеется в базе, атрибуты, полученные из таблицы параметров, будут интерпретированы корректно.

Листинг 1. Вывод команды smartctl -i /dev/hda

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


Вторая часть вывода показывает результаты запроса о статусе состояния. Это однострочный рапорт о состоянии здоровья, диск только сообщает, что онлайновый тест прошел.

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

Листинг 2. Вывод команды smartctl -Hc /dev/hda

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.


Третья часть вывода (Листинг 3) показывает содержимое таблицы параметров диска (около 30 из 255 возможных). Помните, что атрибуты больше не часть стандарта ATA. Однако большая часть производителей придерживается его. Например, для данного диска 13-ый параметр (ID #194) показывает внутреннюю температуру.

Листинг 3. Вывод команды smartctl -A /dev/hda

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


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

Каждый атрибут имеет шестибайтовое значение (непреобразованное помечено как RAW_VALUE) и однобайтовое нормализованное значение (VALUE). В данном случае сырое значение содержит три температуры диска: текущую, минимально пригодную для жизненного цикла, максимально допустимую. Формат сырых данных является вендор-специфичным, то есть не определен никаким стандартом.

Для отслеживания надежности диска прошивка конвертирует сырые данные в нормализованные в диапазоне целых от 1 до 253. Если нормализованное значение меньше или равно пороговому (THRESH), данный атрибут генерирует состояние failed, которое отображается в колонке WHEN_FAILED. Сейчас колонка пуста, так как ни один параметр не вышел за пороговое значение. Также показывается наименьшее возможное нормализованное значение (WORST). Это значение, при котором работа SMART все еще возможна. TYPE параметра характеризует характер ошибок - мы вышли за пределы жизненного цикла или состояние на грани возможности ошибки. Например, скорость вращения диска (ID #3) сейчас характеризуется как предошибочная. Если этот или другие параметры выйдут из допустимого диапазона, наступает состояние возможности возникновения ошибки в следующие 24 часа.

Имена/назначение параметров и их интерпретация не определены никаким стандартом. Разные производители могут использовать атрибут с одинаковым ID для разных целей. Интерпретация специфических атрибутов может быть улучшена с помощью опции -v команды smartctl; за дополнительной информацией обратитесь к руководству man. Например, некоторые диски хранят время работы от включения в минутах в параметре ID 9, опция -v 9,minutes поможет правильно преобразовать сырые данные. Если модель есть в базе данных smartmontools, такие опции будут подставляться автоматически.

Четвертая часть вывода smartctl -a - журнал ошибок диска. Если этот конкретный диск не страдал сбоями, журнал пуст. Обычно, следует беспокоится, если дисковые ошибки в журнале появляются сразу с большими номерами. На веб-странице проекта имеется много примеров журналов ошибок для иллюстрации подходов к анализу. Каждая ошибка сопровождается временной меткой, а также информацией, какая из ATA команд привела к ошибке, также с временной меткой. Это поможет определить, зарегистрирована старая ошибка или новая.

Листинг 4. Вывод команды smartctl -l error /dev/hda

SMART Error Log Version: 1
No Errors Logged


Последняя часть вывода smartctl (Листинг 5) является отчетом о прохождении тестов самодиагностики, запущенных на диске. Вывод показывает результаты двух типов тестов, коротких и длинных. (ATA-6/7 диски также могут иметь тесты транспорта и возможность запускать отдельные тесты, а не их группы.). Короткие и длинные тесты могут быть запущены командами smartctl -t short /dev/hda и smartctl -t long /dev/hda
и не повреждают данных на диске. Как правило, короткие тесты завершаются в пределах минуты, длинные - в пределах часа. Тесты не пересекаются с нормальной деятельностью диска, поэтому команды могут быть запущены на рабочей системе со смонтированным диском.

На нашем вычислительном кластере длинные тесты запускаются каждое воскресное утро. Записи листинга 5 содержат результаты тестов, завершившихся без ошибок; колонка LifeTime показывает время работы диска на момент запуска тестов. Если обнаружена ошибка Logical Block Address (LBA) показывает, где именно на диске она возникла. Колонка Remaining показвает процент выполнения теста на момент возникновения ошибки. Если вы подозреваете, что с диском что-то не так, я рекомендую запустить длинные тесты для обнаружения проблемы.

Листинг 5. Вывод команды smartctl -l selftest /dev/hda

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 может быть использована для запуска оффлайновых тестов. Эти тесты не создают записей в журнале тестов, но формируют выходные данные в формате SFF-8035i и обновляют значения атрибутов в таблице, которые не обновляются в течение нормальной работы диска (колонка UPDATED в листинге 3). Некоторые диски поддерживают автоматическое оффлайновое тестирование, этот режим доступен по команде smartctl -o on. Включение этого режима заставит SMART тестировать диск каждые несколько часов.

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

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

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

Листинг 6. Конфигурационный файл smartd

# /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 - автоматическое сохранение значений атрибутов. После ключа -m указывается адрес для сообщений об ошибках. Ключ -a требует просмотра всех атрибутов SMART для данного диска. В этой конфигурации журналы монитора все время пополняются нормализованными значениями атрибутов. Опции, подобные -I 194 заставляют игнорировать изменения значения атрибута ID 194, поскольку температура диска меняется часто и эти данные не требуют частой проверки.

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

Дополнительную информацию можно найти в справке man. Краткую справку можно вывести по команде smartd -D или smartd -h. С помощью команды smartd -M можно послать тестовое сообщение с целью определения, будут ли доставляться предупреждения корректным образом по почте. Другие опции могут вносить дополнительную функциональность, например, можно запросить данные SMART в сыром формате.

Что нужно сделать, если появились сообщения о проблемах? Что если некоторые параметры вышли из нормы или статус здоровья диска получен в виде NOT OK? Обеспечьте миграцию данных на другую машину незамедлительно. Второе действие - запустите тесты и смотрите, связано ли возникновение ошибки с конкретным адресом LBA и повторяется ли регулярно на этом адресе. Если диск имеет сбойный статус состояния и находится на гарантии, производители обычно заменяют такие диски. Также вендор обычно предлагает специализированную программу для проверки диска, например Maxtor's PowerMax или IBM's Drive Fitness Test. Как правило, такая программа способна обойти сбойные блоки путем переразмещения меток на диске (так называемый ремаппинг). Кроме того, такие программы способны генерировать специальный код ошибок, подтверждающий необходимость замены диска производителем.

Эта статья затрагивает лишь базовые сведения о пакете smartmontools. Читайте маны, веб-страницы проекта и пишите в поддержку, если вы нуждаетесь в дополнительной помощи. Помните, smartmontools не могут заставить вас регулярно делать резервные копии ваших данных.

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

http://sourceforge.net/apps/trac/smartmontools/wiki - текущий официальный ресурс smartmontools.







Назад