Мониторинг HDD с помощью smartctl


SMART — аббревиатура означает Self Monitoring Analysing and Reporting Technology. На текущий момент поддержка SMART заявлена многими производителями жестких дисков. С помощью этой технологии можно выявить следующие проблемы:

  • Проблемы блока магнитных головок
    Физические повреждения, логические ошибки
    Проблемы привода, системы позиционирования
    Проблемы электронной части (платы)
    Превышение температуры

Установка не тривиальна:

sudo apt-get smartmontools

На выходе получаем 2 приложения: smartctl и smartd.

  • smartctl (Control and Monitor Utility for SMART Disks) — поддерживает ATA, IDE, SATA и SCSI-3 диски.
    smartd — является демоном smartclt, пытаясь включить SMART monitoring на ATA устройствах (smartctl -s on) опрашивая устройства каждые 30 минут (по умолчанию),  при этом логируя ошибки дисков и изменения атрибутов в файл /var/log/syslog. Smartd можно сконфигурировать на отсылку предупреждений по e’mail в случае обнаружении проблемы.

Чтобы понять, есть ли поддержка SMART жестким диском выполняем:

smartctl -i /dev/hda

Если выключен, то Включить SMART, можно так:

smartctl -s on /dev/hda

Для получения полной информации о жестком диске выполняем:

smartctl --all /dev/hda

Получаем:

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda ES
Device Model:     ST3500630NS
Serial Number:    9QG2ML1C
Firmware Version: 3.AEG
User Capacity:    500 107 862 016 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Oct 29 10:42:35 2012 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
MART overall-health self-assessment test result: PASSED

/*часть вывода опущено*/

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   104   093   006    Pre-fail  Always       -       6515114
  3 Spin_Up_Time            0x0003   095   092   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   099   099   020    Old_age   Always       -       1848
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   070   047   030    Pre-fail  Always       -       335760201000
  9 Power_On_Hours          0x0032   079   079   000    Old_age   Always       -       18756
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   098   098   020    Old_age   Always       -       2636
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   050   036   045    Old_age   Always   In_the_past 50 (Lifetime Min/Max 23/51)
194 Temperature_Celsius     0x0022   050   064   000    Old_age   Always       -       50 (0 1 0 0)
195 Hardware_ECC_Recovered  0x001a   067   058   000    Old_age   Always       -       26848298
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       1
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       1
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 Data_Address_Mark_Errs  0x0032   100   253   000    Old_age   Always       -       0

С жестким диском все в порядке, был лишь достигнут температурный максимум, но он не является критичным, для данного HDD.

Детальный вывод smartctl:

RAW_VALUE — Каждый атрибут имеет raw value 6-ти байтовое значение.

THRESH — минимальное возможное значение атрибута, при котором гарантируется безотказная работа накопителя.

VALUE — одно байтовое значение «нормализованное», изменяется в диапазоне от 0 до 255 (задается производителем). Маленькое значение говорит о быстрой деградации диска или о возможном скором сбое. т.е. чем выше значение тем лучше.
Например в случае параметра «Airflow_Temperature_Cel» RAW_VALUE хранит температуру диска (50), а так же минимальную и максимальную температуру (Lifetime Min/Max 23/51), при которой сохраняется работоспособность диска. Firmware диска конвертирует RAW_VALUE в normalized value (VALUE) в диапазоне от 1 до 253. Если нормализованное значение (VALUE) меньше или равно THRESH, Атрибут считается failed и отображается в столбце WHEN_FAILED, как в текущем случае  сбой был по атрибуту Airflow_Temperature_Cel.

WORST — минимальное нормализованное значение, которое достигалось с момента включения SMART на диске.

TYPE — существует 2 типа атрибутов:

  • Pre-fail -критичные атрибуты
  • Old_age — некритичные атрибуты (величина VALUE отведенная производителем до наработки на отказ).

Если VALUE стало меньше THRESH в случае Pre-fail атрибута — существует большая вероятность, что диск вылетит в ближайшие 24 часа.
Если VALUE стало меньше THRESH в случае Old_age атрибута — существует большая вероятность, что диск вылетит т.к. выработан ресурс, но когда это произойдет не известно.

