SMART [smartmontools] во FreeBSD

Posted Ср, 10/14/2009 - 13:38 by Raven2000

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

Мне было необходимо контролировать работу 4х SATA дисков на одном из серверов с заблаговременным предупреждением о проблемах. Я воспользовался замечательной утилитой smartmontools.

Содержание:

Установка

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

Атрибуты SMART

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

Syslog и запуск

Заключение

Ссылки

Установка

# 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.

Для разбора, что к чему изучите вот этот документ:

Атрибуты SMART

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

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 ;).

http://www.ignix.ru/public/smart-smartmontools

Обновлено: 12.03.2015