SMART HDD во FreeBSD

SMART очень полезная вещь, и несмотря на то, что некоторые люди утверждают, что порой HDD вылетают с нормальными показаниями SMART, я предпочитаю мониторить статусы SMART HDD.

Пара слов, что такое SMART.

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

Мониторинг не является заменой резервным копиям! Это важно и нужно понимать.

Ликбез окончен, кому SMART интересен читаем дальше как настроить мониторинг SMART в FreeBSD.

Ставим из портов.

cd /usr/ports/sysutils/smartmontools && make install clean

Опций у меня никаких не запросило.

после установки программа вкратце рассказывает о том, как ее использовать.

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_3
===>   Registering installation for smartmontools-5.38_3
===>  Cleaning for smartmontools-5.38_3

Ну что же, пробуем диагностику нашего HDD. У меня 1 HDD IDE – /dev/ad0,

пишем в консоли

 /usr/local/sbin/smartctl -a /dev/ad0

smartctl version 5.38 [i386-portbld-freebsd7.1] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda ATA IV family
Device Model:     ST340016A
Serial Number:    3HR2J5Q9
Firmware Version: 7.73
User Capacity:    40 019 582 464 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   5
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Apr 20 11:23:08 2009
SMART support is: Available - device has SMART capability.
SMART support is: Disabled

SMART Disabled. Use option -s with argument 'on' to enable it.

Итак, SMART у меня запрещен. Включаем его по подсказке

# /usr/local/sbin/smartctl -s on /dev/ad0
smartctl version 5.38 [i386-portbld-freebsd7.1] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

SMART включился.

пробуем снова получить данные о нашем диске

/usr/local/sbin/smartctl -a /dev/ad0

smartctl version 5.38 [i386-portbld-freebsd7.1] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda ATA IV family
Device Model:     ST340016A
Serial Number:    3HR2J5Q9
Firmware Version: 7.73
User Capacity:    40 019 582 464 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   5
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Apr 20 11:26:31 2009
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:                 ( 422) seconds.
Offline data collection
capabilities:                    (0x1b) 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.
 No 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.
 No General Purpose Logging support.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        (  44) minutes.

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   066   056   034    Pre-fail  Always       -       40186803
 3 Spin_Up_Time            0x0003   085   082   000    Pre-fail  Always       -       0
 4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       653
 5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       15
 7 Seek_Error_Rate         0x000f   079   060   030    Pre-fail  Always       -       89560973
 9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       6676
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       699
194 Temperature_Celsius     0x0022   041   051   000    Old_age   Always       -       41
195 Hardware_ECC_Recovered  0x001a   066   056   000    Old_age   Always       -       40186803
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   200   000    Old_age   Always       -       0
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

SMART Error Log Version: 1
ATA Error Count: 561 (device log contains only the most recent five errors)
 CR = Command Register [HEX]
 FR = Features Register [HEX]
 SC = Sector Count Register [HEX]
 SN = Sector Number Register [HEX]
 CL = Cylinder Low Register [HEX]
 CH = Cylinder High Register [HEX]
 DH = Device/Head Register [HEX]
 DC = Device Command Register [HEX]
 ER = Error register [HEX]
 ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 561 occurred at disk power-on lifetime: 6670 hours (277 days + 22 hours)
 When the command that caused the error occurred, the device was active or idle.

 After command completion occurred, registers were:
 ER ST SC SN CL CH DH
 -- -- -- -- -- -- --
 40 51 00 23 a9 d7 f1  Error: UNC at LBA = 0x01d7a923 = 30910755

 Commands leading to the command that caused the error were:
 CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
 -- -- -- -- -- -- -- --  ----------------  --------------------
 c8 00 08 20 a9 d7 f1 00      01:49:21.927  READ DMA
 c8 00 80 48 aa d7 f1 00      01:49:21.908  READ DMA
 c8 00 08 20 a9 d7 f1 00      01:49:18.465  READ DMA
 c8 00 80 c8 a9 d7 f1 00      01:49:18.449  READ DMA
 c8 00 08 20 a9 d7 f1 00      01:49:14.943  READ DMA

