SMART [smartmontools]

Аватар пользователя Raven2000

S.M.A.R.T. (англ. Self Monitoring Analysing and Reporting Technology) — технология оценки состояния жёсткого диска встроенной аппаратурой самодиагностики, а также механизм предсказания времени выхода его из строя.
Мне было необходимо контролировать работу 4х SATA дисков на одном из серверов с заблаговременным предупреждением о проблемах. Я воспользовался замечательной утилитой smartmontools.

Содержание:

Установка

# pkg_info |grep smartmontools
smartmontools-5.38_7 S.M.A.R.T. disk monitoring tools
bsd# make search name=smartmontools
Port:   smartmontools-5.38_8
Path:   /usr/ports/sysutils/smartmontools
Info:   S.M.A.R.T. disk monitoring tools
Maint:  marck@FreeBSD.org
B-deps: gettext-0.17_1 gmake-3.81_3 libiconv-1.13.1
R-deps:
WWW:    _http://smartmontools.sourceforge.net
 
# 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 drive
        /usr/local/sbin/smartctl -a /dev/da0            for first SCSI 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
===> Installing rc.d startup script(s)
===>   Compressing manual pages for smartmontools-5.38_8
===>   Registering installation for smartmontools-5.38_8
===>  Cleaning for smartmontools-5.38_8

Диагностика SMART

Сначала вы убедитесь включен ли у вас SMART в BIOS и существует ли поддержка этой технологии у нужного жесткого диска. Возьмем для примера мой жеский диск ad4. У вас наименование может быть другим смотрите свой dmesg -a.

# atacontrol cap ad4
 
Protocol              SATA revision 2.x
device model          SAMSUNG HD120IJ
serial number         S0AEJ1OA103537
firmware revision     ZL100-33
cylinders             16383
heads                 16
sectors/track         63
lba supported         234441648 sectors
lba48 supported       234441648 sectors
dma supported
overlap not supported
 
Feature                      Support  Enable    Value           Vendor
write cache                    yes      yes
read ahead                     yes      yes
Native Command Queuing (NCQ)   yes       -      31/0x1F
Tagged Command Queuing (TCQ)   no       no      31/0x1F
SMART                          yes      yes
microcode download             yes      yes
security                       yes      no
power management               yes      yes
advanced power management      no       no      0/0x00
automatic acoustic management  yes      no      0/0x00  254/0xFE


Как мы видим SMART включен. Теперь проверим данные жеского диска этой утилитой.
# /usr/local/sbin/smartctl -a /dev/ad4
smartctl version 5.38 [i386-portbld-freebsd7.2] Copyright (C) 2002-8 Bruce Allen
Home page is _http://smartmontools.sourceforge.net/
 
=== START OF INFORMATION SECTION ===
Model Family:     SAMSUNG SpinPoint P80 SD series
Device Model:     SAMSUNG HD120IJ
Serial Number:    S0AEJ1OA103537
Firmware Version: ZL100-33
User Capacity:    120 034 123 776 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   7
ATA Standard is:  ATA/ATAPI-7 T13 1532D revision 4a
Local Time is:    Wed Oct 14 13:48:08 2009 MSD
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:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                 (2729) seconds.
Offline data collection
capabilities:                    (0x5b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        (  45) minutes.
SCT capabilities:              (0x003f) SCT Status supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.
 
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     0x000f   100   100   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0007   100   100   025    Pre-fail  Always       -       6080
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       197
  5 Reallocated_Sector_Ct   0x0033   253   253   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   253   253   051    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0025   253   253   015    Pre-fail  Offline      -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       24004
 10 Spin_Retry_Count        0x0033   253   253   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0012   253   002   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       177
190 Airflow_Temperature_Cel 0x0022   130   067   000    Old_age   Always       -       36
194 Temperature_Celsius     0x0022   130   067   000    Old_age   Always       -       36
195 Hardware_ECC_Recovered  0x001a   100   100   000    Old_age   Always       -       16044483
196 Reallocated_Event_Count 0x0032   253   253   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   253   253   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   253   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x000a   100   100   000    Old_age   Always       -       0
201 Soft_Read_Error_Rate    0x000a   100   100   000    Old_age   Always       -       0
202 TA_Increase_Count       0x0032   253   253   000    Old_age   Always       -       0
 
SMART Error Log Version: 1
No Errors Logged
 
SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]
 
 
SMART Selective Self-Test Log Data Structure Revision Number (0) should be 1
SMART Selective self-test log data structure revision number 0
Warning: ATA Specification requires selective self-test log data structure revision number = 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Атрибуты SMART

Много информации, но вам необходимо внимательно изучить таблицу Vendor Specific SMART Attributes with Thresholds.
Для разбора, что к чему изучите вот этот документ:

