1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Мониторинг жёстких дисков при помощи SMART

Тема в разделе "FAQ", создана пользователем ozs, 18 апр 2011.

  1. ozs

    ozs ... Модератор

    Регистрация:
    25 дек 2007
    Сообщения:
    566
    Симпатии:
    390
    Баллы:
    0
    Так уж вышло, что диски имеют свойство умирать. Но часто выяснить причину смерти накопителя бывает очень легко. Диски современных накопителей вращаются со скоростью в несколько тысяч оборотов в минуту. При этом расстояние от головки до поверхности диска составляет доли микрона. Часто диски круглосуточно работают в условиях повышенной загрязнённости или при неблагоприятном температурном режиме, в системах с очень высокой нагрузкой или не очень хорошим обслуживанием. Опытные пользователи хорошо знакомы с симптомами умирающего накопителя: система начинает работать нестабильно, зависает, ядро сообщает о каких-то трудно объяснимых ошибках. В большинстве случаев на восстановление утерянных данных может уйти весь день, при условии, конечно, что у вас есть резервные копии. Хотя, даже если у вас и есть копии всех важных данных, внезапный отказ жёсткого диска может показаться вам катастрофой.

    В этой статье рассказывается о том, как при помощи утилиты smartctl и сервера smartd наблюдать за состоянием дисков в системе.

    SMART (Self-Monitoring, Analysis and Reporting Technology) присутствует во всех современных жёстких дисках. Диски со SMART самостоятельно наблюдают за своей жизнедеятельностью и работоспособностью. Такие диски,в случае возникновения ошибок, сами могут определить, что что-то работает не так. Такая возможность в большинстве случаев поможет предотвратить сценарий «внезапного» отказа жёсткого диска. Практически все реализации SMART позволяют пользователям запускать самотестирование накопителей и просматривать значения параметров производительности и надёжности.

    Smartmontools можно загрузить с сайта проекта или найти в репозитарии своего дистрибутива.
    Чтобы понять принципы работы smartmontools, полезно будет ознакомиться с историей создания и развития SMART. Первая спецификация SMART (SFF-8035i) была разработана группой производителей жёстких дисков. Во второй редакции (апрель 1996-го) диски хранили во внутреннем списке до 30-ти атрибутов, отражавших состояния различных параметров производительности и надёжности, таких как количество ошибок чтения и поиска. Каждый атрибут имеет однобайтовое нормализованное значение в диапазоне от 1 до 253 и соответствующий однобайтовое пороговое значение. Если одно или более нормализованных значений атрибутов меньше или равны соответствующим пороговым, значит, вероятно, в ближайшие 24 часа жёсткий диск выйдет из строя или же истекает срок его службы, заявленный производителем. Значения некоторых атрибутов обновляются в процессе работы диска, а некоторые — лишь в процессе оффлайн-тестов, которые приостанавливают на время операции чтения вывода, и по этой причине запускаются при помощи специальных команд.

    Начиная со стандарта ATA-4 введено требование удалить внутреннюю таблицу атрибутов. Вместо неё жёсткий диск должен отвечать на запросы о его состоянии ответами OK или NOT OK. Отрицательный ответ на запрос означает, что микропрограмма жёсткого диска определила, что тот скоро выйдет из строя. В стандарте ATA-5 было добавлено ведение протокола ошибок, а также набор команд для запуска самотестирования диска. Для того, чтобы воспользоваться всеми описанными возможностями, вам нужно знать, как при помощи smartmontools получать значения атрибутов SMART (большинство жёстких дисков имеют обратную совместимость с SFF-8035i), узнавать состояние диска, запускать самотестирование и анализировать протокол его работы (результаты последних 21 теста) и анализировать протокол ATA-ошибок жёсткого диска (информация о пяти последних ошибках).

    smartctl

    Код:
    smartctl -a /dev/sda
    В приведённой вехрней части вывода команды smartctl -a приведена информация о модели и прошивке жесткого диска, в этом примере —Hitachi HTS . Smartmontools имеет собственную базу данных типов дисков. Если модель вашего накопителя присутствует в БД, то вы сможете правильно интерпретировать значения атрибутов SMART.
    Код:
    sudo smartctl -a /dev/sda
    Password:
    smartctl 5.40 2010-10-16 r3189 [i486-slackware-linux-gnu] (local build)
    Copyright (C) 2002-10 by Bruce Allen, [url]http://smartmontools.sourceforge.net[/url]
    
    === START OF INFORMATION SECTION ===
    Model Family:     Hitachi Travelstar 5K250
    Device Model:     Hitachi HTS542525K9SA00
    Serial Number:    080601BB3F00WDDZUMAF
    Firmware Version: BBFOC3BP
    User Capacity:    250*059*350*016 bytes
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   8
    ATA Standard is:  ATA-8-ACS revision 3f
    Local Time is:    Tue Apr 19 00:09:24 2011 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:  (0x00) Offline data collection activity
                                            was never started.
                                            Auto Offline Data Collection: Disabled.
    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:                 ( 645) 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:        (   2) minutes.
    Extended self-test routine
    recommended polling time:        ( 107) minutes.
    SCT capabilities:              (0x003d) SCT Status supported.
                                            SCT Error Recovery Control supported.
                                            SCT Feature Control supported.
                                            SCT Data Table supported.
    

    Ниже отображаются результаты опроса состояния «здоровья» диска. В этом примере показан диск, который успешно прошёл тест. Если в вашем случае первая строка будет содержать результат FAILING — немедленно сделайте резервные копии всех нужных данных!
    Показаны значения 19-ти атрибутов SMART (максимум их может быть 255). Имейте ввиду, что атрибуты SMART не являются частью стандарта ATA, хотя многие производители и используют их. Несмотря на то, что SFF-8035i не определяет, как правильно интерпретировать каждый атрибут, многие из них имеют де-факто соответствуют определённым параметрам.

    В приводимом примере 14-й атрибут (ID #194) отражает внутреннюю температуру диска.

    Каждый Атрибут имеет шестибайтовое значение (RAW_VALUE) и однобайтовое нормализованное значение (VALUE). В нашем примере с параметром температуры мы видим три значения RAW_VALUE: текущую температуру (40), рекомендованную минимальную (15) и рекомендованную максимальную (50). Формат данных RAW_VALUE не определяется никакими стандартами и каждый производитель использует какие-то свои стандарты. Для того, чтобы отслеживать надёжность диска, его прошивка конвертирует raw-значения атрибутов в нормализованные, лежащие в пределах от 1 до 253. Если нормализованное значение меньше или равно пороговому (THRESH), то это сигнализирует об ошибке, что будет отображено в столбце WHEN_FAILED. В приведённом примере эта колонка пуста, поскольку значения всех атрибутов в норме. Также в таблице отображено наименьшее нормализованное значение; оно устанавливается в момент включения в диске SMART.
    Столбец TYPE показывает, как нужно трактовать значение атрибута, имеющего ошибочное состояние:
    • Old_age — время жизни устройства достигло предела, определённого производителем;
    • Pre-fail — ожидается выход устройства из строя.
    Например, время работы диска (ID #3) является Pre-fail атрибутом. Если такой атрибут будет иметь значение FAIL, то следует ожидать выхода устройства из строя в течение 24 часов.

    Код:
    === START OF READ SMART DATA SECTION ===
    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     0x000b   100   100   062    Pre-fail  Always       -       0
      2 Throughput_Performance  0x0005   100   100   040    Pre-fail  Offline      -       0
      3 Spin_Up_Time            0x0007   234   234   033    Pre-fail  Always       -       1
      4 Start_Stop_Count        0x0012   099   099   000    Old_age   Always       -       2105
      5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0
      7 Seek_Error_Rate         0x000b   100   100   067    Pre-fail  Always       -       0
      8 Seek_Time_Performance   0x0005   100   100   040    Pre-fail  Offline      -       0
      9 Power_On_Hours          0x0012   082   082   000    Old_age   Always       -       7952
     10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail  Always       -       0
     12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       1844
    191 G-Sense_Error_Rate      0x000a   100   100   000    Old_age   Always       -       0
    192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       67
    193 Load_Cycle_Count        0x0012   092   092   000    Old_age   Always       -       83444
    194 Temperature_Celsius     0x0002   137   137   000    Old_age   Always       -       40 (Min/Max 15/50)
    196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       1
    197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
    198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
    199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       0
    223 Load_Retry_Count        0x000a   100   100   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 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.
    
    При помощи команды smartctl -l error /dev/sda можно просмотреть протокол ошибок диска. Если ошибки отсутствуют, то, естественно, протокол ошибок будет пустым. Обычно волноваться стоит лишь в том случае, когда количество ошибок в протоколе будет значительным, поскольку часто возникают случайные, незначительные ошибки в работе, которые не представляют особой серьёзности.

    Ниже представлен вывод команды smartctl -l selftest /dev/sda, запускающей механизмы самотестирования диска.

    Код:
    SMART Self-test log, version number 1
    Num  Test_Description    Status       Remaining  LifeTime(hours)  LBA_of_first_error
    # 1  Extended off-line   Completed          00%      3525         -
    # 2  Extended off-line   Completed          00%      3357         -
    # 3  Short off-line      Completed          00%      3059         -
    • LifeTime отображается время, относительно момента включения питания диска, когда был запущен тест
    • LBA_of_first_error отображает логический адрес блока, в котором обнаружена ошибка.
    • Remaining отображает количество процентов, оставшееся до завершения.

    По отдельности короткий и длинный тесты могут быть запущены командами
    • smartctl -t short /dev/sda быстрое тестирование, занимает около 2 минут
    • smartctl -t long /dev/sda более тщательное тестирование, занимает около 1 часа.

    При помощи команды smartctl -t offline можно запустить оффлайн-тестирование.

    Демон smartd

    Конечно же, вы можете регулярно самостоятельно вручную отслеживать состояние дисков при помощи smartctl, однако это довольно нудное и утомительное занятие.

    В пакете smartmontools имеется демон smartd, который умеет выполнять всю рутину по регулярной проверке состояния дисков. Этот демон отслеживает SMART-данные дисков и обнаруживает ошибки.
    smartd может быть сконфигурирован таким образом, чтобы запускать определённые сценарии оболочки, а также отсылать уведомления на e-mail администраторам в случае обнаружения ошибок. По умолчанию, когда smartd запускается, он регистрирует диски, находящиеся в системе и затем опрашивает SMART дисков каждые 30 минут на предмет ошибок в значениях атрибутов, состояний, результатов самотестирования или увеличения количества ATA-ошибок.
    По умолчанию все найденные ошибки протоколируются в /var/log/messages через syslog.

    Управлять настройкой smartd можно при помощи файла конфигурации /etc/smartd.conf. Содержимое этого файла считывается smartd в момент его запуска. Каждая строка содержит директивы, относящиеся к одному диску. Конфигурационные файлы выглядят так:

    Код:
    # /etc/smartd.conf config file
    /dev/sda -S on -o on -a -I 194 -m ****@****.com
    /dev/sdc -S on -o on -a -I 194 -m ****@****.com
    В первом поле определяется путь к устройству. Директива -o on включает автоматический запуск оффлайн-тестов, а директива -S on включает функцию автоматического сохранения значений атрибутов. Директива -m совместно с e-mail адресом указывает smartd адрес для отсылки уведомлений о найденных ошибках. Директива -a заставляет smartd наблюдать за всеми доступными SMART-параметрами дисков. В приведённом примере конфигурации smartd будет протоколировать все изменения нормализованных значений атрибутов. Директива -I 194 указывает smartd игнорировать изменения значения атрибута #194, поскольку температура жёсткого диска довольно часто изменяется, а наличие в протоколе кучи сообщений об этом лишь будет мешать.

    Обычно smartd запускается при помощи традиционного UNIX-механизма init. Например, в RedHat для запуска и останова smartd используются команды /etc/rc.d/init.d/smartd start и /etc/rc.d/init.d/smartd stop.

    LinuxJournal.Com
     
    Последнее редактирование: 18 апр 2011
  2. ozs

    ozs ... Модератор

    Регистрация:
    25 дек 2007
    Сообщения:
    566
    Симпатии:
    390
    Баллы:
    0
    Критичные параметры
    • 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 - показывает частоту ошибок происходящих при записи на диск. Может служить показателем качества поверхности и механики накопителя.
     
  3. ma5ter

    ma5ter Новичок

    Регистрация:
    4 окт 2011
    Сообщения:
    22
    Симпатии:
    4
    Баллы:
    0
    S.M.A.R.T. для mrtg

    Подняв smartd можно подцепить статистику для mrtg (как поднять mrtg описал в разделе FAQ).
    Для этого создать скрипт smart2mrtg:
    Код:
    #!/usr/bin/perl -w
    
    $myname = $ARGV[0];
    
    @lines = `/usr/sbin/smartctl -A $ARGV[0]`;
    
    for ($i = 1; $i <= 2; $i++) {
    	$value = 0;
    	if (defined $ARGV[$i]) {
    		find: foreach $line(@lines) {
    			if ($line =~ m/^ *${ARGV[$i]} .{83}(\d+).*$/) {
    				$value = (defined $ARGV[$i+2]) ? $1 - $ARGV[$i+2] : $1;
    				last find;
    			}
    		}
    	}
    	print "${value}\n";
    }
    
    $uptime = '--:--';
    utfind: foreach $line(@lines) {
    	if ($line =~ m/^ *9 .{83}(\d+)h\+(\d+)m\+(\d+)s.*$/) {
    		$hours = $1 % 24;
    		$days = int($1 / 24);
    		$uptime = "${days} day(s) ${hours}:$2:$3";
    		last utfind;
    	}
    }
    
    print "${uptime}\n${myname}\n";
    
    а в mrtg.conf добавить нужные мониторы, например:
    Код:
    Target[smarta1]: `/etc/mrtg/smart2mrtg /dev/sda 196 5`
    MaxBytes[smarta1]: 10000
    Title[smarta1]: Smart reallocate errors /dev/sda
    PageTop[smarta1]: <H1>Critical Smart errors /dev/sda</H1> 
    YLegend[smarta1]: Count
    ShortLegend[smarta1]: &nbsp;
    Colours[smarta1]: RED#ff0000,BLACK#000000,RED#ff0000,BLACK#000000
    Legend1[smarta1]: Reallocated Event Count
    Legend2[smarta1]: Reallocated Sectors Count
    LegendI[smarta1]: Reallocated Event Count
    LegendO[smarta1]: Reallocated Sectors Count
    options[smarta1]: nopercent,gauge,noborder, transparent
    
    где параметры, передаваемые скрипту - имя устройства, номер параметра смарт для первого и второго графиков.
     
    1 человеку нравится это.

Поделиться этой страницей