В данной статье расскажу, как контролировать состояние HDD с помощью smartmontools,
FreeBSD:
1) Обновляем порты
2) Устанавливаем:
#cd /usr/ports/sysutils/smartmontools/ && make install clean
Вносим следующие строки в /etc/rc.conf:
smartd_enable="YES"
smartd_flags="-l local2 --interval=500"
Флаг указывает на логирование и интервал опроса.
Настраиваем логирование, для этого ближе к началу /etc/syslog.conf, добавляем следующую строку:
#ee /etc/syslog.conf
local2.* /var/log/smartd.log
Создаем файл лога:
#touch /var/log/smartd.log
Перезапускаем:
#/etc/rc.d/syslogd restart
Настроим ротацию лога, для этого правим /etc/newsyslog.conf:
#ee /etc/newsyslog.conf
/var/log/smartd.log 644 7 100 * JC
/Подробности по newsyslog выходят за рамки данной статьи, возможно напишу материал в будующем.
Теперь переходим непосредственно к конфигурационному файлу smartmontools.
Смотрим дефолтовый файл на предмет примеров и основных параметров:
#less /usr/local/etc/smartd.conf.sample
Подробности смотрим в # man smartd и # man smartd.conf. Ниже приведены ключи и значения:
-d задать тип устройства: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N
-T задать тип допустимых отклонений: normal, permissive
-o VAL включить/выключить автоматические автономные тесты (on/off)
-S VAL включить/выключить атрибуты автосохранения (on/off)
-n MODE Без проверок. MODE может принимать значения: never, sleep, standby, idle
-H Наблюдать за статусом SMART, сообщать о возникших проблемах
-l TYPE Наблюдение за логом SMART. Значения: error, selftest
-f Наблюдение за отказами в любых значениях 'Usage' атрибутов
-m ADD Отправить предупреждение по e-mail для опций -H, -l error, -l selftest, и -f
-M TYPE Изменить способы отправки e-mail предупреждений (man)
-s REGE Начать самотестирование когда тип/дата соответствуют регулярному выражению (man)
-p Сообщать об изменениях в атрибутах 'Prefailure'
-u Сообщать об изменениях в атрибутах 'Usage'
-t Равнозначно опциям -p и -u
-r ID Так же сообщать Raw значение атрибута ID включая -p, -u или -t
-R ID Отслеживать изменения в ID Raw значения включая -p, -u или -t
-i ID Игнорировать значения ID для -f опции
-I ID Игнорировать значения ID для -p, -u или -t опций
-C ID Сообщать о том, что текущий (счетчик ждущих секторов) Pending Sector count не равен 0
-U ID Сообщать если (счетчик неисправленных секторов) Uncorrectable count не равен 0
-W D,I,C Наблюдение за температурой D)ifference , I)nformal limit, C)ritical limit
-v N,ST измененить метку для параметра N (man)
-a по умолчанию: эквивалентно параметрам -H -f -t -l error -l selftest -C 197 -U 198
-F TYPE для ошибок в прошивке. Значение одно из: none, samsung
-P TYPE Представление специфических устройств: use, ignore, show, showall
Использовать дефолтный конфиг считаю лишним, много примеров ради одной или нескольких записей. Поэтому создаем свой конф:
#touch /usr/local/etc/smartd.conf
Смотрим, какие HDD есть в системе, смотреть можно разными способами, например
#fdisk -v
Если в системе собран софтовый RAID gmirror, то мониторим все равно отдельные харды, из которых он состоит! - это думаю понятно.
Посмотреть какие харды в мирроре можно так:
gmirror status
Если рейд фэйковый, то пользуемся утилитой atacontrol
atacontrol status ar0
или
atacontrol list
Не важно как (можно /var/run/dmesg посмотреть), главное увидеть, какие HDD в RAID.
После того, как определили, какие HDD присутствуют в системе указываем их в /usr/local/etc/smartd.conf,
у меня получилось следующая команда:
/dev/ad4 -a -I 194 -W 4,45,55 -R 5 -H -l error -l selftest -m administrator@host.ru -o on -S on -s (S/../.././02|L/../../6/03)
/dev/ad6 -a -I 194 -W 4,45,55 -R 5 -H -l error -l selftest -m administrator@host.ru -o on -S on -s (S/../.././02|L/../../6/03)
Расшифровка ключей -a, -m, -H -l error -l selftest -o on -S on - см. выше.
-s (S/../.././02|L/../../6/03) Запуск короткого теста самодиагностики каждый день между 2-3 ночи, и запуск полного теста в субботу между 3-4 часами ночи.
-I 194 -W 4,45,55 -R 5 Отслеживать все параметры кроме температуры (194). Но отслеживать изменения температуры на величину больше или равно 4 градуса Цельсия, сообщать о температуре больше или равно 45 градусов Цельсия и изменении значения Reallocated_Sector_Ct (Очень важный параметр, показывает, сколько на диске переназначенных секторов. Исправный накопитель имеет raw-значение, равное 0. Если значение более 50 — явные проблемы и диск необходимо заменить.) Отправлять e-mail сообщение, когда температура больше или равна 55 градусов Цельсия.
6) Сохраняем файл и запускаем демон:
#/usr/local/etc/rc.d/smartd start
Смотрим, запустился ли он:
#ps waux | grep smart
root 95728 0,0 0,1 4604 2340 ?? I 11:13 0:00,01 /usr/local/sbin/smartd -p /var/run/smartd.pid -l local2 --interval=500
Проверяем лог:
#tail -f /var/log/smartd.log
Должны быть записи, примерно такие:
Mar 17 11:13:59 Corvus smartd[95726]: Device: /dev/ad6, enabled SMART Attribute Autosave.
Mar 17 11:13:59 host smartd[95726]: Device: /dev/ad6, enabled SMART Automatic Offline Testing.
Mar 17 11:13:59 host smartd[95726]: Device: /dev/ad6, is SMART capable. Adding to "monitor" list.
Mar 17 11:13:59 host smartd[95726]: Monitoring 3 ATA and 0 SCSI devices
Mar 17 11:13:59 host smartd[95726]: Device: /dev/ad4, initial Temperature is 31 Celsius (Min/Max ??/31)
Mar 17 11:13:59 host smartd[95726]: Device: /dev/ad6, initial Temperature is 29 Celsius (Min/Max ??/29)
Демон запущен, лог ведется.
Еще пара моментов, FreeBSD присылает ежедневные отчеты состояния на почту, чтобы добавить сообщения о SMART HDD, нужно прописать в /etc/periodic.conf (если нет файла, то нужно создать и дать права 444) следующую строку:
daily_status_smart_devices="/dev/ad4 /dev/da6"
Ну и последний момент, речь выше шла о настройке демона, но ни что не мешает просмотреть состояние SMART HDD вручную, на текущий момент, делается это следующей командой:
#smartctl -a /dev/ad4
Если выдает сообщение, что SMART выключен, включаем его
#smartctl -s on /dev/ad4
и повторяем предыдущую команду. Вывод приводить не буду, он слишком большой, следует обратить внимание на строку:
SMART overall-health self-assessment test result: PASSED
которая говорит о том, что тест прошел. Смотрим значения важных атрибутов, сравниваются столбцы VALUE (низкое число, говорит о высокой вероятности выхода из строя) и THRESH (пороговое значение, сравнивается с value).
Описание параметров
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 – Показывает общее количество ошибок, происходящих при записи сектора. Показывает общее число ошибок записи на диск. Может служить показателем качества поверхности и механики накопителя.
Коментувати