Главная | Контакты



Главная > Программы

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

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

Так уж вышло, что диски имеют свойство умирать. Но часто выяснить причину смерти накопителя бывает очень легко. Диски современных накопителей вращаются со скоростью в несколько тысяч оборотов в минуту. При этом расстояние от головки до поверхности диска составляет доли микрона. Часто диски круглосуточно работают в условиях повышенной загрязнённости или при неблагоприятном температурном режиме, в системах с очень высокой нагрузкой или не очень хорошим обслуживанием. Опытные пользователи хорошо знакомы с симптомами умирающего накопителя: система начинает работать нестабильно, зависает, ядро сообщает о каких-то трудно объяснимых ошибках. В большинстве случаев на восстановление утерянных данных может уйти весь день, при условии, конечно, что у вас есть резервные копии. Хотя, даже если у вас и есть копии всех важных данных, внезапный отказ жёсткого диска может показаться вам катастрофой.

В этой статье рассказывается о том, как при помощи утилиты smartctl и сервера smartd наблюдать за состоянием дисков в системе.

SMART (Self-Monitoring, Analysis and Reporting Technology) присутствует во всех современных жёстких дисках. Диски со SMART самостоятельно наблюдают за своей жизнедеятельностью и работоспособностью. Такие диски,в случае возникновения ошибок, сами могут определить, что что-то работает не так. Такая возможность в большинстве случаев поможет предотвратить сценарий <внезапного> отказа жёсткого диска. Практически все реализации SMART позволяют пользователям запускать самотестирование накопителей и просматривать значения параметров производительности и надёжности.

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

Начиная со стандарта ATA-4 введено требование удалить внутреннюю таблицу атрибутов. Вместо неё жёсткий диск должен отвечать на запросы о его состоянии ответами OK или NOT OK. Отрицательный ответ на запрос означает, что микропрограмма жёсткого диска определила, что тот скоро выйдет из строя. В стандарте ATA-5 было добавлено ведение протокола ошибок, а также набор команд для запуска самотестирования диска. Для того, чтобы воспользоваться всеми описанными возможностями, вам нужно знать, как при помощи smartmontools получать значения атрибутов SMART (большинство жёстких дисков имеют обратную совместимость с SFF-8035i), узнавать состояние диска, запускать самотестирование и анализировать протокол его работы (результаты последних 21 теста) и анализировать протокол ATA-ошибок жёсткого диска (информация о пяти последних ошибках).

smartctl