Error 560 occurred at disk power-on lifetime: 6670 hours (277 days + 22 hours)
 When the command that caused the error occurred, the device was active or idle.

 After command completion occurred, registers were:
 ER ST SC SN CL CH DH
 -- -- -- -- -- -- --
 40 51 00 23 a9 d7 f1  Error: UNC at LBA = 0x01d7a923 = 30910755

 Commands leading to the command that caused the error were:
 CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
 -- -- -- -- -- -- -- --  ----------------  --------------------
 c8 00 08 20 a9 d7 f1 00      01:49:18.465  READ DMA
 c8 00 80 c8 a9 d7 f1 00      01:49:18.449  READ DMA
 c8 00 08 20 a9 d7 f1 00      01:49:14.943  READ DMA
 c8 00 80 48 a9 d7 f1 00      01:49:14.928  READ DMA
 c8 00 08 20 a9 d7 f1 00      01:49:11.448  READ DMA

Error 559 occurred at disk power-on lifetime: 6670 hours (277 days + 22 hours)
 When the command that caused the error occurred, the device was active or idle.

 After command completion occurred, registers were:
 ER ST SC SN CL CH DH
 -- -- -- -- -- -- --
 40 51 00 23 a9 d7 f1  Error: UNC at LBA = 0x01d7a923 = 30910755

 Commands leading to the command that caused the error were:
 CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
 -- -- -- -- -- -- -- --  ----------------  --------------------
 c8 00 08 20 a9 d7 f1 00      01:49:14.943  READ DMA
 c8 00 80 48 a9 d7 f1 00      01:49:14.928  READ DMA
 c8 00 08 20 a9 d7 f1 00      01:49:11.448  READ DMA
 c8 00 20 28 a9 d7 f1 00      01:49:11.439  READ DMA
 c8 00 08 18 a9 d7 f1 00      01:49:11.427  READ DMA

Error 558 occurred at disk power-on lifetime: 6670 hours (277 days + 22 hours)
 When the command that caused the error occurred, the device was active or idle.

 After command completion occurred, registers were:
 ER ST SC SN CL CH DH
 -- -- -- -- -- -- --
 40 51 00 23 a9 d7 f1  Error: UNC at LBA = 0x01d7a923 = 30910755

 Commands leading to the command that caused the error were:
 CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
 -- -- -- -- -- -- -- --  ----------------  --------------------
 c8 00 08 20 a9 d7 f1 00      01:49:11.448  READ DMA
 c8 00 20 28 a9 d7 f1 00      01:49:11.439  READ DMA
 c8 00 08 18 a9 d7 f1 00      01:49:11.427  READ DMA
 c8 00 28 20 a9 d7 f1 00      01:49:07.954  READ DMA
 c8 00 08 10 a9 d7 f1 00      01:49:07.939  READ DMA

Error 557 occurred at disk power-on lifetime: 6670 hours (277 days + 22 hours)
 When the command that caused the error occurred, the device was active or idle.

 After command completion occurred, registers were:
 ER ST SC SN CL CH DH
 -- -- -- -- -- -- --
 40 51 00 23 a9 d7 f1  Error: UNC at LBA = 0x01d7a923 = 30910755

 Commands leading to the command that caused the error were:
 CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
 -- -- -- -- -- -- -- --  ----------------  --------------------
 c8 00 28 20 a9 d7 f1 00      01:49:07.954  READ DMA
 c8 00 08 10 a9 d7 f1 00      01:49:07.939  READ DMA
 c8 00 30 18 a9 d7 f1 00      01:49:04.469  READ DMA
 c8 00 08 08 a9 d7 f1 00      01:49:04.457  READ DMA
 c8 00 38 10 a9 d7 f1 00      01:49:00.992  READ DMA

SMART Self-test log structure revision number 1
No self-tests have been logged.  [To run self-tests, use: smartctl -t]

Device does not support Selective Self Tests/Logging

данных существенно больше.

А теперь пишем конфиг файл для удобного автоматического мониторинга.
копируем файл с примером в рабочий конфиг и его будем править в дальнейшем

cp /usr/local/etc/smartd.conf.sample /usr/local/etc/smartd.conf

правим конфиг, я использую редактор ee – вы используйте ваш любимый редактор. Ниже мой конфиг

ee  /usr/local/etc/smartd.conf
# опции для наблюдаемых дисков - внизу, перед описанием опций
# Пример конфиг файла утилиты мониторинга SMART  smartd.  Подробности по команде man #smartd.conf.

# Сайт программы: http://smartmontools.sourceforge.net

# $Id: smartd.conf,v 1.45 2006/11/12 23:39:04 dpgilbert Exp $