Главным образом на работу жесткого диска влияют несколько важных параметров в которых вы должны сразу определять проблему.

  • Raw Read Error Rate - Частота появления ошибок при чтении данных с диска. Данный параметр показывает частоту появления ошибок при операциях чтения с поверхности диска по вине аппаратной части накопителя.
  • Reallocated Sectors Count - Количество переназначенных секторов. Когда жесткий диск встречает ошибку чтения/записи/верификации он пытается переместить данные из него в специальную резервную область (spare area) и, в случае успеха, помечает сектор как "переназначенный". Также, этот процесс называют remapping, а переназначенный сектор - remap. Благодаря этой возможности, на современных жестких дисках очень редко видны [при тестировании поверхности] так называемые bad block. Однако, при большом количестве ремапов, на графике чтения с поверхности будут заметны "провалы" - резкое падение скорости чтения (до 10% и более). Поле raw value содержит общее количество переназначенных секторов.
  • UltraDMA CRC Error Count - Число ошибок, возникающих при передаче данных по внешнему интерфейсу. (Менять шлейф)

Типы атрибутов:

  • Pre-failure (PF). Если атрибут имеет этот тип, то поле threshold атрибута содержит минимально допустимое значение атрибута, ниже которого не гарантируется работоспособность накопителя и резко увеличивается вероятность его выхода из строя.
  • On-line collection (OC). Указывает, что значение данного атрибута обновляется (вычисляется) во время выполнения on-line тестов S.M.A.R.T. или же во время обоих видов тестов (on-line/off-line). В противном случае, значение атрибута обновляется только при выполнении off-line тестов.
  • Performance related (PR). Указывает на то, что значение этого атрибута напрямую зависит от производительности накопителя по отдельным показателям (seek/throughput/etc. performance). Обычно обновляется после выполнения self-test`ов SMART.
  • Error rate (ER). Указывает на то, что значение атрибута отражает относительную частоту ошибок по данному параметру (raw read/write, seek, etc.).
  • Events count (EC). Указывает на то, что атрибут является счетчиком событий.
  • Self-preserve (SP). Указывает на то, что значение атрибута обновляется и сохраняется автоматически (обычно при каждом старте накопителя и при выполнении тестов SMART).

Конфигурационный файл

Приступим к созданию конфигурационного файла:

# cd /usr/local/etc/
# cp smartd.conf.sample smartd.conf
# cat smartd.conf
# cat smartd.conf
Пример файла конфигурации для smartd. См. man smartd.conf.
 
# Домашняя страница: _http://smartmontools.sourceforge.net
 
# $Id: smartd.conf,v 1.45 2006/11/12 23:39:04 dpgilbert Exp $
 
# smartd будет перечитывать конфигурационный файл, если он получает сигнал HUP 
# signal
 
# Файл предоставляет список устройств для мониторинга используемого smartd,
# с одним устройством в каждой строке. Текст после решетки (#) игнорируется,
# и вы можете использовать пробелы и табуляцию для свободного пространства.
# Вы можете использовать '\' для продолжения линии. 
 
# Вы можете определить, какие обычно жесткие дискови есть на компьютере,
# Заглянув в /proc/ide и /proc/scsi. (повеяло линусячиной =) )
 
# Переменная DEVICESCAN заставит игнорировать оставшиеся линий в этом
# конфигурационном файле: и укажет для smartd сканировать все
# ATA и SCSI устройств. DEVICESCAN может следовать любое из
# Для найденных устройств будут применены нижеперечисленные директивы.
# Для большинства пользователей рекомендуется закомментировать DEVICESCAN
# и четко вывести список устройств, которые вы хотели бы контролировать. 
#DEVICESCAN
 
# Альтернативные настройки для игнорирования температуры и включения числа
# часов, проведённых во включенном состоянии записываемых отчетов в syslog. 
#DEVICESCAN -I 194 -I 231 -I 9
 
# Альтернативные настройки отчетов с более полезным значений температуры 
# записываемого в syslog
#DEVICESCAN -R 194 -R 231 -I 9
 
# Альтернативные настройки для отчетов значения изменения
# температуры >= 5 по Цельсию и мин/макс температуры. 
#DEVICESCAN -I 194 -I 231 -I 9 -W 5
 
# Первый (primary) ATA/IDE жесткий диск. Следить за всеми атрибутами, позволяющие
# автоматически онлайново собирать данные, автоматическое автосохранение
# атрибутов, и запуском короткой самодиагностики каждый день с 2-3 утра
# , и полный тест в субботам с 3-4 утра. 
#/dev/hda -a -o on -S on -s (S/../.././02|L/../../6/03)
 
# Мониторинг SMART статуса, ATA журнала ошибок, Self-Test
# (короткой самодиагностики) журнала, а также отслеживать
# изменения всех атрибутов, за исключением атрибута 194 
#/dev/hdb -H -l error -l selftest -t -I 194
 
# Мониторинг всех атрибутов, кроме нормированной температуры (обычно 194),
# но отслеживать изменения температуры >= 4 по Цельсию, отчет температуры
# >= 45 по Цельсию, а изменения в Raw значения Reallocated_Sector_Ct (5).
# И отправлять письмо об отказах SMART или при температуре >= 55 по Цельсию. 
#/dev/hdc -a -I 194 -W 4,45,55 -R 5 -m admin@example.com
 
# Диск ATA может выглядеть как устройства SCSI в операционной системе.
# Если к SCSI ATA перевода (SAT) слой между ОС и устройство, а затем
# Это может быть помечено "-d sat 'опцией. Эта ситуация может
# стать общей с дисками SATA в SAS и FC среды. 
# /dev/sda -a -d sat
 
# Тихий тест. Рапортует лишь в случае, если SMART выдает
# ошибку. И шлёт рапорт на почту.
#/dev/hdc -H -C 0 -U 0 -m admin@example.com
 
# Первых два SCSI диска. Это будет следить за всем, что может smartd
# проверить. Начать расширенный тест по средам с 6-7 вечера и
# воскресенье 1-2.
#/dev/sda -d scsi -s L/../../3/18
#/dev/sdb -d scsi -s L/../../7/01
 
# Мониторинг 4х ATA дисков, подключенных к контроллеру 3Ware 6/7/8000 которая
# использует 3W-XXXX драйвер. Начало длинного теста по воскресеньям с 1-2,
#  2-3, 3-4 и 4-5 часов утра.
#/dev/sdc -d 3ware,0 -a -s L/../../7/01
#/dev/sdc -d 3ware,1 -a -s L/../../7/02
#/dev/sdc -d 3ware,2 -a -s L/../../7/03
#/dev/sdc -d 3ware,3 -a -s L/../../7/04
 
# Мониторинг 4х ATA дисков, подключенных к контроллеру 3Ware 9000, который
# использует 3W-9xxx драйвера (Linux, FreeBSD)
# Начало длинного теста по вторникам с 1-2 и 3-4 утра. 
#/dev/twa0 -d 3ware,0 -a -s L/../../2/01
#/dev/twa0 -d 3ware,1 -a -s L/../../2/03
 
# То же самое для Windows. Опция "-d 3ware,N 'не является необходимым,
# Диск (порт) номер, указанный в имени устройства.
# ПРИМЕЧАНИЕ: В Windows DEVICESCAN работает также для контроллеров 3Ware. 
#/dev/hdc,0 -a -s L/../../2/01
#/dev/hdc,1 -a -s L/../../2/03
 
# Мониторинг 3 ATA диски напрямую связано с HighPoint RocketRAID.
# Начало долгого теста по воскресеньям с 1-2, 2-3 и 3-4 утра. 
#/dev/sdd -d hpt,1/1 -a -s L/../../7/01
#/dev/sdd -d hpt,1/2 -a -s L/../../7/02
#/dev/sdd -d hpt,1/3 -a -s L/../../7/03
 
# Мониторинг 2х ATA дисках, подключенных к той же PMPort которые связаны с
# HighPoint RocketRAID. Начало большого теста по вторникам между 1-2 и 3-4 м. 
#/dev/sdd -d hpt,1/4/1 -a -s L/../../2/01
#/dev/sdd -d hpt,1/4/2 -a -s L/../../2/03
 
# Добавляем свои диски
/dev/ad0 -a -m admin@ampul.local -o on -S on -s (S/../.././22|L/../../6/23)
/dev/ad1 -a -m admin@ampul.local -o on -S on -s (S/../.././22|L/../../6/23)
 
# Вот список директив в этом файле конфигурации.
# См. smartd.conf и man для деталей 
#
#   -d TYPE Тип устройства: ata, scsi, marvell, removable, 3ware,N, hpt,L/M/N
#   -T TYPE допустимое отклонение: normal, permissive
#   -o VAL  Включает/выключает автоматические оффлайн тесты (on/off)
#   -S VAL  Включает/выключает автосохранение атрибутов (on/off)
#   -n MODE Не проверять. Один из режимов: never, sleep, standby, idle
#   -H      Мониторить SMART статус, уведомлять только при ошибках.
#   -l TYPE Мониторить SMART логи. Режимы: error, selftest
#   -f      Монитор отказа для любых атрибутов 'Usage'
#   -m ADD  Письмо с варнингами на ADD для -H, -l error, -l selftest, and -f
#   -M TYPE Изменение поведения отсыла е-майлов (см. ман)
#   -s REGE Запустить тест когда дата совпадает с регулярным выражением (см. ман)
#   -p      Сообщать о изменениях в 'Prefailure' атрибутах
#   -u      ообщать о изменениях в 'Usage' атрибутах
#   -t      Эквивалентно -p и -u директивам
#   -r ID   Также сообщать 'RAW' значения атрибутов ID с -p, -u или -t
#   -R ID   Следить за изменениями в атрибуте ID 'Raw' значения -p, -u or -t
#   -i ID   Игнорировать атрибут ID для -f директивы
#   -I ID   Игнорировать атрибут ID для -p, -u или -t директивы
#   -C ID   Рапортовать если счётчик `ждущих` секторов не равен нулю
#   -U ID   Рапортовать если счётчик `некорректируемых` секторов не равен нулю
#   -W D,I,C Monitor Temperature D)ifference, I)nformal limit, C)ritical limit
#   -v N,ST Mодифицировать метку для атрибута N (для нестандартных атрибутов)
#   -a      Дефолт: эквивалентно -H -f -t -l error -l selftest -C 197 -U 198
#   -F TYPE Для ошибок в прошивке. Значения: none, samsung
#   -P TYPE Предустановки для диска: use, ignore, show, showall
#    #      Комментарии: текст после него игнорируется
#    \      Продолжения строки
# Идентификатор атрибута является десятичное целое число 1 <= ID <= 255
# за исключением -C и -U, где ID = 0 выключает их.
# Все биты -d, -m и -M директивы реализуются только для устройств ATA.

Syslog и запуск

Настроим syslog:

# cat /etc/syslog.conf |grep smart
!smartd
*.*                                             /var/log/smartd.log

Создадим лог файл:

# touch /var/log/smartd.log

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

# killall -1 syslogd

Запустим smartmontools:

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

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

# ps -ax | grep smart
  664  ??  I      0:00,02 /usr/local/sbin/smartd -p /var/run/smartd.pid --interval=400
 3790  ??  I      0:00,01 smartd
 9597  p0  S+     0:00,00 grep smart

Включим запуск демона при запуски системы и включением проверки с частотой опроса через 400 секунд:

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

Посмотрим лог файл:

# tail -10 /var/log/smartd.log
Oct 14 14:21:35 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 194 Temperature_Celsius changed from 130 to 124
Oct 14 14:26:35 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 124 to 130
Oct 14 14:26:35 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 194 Temperature_Celsius changed from 124 to 130
Oct 14 14:30:54 bsd smartd[3790]: Device: /dev/ad4, SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 124 to 130
Oct 14 14:30:54 bsd smartd[3790]: Device: /dev/ad4, SMART Usage Attribute: 194 Temperature_Celsius changed from 124 to 130
Oct 14 14:30:54 bsd smartd[3790]: Device: /dev/ad6, SMART Usage Attribute: 194 Temperature_Celsius changed from 107 to 108
Oct 14 14:56:34 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 130 to 124
Oct 14 14:56:34 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 194 Temperature_Celsius changed from 130 to 124
Oct 14 15:01:34 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 124 to 130
Oct 14 15:01:34 bsd smartd[664]: Device: /dev/ad4, SMART Usage Attribute: 194 Temperature_Celsius changed from 124 to 130

Заключение

Ну вот и все. Теперь жеские диски контролируются. И самое главное поменьше вам писем от smartmontools ;).

Ссылки

Дополнительные материалы
Ваша оценка: Нет Средняя: 4.7 (3 голоса)

1)кажись сперва надо # echo

1)кажись сперва надо
# echo 'smartd_enable="YES"' >> /etc/rc.conf
# echo 'smartd_flags="--interval=400"' >> /etc/rc.conf

а потом уже
# /usr/local/etc/rc.d/smartd start

2)и неплохо было бы логи через newsyslog ротировать

3) неплохо расписать что значит
(S/../.././22|L/../../6/23)

RE:1)кажись сперва

1. Монописуально =)
2. В чем будет преимущество?
3. см man smartd.conf потом переведу

Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

ну как бы если писать

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

RE:ну как бы если писать

-s (S/../.././22|L/../../6/23)
значит:
запуск короткой самодиагностики каждый день в 22 вечера
и полный тест в субботам (6) в 23 вечера

Если хочешь разобраться... Так иди и разбирайся!
[ igNix.ru | Технология жизни - технологии будущего ] [ Forum.igNix.ru ]

Последние статьи

Новые комментарии

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer