Мониторинг/диагностика HDD (SMART) в FreeBSD

Мониторинг/диагностика HDD (SMART) в FreeBSD

Новый сервер — новые задачи! Задался целью мониторить S.M.A.R.T. жестких дисков в FreeBSD.  Для этого будем пользоваться пакетом smartmontools. Конечно же, это не панацея, но поможет вовремя отреагировать на «умирающий» винчестер.

Установка smartmontools

Обновляем порты

portsnap fetch update

Переходим в папку с портами

cd /usr/ports/

Ищем необходимый порт

make search name='smartmontools'

Переходим в папку с портом  smartmontools и собираем

cd /usr/ports/sysutils/smartmontools
make install clean

Сообщение в конце установки

smartmontools has been installed

To check the status of drives, use the following:

        /usr/local/sbin/smartctl -a /dev/ad0    for first ATA/SATA drive
        /usr/local/sbin/smartctl -a /dev/da0    for first SCSI drive
        /usr/local/sbin/smartctl -a /dev/ada0   for first SATA drive

To include drive health information in your daily status reports,
add a line like the following to /etc/periodic.conf:
        daily_status_smart_devices="/dev/ad0 /dev/da0"
substituting the appropriate device names for your SMART-capable disks.

To enable drive monitoring, you can use /usr/local/sbin/smartd.
A sample configuration file has been installed as
/usr/local/etc/smartd.conf.sample
Copy this file to /usr/local/etc/smartd.conf and edit appropriately

To have smartd start at boot
        echo 'smartd_enable="YES"' >> /etc/rc.conf
===>   Compressing manual pages for smartmontools-6.0
===>   Registering installation for smartmontools-6.0
===>  Cleaning for smartmontools-6.0

После установки выполните команду rehash, чтобы FreeBSD перечитала файлы, находящиеся в маршрутах поиска и обнаружила их появление

rehash

Согласно указаний, которые нам дала система в конце установки, проверяем статус жестких дисков

/usr/local/sbin/smartctl -a /dev/ada0

Для примера, я отключил поддержку смарт. Команда включающая её smartctl -s on /dev/ada0

/usr/local/sbin/smartctl -s on /dev/ada0

 Чтобы включить информацию о здоровье дисков в ежедневные отчеты о состоянии, воспользуемся утилитой periodic. Для этого добавим в её конфиг

echo 'daily_status_smart_devices="/dev/ada0"' >> /etc/defaults/periodic.conf

Для нескольких дисков (в моём случае)

echo 'daily_status_smart_devices="/dev/ada0 /dev/ada1 /dev/ada2 /dev/ada3 /dev/ada4"' >> /etc/defaults/periodic.conf

Для автоматического запуска демона при загрузке системы, добавляем соответствующую строку в /etc/rc.conf :

echo 'smartd_enable="YES"' >> /etc/rc.conf

Устанавливаем интервал проверки каждые 400 секунд:

echo 'smartd_flags="--interval=400"' >> /etc/rc.conf

Копируем конфигурационный файл smartd.conf

cp /usr/local/etc/smartd.conf.sample /usr/local/etc/smartd.conf

Содержимое моего конфига

/dev/ada0 -a -m root@xaxatyxa.ru -o on -S on -s (S/../.././02|L/../../7/03)
/dev/ada1 -a -m root@xaxatyxa.ru -o on -S on -s (S/../.././02|L/../../7/03)
/dev/ada2 -a -m root@xaxatyxa.ru -o on -S on -s (S/../.././02|L/../../7/03)
/dev/ada3 -a -m root@xaxatyxa.ru -o on -S on -s (S/../.././02|L/../../7/03)
/dev/ada4 -a -m root@xaxatyxa.ru -o on -S on -s (S/../.././02|L/../../7/03)

описание:

-o on — включает автоматическое off-line тестирование
-S on — включает автозапись атрибутов
-m root@xaxatyxa.ru  — e-mail куда отсылать warning сообщения
-a — мониторить все SMART параметры диска
-s (S/../.././02|L/../../7/03) — короткий тест самодиагностики каждый день с 2-3 утра и полный тест в воскресение с 3-4 утра

настроим syslog для smartmontools

echo '!smartd' >> /etc/syslog.conf
echo '*.*                                             /var/log/smartd.log' >> /etc/syslog.conf

Проверим настройку

cat /etc/syslog.conf | grep smart

cat /etc/syslog.conf | grep smart

Создадим для демона smartd лог файл

touch /var/log/smartd.log

Перезапустим syslog:

killall -1 syslogd

Запустим smartmontools:

/usr/local/etc/rc.d/smartd start

Проверим работу:

ps -ax | grep smart

ps -ax | grep smart

Для вывода SMART информации диска ada0

smartctl -A /dev/ada0

smartctl -A /dev/ada0

, где критичными параметрами являются «Pre-fail» из колонки «TYPE«. Old_age — величина value отведенная вендором до наработки на отказ.