# smartd пересчитывает этот конфиг файл при получении сигнала HUP

# В данном файле перечислены устройства, которые мониторятся при помощи smartd
# каждое устройство на своей отдельной строке.
#Символ  (#) игнорируется и используется например для написания комментариев
# так же можно использовать пробелы или tab для разделения Символ  '\' для разбивки длинных #строк.

# Опция  DEVICESCAN позволяет обнаруживать устройства
# ATA и SCSI, и применить к ним  ниже перечисленные опции.
# Большинству пользователей эту опцию лучше ЗАКОММЕНТИРОВАТЬ
# и прописать устройства для мониторинга вручную.
# DEVICESCAN

# Первый ATA/IDE диск.  Наблюдаются все параметры, автоматическое сохранение атрибутов
# и запуск короткого теста самодиагностики каждый день  между  2-3 ночи, и запуск полного #теста в субботу (Saturdays) между 3-4 часами ночи.
#/dev/hda -a -o on -S on -s (S/../.././02|L/../../6/03)

# Наблюдение за статусом SMART, вести лог ошибок ATA, лог самодиагностики, наблюдать за #всеми атрибутами
# кроме параметра 194 (температура)
#/dev/hdb -H -l error -l selftest -t -I 194

# Отследижвать все параметры кроме температуры (194),
# но отслеживать изменения температуры на величину  >= 4 градуса Цельсия,
# Сообщать о температуре  >= 45 градусов Цельсия и изменении значения Reallocated_Sector_Ct #(5). (Очень важный параметр, показывает, сколько на диске переназначенных секторов.
#Исправный  накопитель имеет raw-значение, равное 0. Если вы значение более 50 — явные #проблемы и диск необходимо заменить.
# Отправлять e-mail сообщение на  про сбои или когда температура  >= 55 градусов Цельсия.
#/dev/hdc -a -I 194 -W 4,45,55 -R 5 -m [email protected]

# Очень тихая проверка. Сообщает только статус здоровья SMART. Если есть сбои, то отправить #e-mail по указанному адресу
#/dev/hdc -H -C 0 -U 0 -m [email protected]

#Первые 2  SCSI диска.  Контроль всех параметров SMART, которые может извлечь  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 часами ночью.
# NOTE: starting with the Linux 2.6 kernel series, the /dev/sdX interface
# is DEPRECATED.  Use the /dev/tweN character device interface instead.
# For example /dev/twe0, /dev/twe1, and so on.
#/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

# ниже был еще ряд примеров, см. родной конфиг если нужно /usr/local/etc/smartd.conf все #довольно просто 

# Наблюдение за моими дисками фактически из примера в начале

# IDE диск
# Наблюдаются все параметры, автоматическое сохранение атрибутов
#  и запуск короткого теста самодиагностики каждый день  между  2-3 ночи, и запуск полного
# теста в субботу между 3-4 часами ночи, а так же отправлять уведомление по почте
# так же мониторим  Reallocated_Sector_Ct и сообщаем, если температура 45 градусов Цельсия, #это информационное сообщение, 55 градусов - критическое положение дел

/dev/ad0 -a -I 194 -W 4,45,55 -R 5 -m [email protected] -o on -S on -s (S/../.././02|L/../../6/03)

# В заключение опции для мониторинга, которые можно использовать в этом конфигурационном файле.
# Для подробностей см 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 предупреждений (подробнее в ман)
#   -s REGE Начать самотестирование когда тип/дата соответствуют регулярному выражению  (смотри ман)
#   -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 (смотри ман)
#   -a      по умолчанию: эквивалентно параметрам  -H -f -t -l error -l selftest -C 197 -U 198
#   -F TYPE для ошибок в прошивке. Значение одно из: none, samsung
#   -P TYPE Представление специфических устройств: use, ignore, show, showall
# Значение  ID в интервале  1 <= ID <= 255
# за исключением  -C и -U, где  ID = 0 turns them off.
# Все  -d, -m и -M опции применяются только к ATA дискам
# If the test string DEVICESCAN is the first uncommented text
# then smartd will scan for devices /dev/hd[a-l] and /dev/sd[a-z]
# DEVICESCAN may be followed by any desired Directives.

Теперь настроим логирование

ee /etc/syslog.conf

в этот файл нужно добавить строки

# Мониторинг SMART
local2.*                                        /var/log/smartd.log

