Многие задают себе вопрос - стоит ли использовать Software RAID на сервере?
Если вам важны ваши данные, их сохранность, тогда ответ однозначно ДА. Почему? Потому что при выходе из строя одного из дисков сервер продолжает работать на втором (зеркальном) диске. А для того чтобы узнать в каком состоянии диски и своевременно быть уведомленным об выходе из строя диска там необходима утилита smartmontools. Установим ее:
Debian, Ubuntu
aptitude install smartmontools
CentOS, Fedora
yum install smartmontools
Из этого пакета используем утилиту smartctl и демона smartd.
Сканируем систему в поисках дисков:
smartctl --scan
Данная команда покажет также тип устройства.
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d scsi # /dev/sdb, SCSI device
Выясняем, поддерживает ли диск SMART:
smartctl -i /dev/sda
Если поддерживает тогда идем дальше.
Выполняем команду
smartctl -s on -o on -S on /dev/sda
-s on: включает поддержку S.M.A.R.T.;
-o on: включает автоматический запуск оффлайн-тестов;
-S on: включает функцию автоматического сохранения значений атрибутов.
=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.
SMART Attribute Autosave Enabled.
SMART Automatic Offline Testing Enabled every four hours.
Аналогично повторяем эту и все последующие команды для каждого диска.
Проверим общее состояние диска, жив ли он вообще
smartctl -H /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
Если команда возвращает не PASSED немедленно замените диск.
Следующая команда покажет примерное время выполнения тестов
smartctl -c /dev/sda
Быстрый тест диска
smartctl -t short /dev/sda
Вывод результата тестов
smartctl -l selftest /dev/sda
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 21472
Complete failure - повод для беспокойства и причина немедленно провести полный тест.
Если в результате тестирования была обнаружена ошибка, то в колонке LBA_of_first_error будет отображён логический адрес блока, в котором обнаружена ошибка. Если тест не будет проведён до конца в связи с ошибкой, то в колонке Remaining будет отображено количество процентов, оставшееся до завершения.
Полный тест диска
smartctl -t long /dev/sda
При помощи команды
smartctl -l error /dev/sda
можно просмотреть протокол ошибок диска. Если ошибки отсутствуют, то, естественно, протокол ошибок будет пустым. Обычно волноваться стоит лишь в том случае, когда количество ошибок в протоколе будет значительным, поскольку часто возникают случайные, незначительные ошибки в работе, которые не представляют особой серьёзности.
При помощи команды
smartctl -t offline /dev/sda
можно запустить оффлайн-тестирование, если вы этого не сделали ранее с помощью опций -o on (см. выше), или же диск не поддерживает автоматическое оффлайн-тестирование.
Далее настроим анализ дисков демоном smartd, редактируя его конфиг:
vi /etc/smartd.conf
Комментируем строку
#DEVICESCAN -H -m root
Добавляем строку(и):
Опции -S on и -o on я описал выше. Директива -a заставляет smartd наблюдать за всеми доступными SMART-параметрами дисков. Директива -I 194 указывает smartd игнорировать изменения значения атрибута #194, поскольку температура жёсткого диска довольно часто изменяется, а наличие в протоколе кучи сообщений об этом лишь будет мешать. -m указывает на необходимость отправки email-уведомлений. -d scsi тип диска, который мы определили сканированием.
Позволяет игнорировать часы наработки, а также изменение температуры в пределах 5 градусов.
И перезапускаем демона:
Для CentOS
service smartd restart
Для Debian
service smartmontools restart
Для получения всей информации о диске:
smartctl --all /dev/sda
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar Blue Serial ATA
Device Model: WDC WD5000AAKX-603CA0
Serial Number: WD-WMAYUU516583
LU WWN Device Id: 5 0014ee 6ad1218ff
Firmware Version: 18.01H18
User Capacity: 500 107 862 016 bytes [500 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: 8
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sat Oct 27 14:46:42 2012 MSK
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
....
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 137 137 021 Pre-fail Always - 4116
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 21
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
9 Power_On_Hours 0x0032 098 098 000 Old_age Always - 1713
10 Spin_Retry_Count 0x0033 100 253 051 Pre-fail Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 19
184 End-to-End_Error 0x0033 100 100 097 Pre-fail Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 069 062 040 Old_age Always - 31 (Min/Max 26/32)
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 15
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 5
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 100 253 000 Old_age Offline - 0
SMART Error Log Version: 1
No Errors Logged
Разберем детально вывод smartctl:
RAW_VALUE - Каждый атрибут имеет raw value 6-ти байтовое значение.
VALUE - одно байтовое значение "нормализованное".
Формат raw data определяется производителем и не описан в стандарте. firmware диска конвертирует raw value в normalized value в диапазоне от 1 до 253. Если это нормализованное значение меньше или равно threshold (THRESH), атрибут считается failed и отображается в столбце WHEN_FAILED.
Минимальное (WORST) нормализованное значение - это минимальное значение которое достигалось с момента включения SMART на диске.
TYPE - существует 2 типа атрибутов:
Критичные атрибуты: (Pre-fail)
Некритичные атрибуты: (Old_age) (величина value отведенная вендором до наработки на отказ (ресурс)).
Если VALUE стало меньше THRESH в случае Pre-fail атрибута - существует большая вероятность, что диск вылетит в ближайшие 24 часа.
Если VALUE стало меньше THRESH в случае Old_age атрибута - существует большая вероятность, что диск вылетит т.к. выработан ресурс. Вот только когда - науке это неизвестно.
Смотрим параметры второго диска:
smartctl -A /dev/sdb
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 056 049 006 Pre-fail Always - 144758668
3 Spin_Up_Time 0x0003 097 096 000 Pre-fail Always - 0
4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 11
5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0
7 Seek_Error_Rate 0x000f 081 060 030 Pre-fail Always - 140845722
9 Power_On_Hours 0x0032 073 073 000 Old_age Always - 24186
10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 136
194 Temperature_Celsius 0x0022 044 063 000 Old_age Always - 44
195 Hardware_ECC_Recovered 0x001a 056 049 000 Old_age Always - 144758668
197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x003e 200 182 000 Old_age Always - 42
200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0
202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
А этот диск уже ресурс подвыработал...
Raw_Read_Error_Rate (частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска) - 049.
Seek_Error_Rate (частота ошибок при позиционировании блока головок.) - 060.
И температура не радует совсем.
Смарт атрибуты:
Каждый атрибут имеет величину - Value.
Value Изменяется в диапазоне от 0 до 255 (задается производителем).
Низкое значение говорит о быстрой деградации диска или о возможном скором сбое. т.е. чем выше значение Value атрибута, тем лучше.
Raw Value - это значение атрибута во внутреннем формате производителя значение малоинформативно, разве что кроме работников сервис-центров.
Threshold - минимальное возможное значение атрибута, при котором гарантируется безотказная работа накопителя.
При значении атрибута VALUE меньше THRESH очень вероятен сбой в работе или полный отказ.
Атрибуты бывают критически важными (Pre-fail) и некритически важными (Old_age).
Выход критически важного параметра за пределы Threshold фактический означает выход диска из строя, выход за пределы допустимых значений некритически важного параметра свидетельствует о наличии проблемы, но диск может сохранять свою работоспособность.
Добавлено спустя 4 минуты 18 секунд:
Критичные атрибуты:
-
Raw Read Error Rate - частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска.
-
Spin Up Time - время раскрутки пакета дисков из состояния покоя до рабочей скорости. При расчете нормализованного значения (Value) практическое время сравнивается с некоторой эталонной величиной, установленной на заводе. Не ухудшающееся не максимальное значение при Spin Up Retry Count Value = max (Raw равном 0) не говорит ни о чем плохом. Отличие времени от эталонного может быть вызвано рядом причин, например просадка по вольтажу блока питания.
-
Spin Up Retry Count - число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной. Ненулевое значение Raw (соответственно не максимальное Value) свидетельствует о проблемах в механической части накопителя.
-
Seek Error Rate - частота ошибок при позиционировании блока головок. Высокое значение Raw свидетельствует о наличии проблем, которыми могут являться повреждение сервометок, чрезмерное термическое расширение дисков, механические проблемы в блоке позиционирования и др. Постоянное высокое значение Value говорит о том, что все хорошо.
-
Reallocated Sector Count - число операций переназначения секторов. SMART в современных дисках способен произвести анализ сектора на стабильность работы "на лету" и в случае признания его сбойным, произвести его переназначение.
Некритичные атрибуты:
-
Start/Stop Count - полное число запусков/остановок шпинделя. Гарантировано мотор диска способен перенести лишь определенное число включений/выключений. Это значение выбирается в качестве Treshold. Первые модели дисков со скоростью вращения 7200 оборотов/мин имели ненадежный двигатель, могли перенести лишь небольшое их число и быстро выходили из строя.
-
Power On Hours - число часов проведенных во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ (MTBF). Обычно величина MTBF огромна, и маловероятно, что этот параметр достигнет критического порога. Но даже в этом случае выход из строя диска совершенно не обязателен.
-
Drive Power Cycle Count - количество полных циклов включения-выключения диска. По этому и предыдущему атрибуту можно оценить, например, сколько использовался диск до покупки.
-
Temperatue - Здесь хранятся показания встроенного термодатчика. Температура имеет огромное влияние на срок службы диска (даже если она находится в допустимых пределах). Вернее имеет влияние не на срок службы диска а на частоту возникновения некоторых типов ошибок, которые влияют на срок службы.
-
Current Pending Sector Count - Число секторов, являющихся кандидатами на замену. Они не были еще определенны как плохие, но считывание их отличается от чтения стабильного сектора, так называемые подозрительные или нестабильные сектора.
-
Uncorrectable Sector Count - число ошибок при обращении к сектору, которые не были скорректированы. Возможными причинами возникновения могут быть сбои механики или порча поверхности.
-
UDMA CRC Error Rate - число ошибок, возникающих при передаче данных по внешнему интерфейсу. Могут быть вызваны некачественными кабелями, нештатными режимами работы.
-
Write Error Rate - показывает частоту ошибок происходящих при записи на диск. Может служить показателем качества поверхности и механики накопителя.
Посылаем уведомления в случае отказа рейда:
vi /etc/mdadm.conf
или
vi /etc/mdadm/mdadm.conf
Добавляем/заменяем:
MAILADDR [email protected]
MAILFROM [email protected]
Тут думаю все понятно.
Далее необходимо перезагрузить монитор:
На Debian,Ubuntu
service mdadm restart
На CentOS,Fedora
service mdmonitor restart
Проверим состояние всех RAID-массивов:
cat /proc/mdstat
Проверка целостности программного RAID-массива md0:
echo 'check' >/sys/block/md0/md/sync_action
Пересинхронизация программного RAID-массива md0:
echo 'repair' >/sys/block/md0/md/sync_action
Изменение максимальной скорости синхронизации программного RAID-массива md0:
echo 10000 >/sys/block/md0/md/sync_speed_max
где 10000 - скорость в кбайт/сек.
Ошибки в процессе проверки программного RAID-массива по команде check или repair:
cat /sys/block/md0/md/mismatch_cnt
Аналогично для остальных массивов (md1, md2...).
Скорость синхронизации можно регулировать этими параметрами:
- для всех разделов:
cat /proc/sys/dev/raid/speed_limit_max
cat /proc/sys/dev/raid/speed_limit_min
- для конкретного раздела, в данном случае для md0:
cat /sys/block/md0/md/sync_speed_max
cat /sys/block/md0/md/sync_speed_min
Ссылки:
http://ru.wikipedia.org/wiki/Технология_SMART
http://www.linuxjournal.com/article/6983
http://smartmontools.sourceforge.net/
http://www.3dnews.ru/storage/smart/