Критичные атрибуты:

  • Raw_Read_Error_Rate — частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска.
  • Spin_Up_Time — время раскрутки пакета дисков из состояния покоя до рабочей скорости. При расчете VALUE значения практическое время сравнивается с некоторой эталонной величиной, установленной на заводе. Не ухудшающееся немаксимальное значение при Spin Up Retry Count Value = max (Raw равном 0) не говорит ни о чем плохом. Отличие времени от эталонного может быть вызвано рядом причин, например просадка по вольтажу блока питания.
  • Spin_Retry_Count — число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной. Ненулевое значение Raw (соответственно немаксимальное Value) свидетельствует о проблемах в механической части накопителя.
  • Seek_Error_Rate — частота ошибок при позиционировании блока головок. Высокое значение Raw свидетельствует о наличии проблем, которыми могут являться повреждение сервометок, чрезмерное термическое расширение дисков, механические проблемы в блоке позиционирования и др. Постоянное высокое значение Value говорит о том, что все хорошо.
  • Reallocated_Sector_Ct — число операций переназначения секторов. SMART в современных дисках способен произвести анализ сектора на стабильность работы «на лету» и в случае признания его сбойным, произвести его переназначение.

Некритичные атрибуты:

  • Start_Stop_Count — полное число запусков/остановов шпинделя. Гарантировано мотор диска способен перенести лишь определенное число включений/выключений. Это значение выбирается в качестве Treshold. Первые модели дисков со скоростью вращения 7200 оборотов/мин имели ненадежный двигатель, могли перенести лишь небольшое их число и быстро выходили из строя.
  • Power_On_Hours — число часов проведенных во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ (MBTF). Обычно величина MBTF огромна, и маловероятно, что этот параметр достигнет критического порога. Но даже в этом случае выход из строя диска совершенно не обязателен.
  • Power_Cycle_Count — количество полных циклов включения-выключения диска. По этому и предыдущему атрибуту можно оценить, например, сколько использовался диск до покупки.
  • Temperature_Celsius — Здесь хранятся показания встроенного термодатчика. Температура имеет огромное влияние на срок службы диска (даже если она находится в допустимых пределах). Вернее имеет влияние не на срок службы диска а на частоту возникновения некоторых типов ошибок, которые влияют на срок службы.
  • Current_Pending_Sector — Число секторов, являющихся кандидатами на замену. Они не были еще определенны как плохие, но считывание их отличается от чтения стабильного сектора, так называемые подозрительные или нестабильные сектора.
  • Offline_Uncorrectable — число ошибок при обращении к сектору, которые не были скорректированы. Возможными причинами возникновения могут быть сбои механики или порча поверхности.
  • UDMA_CRC_Error_Count — число ошибок, возникающих при передаче данных по внешнему интерфейсу. Могут быть вызваны некачественными кабелями, нештатными режимами работы.

Конфигурирование демона smartd:

vi /etc/smartd.conf

По-умолчанию там только одна опция DEVICESCAN, рекомендуется за комментировать и перечислить список устройств, для которых необходим мониторинг:

/dev/sda -S on -o on -a -I 194 -m alert@wandmagic.ru
/dev/sdb -S on -o on -a -I 194 -m alert@wandmagic.ru

Где:

  • первая колонка — устройство,
  • -S включает автозапись атрибутов,
  • -o включает автоматическое off-line тестирование,
  • -a указывает smartd мониторить все SMART параметры диска,
  • -I 194 означает игнорировать атрибут #194, (т.е. температуру), т.к. температура диска часто меняется и нет смысла ее логировать,
  • -m указывает куда warning сообщения отсылать.

запуск демона:

/etc/init.d/smartd start

******************************

В SMART III появилась функция, позволяющая прозрачно для пользователя переназначать BAD сектора.

Работает механизм следующим образом: при неустойчивом чтении сектора, или же ошибки его чтения, SMART заносит его в список нестабильных и увеличит их счетчик (Current_Pending_Sector). Если при повторном обращении сектор будет прочитан без проблем, он будет выброшен из этого списка. Если же нет, то при представившейся возможности — при отсутствии обращений к диску, диск начнет самостоятельную проверку поверхности, в первую очередь подозрительных секторов. Если сектор будет признан сбойным, то он будет переназначен на сектор из резервной поверхности (соответственно RSC увеличиться). Такое фоновое переназначение приводит к тому, что на современных винчестерах сбойные секторы практически никогда не видны при проверке поверхности сервисными программами. В тоже время, при большом числе плохих секторов их переназначение не может происходить до бесконечности. Первый ограничитель очевиден — это объем резервной поверхности.
У современных винчестеров есть два дефект-листа P-list (Primary, заводской) и G-list (Growth, формируется непосредственно во время эксплуатации). И при большом числе переназначений может оказаться так, что в G-list не оказывается места для записи о новом переназначении. Эта ситуация может быть выявлена по высокому показателю переназначенных секторов в SMART.