Причем по непонятной причине у меня при добавлении этих строк в конец файла ничего не работало :( , так что стоит эти строки поставить в вышеуказанный файлик повыше.

Создаем файл для записи логов

touch /var/log/smartd.log

так же правим

ee /etc/rc.conf

добавив в него строки

# мониторинг SMART
smartd_enable="YES"
smartd_flags="-l local2 --interval=500"

–interval=500 это частота опроса в секундах можно поставить чаще или реже, как хотите

перезапускаем syslog

killall -1 syslogd

запускаем наше наблюдение

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

Проверяем в списке процессов

ps -ax | grep smartd
 4310  ??  I      0:00,01 /usr/local/sbin/smartd -p /var/run/smartd.pid -l local2 --interval=500

все хорошо, наблюдение ведется, поглядим лог

cat /var/log/smartd.log
Apr 20 13:47:36 myserver smartd[1089]: smartd version 5.38 [i386-portbld-freebsd7.1] Copyright (C) 2002-8 Bruce Allen
Apr 20 13:47:36 myserver smartd[1089]: Home page is http://smartmontools.sourceforge.net/
Apr 20 13:47:36 myserver smartd[1089]: Opened configuration file /usr/local/etc/smartd.conf
Apr 20 13:47:36 myserver smartd[1089]: Configuration file /usr/local/etc/smartd.conf parsed.
Apr 20 13:47:36 myserver smartd[1089]: Device: /dev/ad0, opened
Apr 20 13:47:36 myserver smartd[1089]: Device: /dev/ad0, found in smartd database.
Apr 20 13:47:36 myserver smartd[1089]: Device: /dev/ad0, enabled SMART Attribute Autosave.
Apr 20 13:47:36 myserver smartd[1089]: Device: /dev/ad0, enabled SMART Automatic Offline Testing.
Apr 20 13:47:36 myserver smartd[1089]: Device: /dev/ad0, is SMART capable. Adding to "monitor" list.
Apr 20 13:47:36 myserver smartd[1089]: Monitoring 1 ATA and 0 SCSI devices
Apr 20 13:47:36 myserver smartd[1091]: smartd has fork()ed into background mode. New PID=1091.
Apr 20 13:47:36 myserver smartd[1091]: file /var/run/smartd.pid written containing PID 1091

Через некоторое время смотрим лог еще раз
вот например у меня появилась запись

Apr 20 13:52:36 myserver smartd[1091]: Device: /dev/ad0, SMART Usage Attribute: 194 Temperature_Celsius changed from 41 to 42

изменилась температура HDD.

Если будут ошибки, то придет электронная почта на указанный адрес.

Можно сразу и проверить, я например указал в конфиге запись

/dev/ad0 -a -I 194 -W 4,35,40 -R 5 -m [email protected] -o on -S on -s (S/../.././02|L/../../6/03)
т.е. слежение за температурой от 35 до 45 градусов, так как текущая температура диска выше, мы точно должны получить алерт по почте, и перезапустил smartd

/usr/local/etc/rc.d/smartd restart
Stopping smartd.
Starting smartd.

и чуть погодя получил письмо

This email was generated by the smartd daemon running on:

   host name: myserver.hotfreebsd.ru
  DNS domain: hotfreebsd.ru
  NIS domain: 

The following warning/error was logged by the smartd daemon:

Device: /dev/ad0, Temperature 43 Celsius reached critical limit of 40 Celsius (Min/Max 43/43)

For details see host's SYSLOG (default: /var/log/messages).

You can also use the smartctl utility for further investigation.
No additional email messages about this problem will be sent.

Так же для определения что важно, а что нет советую почитать

Атрибуты SMART

По идее температуру лучше не мониторить, если вы работает на этом компьютере, вы итак должны иметь о ней представление, но у меня этот компьютер стоит от меня за несколько сотен километров в помещении, куда люди заходят редко, и мониторинга температуры в том помещении нет. А так я буду знать, что там кондиционер встал :) .

Но опять же – люди порой и не представляют – как жарко приходится их HDD, а ведь чем выше его постоянная температура – тем больше шансов, что он выйдет из строя. Порой установка простого тихого кулера для охлаждения HDD способна творить чудеса.

Здоровья вам и вашим жестким дискам :) .
По материалам : hotfreebsd.ru

Запись опубликована в рубрике *Unix,*Linux. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91