Код:
smartctl -a /dev/sda
В приведённой вехрней части вывода команды smartctl -a приведена информация о модели и прошивке жесткого диска, в этом примере -Hitachi HTS . Smartmontools имеет собственную базу данных типов дисков. Если модель вашего накопителя присутствует в БД, то вы сможете правильно интерпретировать значения атрибутов SMART.
Код:
sudo smartctl -a /dev/sda
Password:
smartctl 5.40 2010-10-16 r3189 [i486-slackware-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Model Family:     Hitachi Travelstar 5K250
Device Model:     Hitachi HTS542525K9SA00
Serial Number:    080601BB3F00WDDZUMAF
Firmware Version: BBFOC3BP
User Capacity:    250*059*350*016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 3f
Local Time is:    Tue Apr 19 00:09:24 2011 MSD
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Далее отображаются поддерживаемые возможности вашего накопителя, а также примерное время выполнения различных вариантов самотестирования.
Код:
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x00) Offline data collection activity
                                        was never started.
                                        Auto Offline Data Collection: Disabled.
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 Offline 
data collection:                 ( 645) seconds.
Offline data collection
capabilities:                    (0x5b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        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:        (   2) minutes.
Extended self-test routine
recommended polling time:        ( 107) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

Ниже отображаются результаты опроса состояния <здоровья> диска. В этом примере показан диск, который успешно прошёл тест. Если в вашем случае первая строка будет содержать результат FAILING - немедленно сделайте резервные копии всех нужных данных!
Показаны значения 19-ти атрибутов SMART (максимум их может быть 255). Имейте ввиду, что атрибуты SMART не являются частью стандарта ATA, хотя многие производители и используют их. Несмотря на то, что SFF-8035i не определяет, как правильно интерпретировать каждый атрибут, многие из них имеют де-факто соответствуют определённым параметрам.

В приводимом примере 14-й атрибут (ID #194) отражает внутреннюю температуру диска.

Каждый Атрибут имеет шестибайтовое значение (RAW_VALUE) и однобайтовое нормализованное значение (VALUE). В нашем примере с параметром температуры мы видим три значения RAW_VALUE: текущую температуру (40), рекомендованную минимальную (15) и рекомендованную максимальную (50). Формат данных RAW_VALUE не определяется никакими стандартами и каждый производитель использует какие-то свои стандарты. Для того, чтобы отслеживать надёжность диска, его прошивка конвертирует raw-значения атрибутов в нормализованные, лежащие в пределах от 1 до 253. Если нормализованное значение меньше или равно пороговому (THRESH), то это сигнализирует об ошибке, что будет отображено в столбце WHEN_FAILED. В приведённом примере эта колонка пуста, поскольку значения всех атрибутов в норме. Также в таблице отображено наименьшее нормализованное значение; оно устанавливается в момент включения в диске SMART.
Столбец TYPE показывает, как нужно трактовать значение атрибута, имеющего ошибочное состояние:
  • Old_age - время жизни устройства достигло предела, определённого производителем;
  • Pre-fail - ожидается выход устройства из строя.
Например, время работы диска (ID #3) является Pre-fail атрибутом. Если такой атрибут будет иметь значение FAIL, то следует ожидать выхода устройства из строя в течение 24 часов.

Код:
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
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   062    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   100   100   040    Pre-fail  Offline      -       0
  3 Spin_Up_Time            0x0007   234   234   033    Pre-fail  Always       -       1
  4 Start_Stop_Count        0x0012   099   099   000    Old_age   Always       -       2105
  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   100   100   040    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0012   082   082   000    Old_age   Always       -       7952
 10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       1844
191 G-Sense_Error_Rate      0x000a   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       67
193 Load_Cycle_Count        0x0012   092   092   000    Old_age   Always       -       83444
194 Temperature_Celsius     0x0002   137   137   000    Old_age   Always       -       40 (Min/Max 15/50)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
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
223 Load_Retry_Count        0x000a   100   100   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]


SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
При помощи команды smartctl -l error /dev/sda можно просмотреть протокол ошибок диска. Если ошибки отсутствуют, то, естественно, протокол ошибок будет пустым. Обычно волноваться стоит лишь в том случае, когда количество ошибок в протоколе будет значительным, поскольку часто возникают случайные, незначительные ошибки в работе, которые не представляют особой серьёзности.

Ниже представлен вывод команды smartctl -l selftest /dev/sda, запускающей механизмы самотестирования диска.

Код:
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         -
  • LifeTime отображается время, относительно момента включения питания диска, когда был запущен тест
  • LBA_of_first_error отображает логический адрес блока, в котором обнаружена ошибка.
  • Remaining отображает количество процентов, оставшееся до завершения.

По отдельности короткий и длинный тесты могут быть запущены командами
  • smartctl -t short /dev/sda быстрое тестирование, занимает около 2 минут
  • smartctl -t long /dev/sda более тщательное тестирование, занимает около 1 часа.

При помощи команды smartctl -t offline можно запустить оффлайн-тестирование.

Демон smartd

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

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

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

Код:
# /etc/smartd.conf config file
/dev/sda -S on -o on -a -I 194 -m ****@****.com
/dev/sdc -S on -o on -a -I 194 -m ****@****.com
В первом поле определяется путь к устройству. Директива -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.

Материал взят с сайта: http://www.inattack.ru/article/monitoring-zhyostkih-diskov-pri-pomoschi/660.html

Главная > Программы