Каждый атрибут имеет величину — «Value«, которая изменяется в диапазоне от 0 до 255 (задается производителем). Низкое значение говорит о быстрой деградации диска или о возможном скором сбое. т.е. чем выше значение Value атрибута, тем лучше.

Raw Value — это значение атрибута во внутреннем формате производителя. Оставим для сервисных центров.

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

Если VALUE стало меньше THRESH — Атрибут считается failed и отображается в столбце WHEN_FAILED. При значении атрибута меньше Threshold очень вероятен сбой в работе или полный отказ.

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

Выход критически важного параметра (Pre-fail) за пределы Threshold фактический означает выход диска из строя, выход за предел допустимых значений не критически важного параметра свидетельствует о наличии проблемы, но диск может сохранять свою работоспособность.

В итоге получаем два правила, определяющие работоспособность HDD

  1. VALUE стало меньше THRESH в Pre-fail  — диск скоро вылетит, осталось 24 часа для замены. Время пошло !
  2. VALUE стало меньше THRESH в Old_age — выработан ресурс.  Рекомендуется замена в ближайшее время !

Описание параметров

Raw_Read_Error_Rate — частота ошибок при чтении данных с диска, от аппаратной части диска
Spin_Up_Time — время раскрутки пакета дисков из состояния покоя до рабочей скорости
Start_Stop_Count — полное число запусков/остановок шпинделя. Гарантировано мотор диска способен перенести лишь определенное число включений/выключений. Это значение выбирается в качестве Treshold.
Reallocated_Sector_Ct — число операций переназначения секторов. SMART в современных дисках способен произвести анализ сектора на стабильность работы «на лету» и в случае признания его сбойным, произвести его переназначение.
Seek_Error_Rate — частота ошибок при позиционировании блока головок. Высокое значение Raw свидетельствует о наличии проблем, которыми могут являться повреждение сервометок, чрезмерное термическое расширение дисков, механические проблемы в блоке позиционирования и др.
Power_On_Hours — число часов проведенных во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ (MTBF).
Spin_Retry_Count — число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной.
Calibration_Retry_Count — счетчик перекалибровки положения головок винта  (тож штука не приятная, проявляется  в виде постукивание при работе)
Power_Cycle_Count — Количество полных циклов запуска/останова жесткого диска.
Power-Off_Retract_Count — Количество повторов автоматической парковки блока магнитных головок в результате выключения питания.
Load_Cycle_Count — Количество циклов перемещения блока магнитных головок в парковочную область.
Temperature_Celsius — Здесь хранятся показания встроенного термодатчика. Температура имеет огромное влияние на срок службы диска (даже если она находится в допустимых пределах).
Reallocated_Event_Count — Число операций переназначения. В поле «raw value» атрибута хранится общее число попыток переноса информации с переназначенных секторов в резервную область. Учитываются как успешные, так и неуспешные попытки.
Current_Pending_Sector — Число секторов, являющихся кандидатами на замену. Они не были еще определенны как плохие, но считывание их отличается от чтения стабильного сектора, так называемые подозрительные или нестабильные сектора.
Offline_Uncorrectableозначает то же самое, что и атрибут Current_Pending_Sector, но отличие в том, что данный атрибут содержит количество секторов-кандидатов, обнаруженных при одном из видов самотестирования диска — оффлайн-тестировании, которое диск запускает в простое в соответствии с параметрами, заданными прошивкой
UDMA_CRC_Error_Count
— число ошибок, возникающих при передаче данных по внешнему интерфейсу.
Multi_Zone_Error_Rate — Показывает общее количество ошибок, происходящих при записи сектора. Показывает общее число ошибок записи на диск. Может служить показателем качества поверхности и механики накопителя.

 

Примеры применения команды smartctl 

1. Узнать температуру жёсткого диска

smartctl -a /dev/ada0 | grep "Temperature"

2. Узнать  у жёсткого диска статус S.M.A.R.T.

smartctl -H /dev/sda

, где

  • PASSED  — все ок, винт живой
  • FAILED —  осталось 24 часа, чтобы спасти данные, время пошло 😉

3. Протестировать жесткий диск

smartctl -t offline /dev/ada0

выдержка из хелпа про варианты тестов

-t TEST, —test=TEST Run test. TEST: offline, short, long, conveyance, force, vendor,N,select,M-N, pending,N, afterselect,[on|off]

После окончания проверки, необходимо снова проверить SMART на наличие ошибок.

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

  1. http://ru.wikipedia.org/wiki/S.M.A.R.T.
  2. https://code.google.com/p/hddguardian/
  3. http://www.hddstatus.com/
  4. http://smartmontools.sourceforge.net/
  5. http://www.ixbt.com/storage/hdd-smart-testing.shtml
  6. http://www.ignix.ru/public/smart-smartmontools
  7. man smartd.conf
  8. http://linux-bash.ru/menudisk/78-smart.html

 

Share

You may also like...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *