Colobridge WIKI

мониторинг состояния дисков smartd

Применимость: Linux

Слова для поиска: smart, смарт, smartmontools


Как заранее узнать что диск скоро умрет?

Это решение не имеет смысла для виртуальных серверов.

Для таких задач можно использовать утилиты производителя контроллера дисков или универсальное средство - smartmontools

Пакет smartmontools состоит из двух утилит

  • smartctl — просмотр текущих значений S.M.A.R.T., запуск тестов самодиагностики диска вручную;
  • smartd — демон для записи в системный журнал изменений в значениях S.M.A.R.T., уведомления по электронной почте об ошибках, запуска тестов самодиагностики по расписанию

Информация о диске /dev/sda

smartctl -i /dev/sda

Поддержка S.M.A.R.T. может быть отключена, для включения нужна команда

smartctl -s on /dev/sda

Просмотр устройства /dev/sda

smartctl -A /dev/sda

Существует 2 типа атрибутов (колонка TYPE)

  • критичные атрибуты (pre-fail);
  • некритичные атрибуты (old_age);

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

  • Raw Read Error Rate - частота ошибок при чтении данных с диска;
  • Reallocated Sector Count - число операций переназначения секторов;
  • Spin Up Time - время раскрутки пакета дисков из состояния покоя до рабочей скорости;
  • Spin Up Retry Count - число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной;
  • Seek Error Rate - частота ошибок при позиционировании блока головок;

Debian / Ubuntu

apt-get install smartmontools -y --force-yes

/etc/default/smartmontools

enable_smart="/dev/sda /dev/sdb"
start_smartd=yes

/etc/init.d/smartmontools restart

Centos / Fedora Core / RHEL

yum install -y smartmontools

активировать smartd в /etc/smartd.conf

Отредактировать /etc/smartd.conf, закоментировать строку с DEVICESCAN; Для каждого диска добавить строчку, вида:

/dev/sda -a -s (S/../../(1|3|6)/01|L) -m myname@example.com -M diminishing

Значения параметров:

-a - включение большинства возможностей мониторинга: проверка «здоровья» диска, отслеживание изменений всех атрибутов, отслеживание неудачных тестов диагностики;

-s(S/../../(1|3|6)/01|L) - расписание запуска тестов диагностики диска в виде регулярного выражения. В данном случае: в 1 час ночи в понедельник, среду, субботу будет запускаться краткий тест диска;

-m root@example.com - email пользователя, который будет получать сообщения о ошибках дисков. Для функционирования должен быть настроен почтовый сервер;

-M diminishing - периодически повторять отправку письма с сообщениями об ошибке;

/etc/init.d/smartd start

RAID Adaptec создаст массив с именем /dev/sda, но получить от этого устройства данные smart не получится средствами smartmonutils. Однако smartmonutils можно использовать указывая имена дисков вида /dev/sgX . sg0 - это сам контроллер, а вот sg1…sgN - это SAS жесткие диски

Получить список id

megacli -PDlist -a0 | grep '^Device Id:'| awk '{print $3}'

Получить данные смарт по диску с ID=9

smartctl /dev/sda -d megaraid,9 -a

для диска с интерфейсом sata

smartctl /dev/sda -d sat+megaraid,9 -a

пример срипта для получения данных о всех дисках

#!/bin/sh

for arg in `megacli -PDlist -a0 | grep '^Device Id:'| awk '{print $3}'` 
do
smartctl /dev/sda -d sat+megaraid,${arg} -l devstat
#smartctl /dev/sda -d sat+megaraid,${arg} -a
done

Для контроля состояния дисков с помощью демона smartd нужно закомментировать DEVICESCAN в /etc/smartd.conf и добавить:

/dev/sda -d sat+megaraid,0 -a -s L/../../3/02
/dev/sda -d sat+megaraid,1 -a -s L/../../3/03
/dev/sda -d sat+megaraid,2 -a -s L/../../3/04
/dev/sda -d sat+megaraid,3 -a -s L/../../3/05