Новый сервер — новые задачи! Задался целью мониторить 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
Создадим для демона smartd лог файл
touch /var/log/smartd.log
Перезапустим syslog:
killall -1 syslogd
Запустим smartmontools:
/usr/local/etc/rc.d/smartd start
Проверим работу:
ps -ax | grep smart
Для вывода SMART информации диска 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
- VALUE стало меньше THRESH в Pre-fail — диск скоро вылетит, осталось 24 часа для замены. Время пошло !
- 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 для вкуривания:
- http://ru.wikipedia.org/wiki/S.M.A.R.T.
- https://code.google.com/p/hddguardian/
- http://www.hddstatus.com/
- http://smartmontools.sourceforge.net/
- http://www.ixbt.com/storage/hdd-smart-testing.shtml
- http://www.ignix.ru/public/smart-smartmontools
- man smartd.conf
- http://linux-bash.ru/menudisk/78-smart.html
Свежие комментарии