Технология S.M.A.R.T. - Self-Monitoring, Analysis and Reporting Technology

Опубликовано: 08.02.2010
Версия текста: 1.0
Предисловие
Развитие технологии S.M.A.R.T.
Атрибуты (attribute)
Автономное сканирование поверхности (off-line read scanning)
Журналы ошибок (SMART error log)
Встроенные функции самоконтроля (self-test)
Источники

Предисловие

Производители жёстких дисков достаточно давно осознали необходимость наличия системы раннего предупреждения о потенциальных проблемах в работе накопителей. Прежде всего это нужно для возможности резервирования информации, хранимой на винчестере. История подобных систем началась в 1992 году, когда IBM стала использовать в своих серверных накопителях технологию Predictive Failure Analysis (FPA). Позже компания Compaq совместно с Seagate, Quantum и Conner создала усовершенствованную технологию IntelliSafe, позволяющую отслеживать большее число параметров HDD. Именно эти наработки в итоге послужили основой для нового стандарта, получившего название S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology).

Суть S.M.A.R.T. технологии заключается в том, что винчестер сам отслеживает состояние своей работоспособности и способен заранее предупредить пользователя о своём предаварийном состоянии. Большинство проблем с винчестерами связаны с механическими сбоями и повреждениями. Однако, как правило, окончательному выходу из строя накопителя предшествуют некоторые косвенные признаки, как то: заметное повышение температуры HDD, посторонние шумы, пощелкивания, проблемы с чтением/записью информации, появление нечитаемых секторов (bad-блоков). Пользователь компьютера, оснащённого S.M.A.R.T. HDD и специальной программой S.M.A.R.T. диагностики, будет заранее знать о возможном предаварийном состоянии HDD и, следовательно, сможет избежать потери данных хранящихся на винчестере.

В настоящее время S.M.A.R.T. технологию поддерживают все производители HDD

S.M.A.R.T. представляет собой набор мини-подпрограмм, которые являются частью микрокода накопителя и определяют поддерживаемые диагностические функции. Наиболее распространённые среди них:

В настоящий момент не существует официальной документации или стандарта на технологию S.M.A.R.T. В связи с этим, производители не публикуют полные характеристики и поддерживаемые функции S.M.A.R.T. в своих накопителях. Обязательный минимум описан в последнем стандарте ATA/ATAPI-6.

Развитие технологии S.M.A.R.T.

История технологии S.M.A.R.T. не так уж и богата подробностями:

В настоящее время производители жёстких дисков готовятся принять к использованию новый вариант технологии S.M.A.R.T. - "1024 S.M.A.R.T.", характерной особенностью которого будет заметно больший размер журналов, повсеместное использование мультисекторных журналов, более точные алгоритмы анализа показаний встроенных в накопитель сенсоров (термодатчики, сенсоры ударов, и т.п.) и многое другое. Вот несколько новых функций:

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

Атрибуты (attribute)

Атрибуты S.M.A.R.T. - особые характеристики, которые используются при анализе состояния и запаса производительности накопителя. Атрибуты выбираются производителем накопителя, основываясь на способности этих атрибутов предсказывать ухудшение рабочих характеристик накопителя или определить его дефектность. Каждый производитель имеет свой характерный набор атрибутов и может свободно вносить изменения в этот набор в соответствии со своими собственными требованиями и без уведомления об этом фирм-продавцов и конечных пользователей.

Значения атрибутов (attribute values)

Значения атрибутов (value) используются для представления относительной надёжности отдельного эксплуатационного или эталонного атрибута. Допустимое значение атрибута лежит в диапазоне от 1 до 255. Высокое значение атрибута говорит о том, что результат анализа данной рабочей характеристики указывает на низкую вероятность ее ухудшения или выхода накопителя из строя. Соответственно, низкое значение атрибута говорит о том, что результат анализа данной рабочей характеристики указывает на высокую вероятность ее ухудшения или выхода накопителя из строя.

Пороговые значения атрибутов

Каждый атрибут имеет собственное пороговое значение (threshold), которое используется для сравнения со значением атрибута (value) и указывает на ухудшение рабочих характеристик или дефектность накопителя. Числовое значение порогового атрибута определяется производителем накопителя через конструкционные особенности накопителя и анализ результатов испытаний на надёжность. Пороговое значение каждого атрибута указывает на нижнюю допустимую границу значения атрибута, вплоть до которой сохраняется положительный статус надёжности.

Пороговые значения устанавливаются в заводских условиях производителем накопителя и, в большинстве случаев, могут быть изменены только после переключения накопителя в технологический (factory mode). Допустимое пороговое значение атрибута может находится в диапазоне от 1 до 255.

Если значение одного или более атрибутов, имеющих тип pre-failure, меньше или равно соответствующего порогового значения, то это свидетельствует о предстоящем ухудшении рабочих характеристик и/или полном выходе накопителя из строя.

Краткое описание основных атрибутов

Данный перечень атрибутов является наиболее полным из доступных на сегодняшний момент в Сети или иных источниках. Назначение атрибутов и способ интерпретации их значений выявлены либо опытным путём, либо получены от служб технической поддержки компаний-производителей накопителей.

Ниже приведена сводная таблица всех известных мне атрибутов (55) и краткое описание к большинству (38) из них.

ID Название атрибута
0 = атрибут не используется
1 Raw Read Error Rate
2 Throughput Performance
3 Spin Up Time
4 Start/Stop Count
5 Reallocated Sector Count
6 Read Channel Margin
7 Seek Error Rate
8 Seek Time Performance
9 Power-On Hours Count
10 Spin Retry Count
11 Recalibration Retries
12 Device Power Cycle Count
13 Soft Read Error Rate
?? Emergency Re-track (Hitachi)
?? ECC On-The-Fly Count (Hitachi)
96 ? (Maxtor)
97 ? (Maxtor)
98 ? (Maxtor)
99 ? (Maxtor)
100 ? (Maxtor)
101 ? (Maxtor)
191 G-Sense Error Rate
192 Power-Off Retract Cycle
193 Load/Unload Cycle Count
194 Temperature
195 ? (Quantum AS, Seagate, Maxtor)
196 Reallocation Events Count
197 Current Pending Sector Count
198 Uncorrectable Sector Count
199 UltraDMA CRC Error Rate
200 Write Error Rate (в WD - MultiZone Error Rate)
201 TA Counter Detected
202 TA Counter Increased
203 ? (Maxtor)
204 ? (Maxtor)
205 ? (Maxtor)
206 ? (Maxtor)
207 ? (Maxtor)
208 ? (Maxtor)
209 ? (Maxtor)
220 Disk Shift
221 G-Sense Error Rate (в Hitachi - Shock Sense Error Rate)
222 Loaded Hours
223 Load/Unload Retry Count
224 Load Friction
225 Load/Unload Cycle Count
226 Load-in Time
227 Torque Amplification Count
228 Power-Off Retract Count
229 ? (IBM DTTA)
230 GMR Head Amplitude
231 Temperature
240 Head Flying Hours (Hitachi)
250 Read Error Retry Rate

Краткое описание известных атрибутов

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

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

Автономное сканирование поверхности (off-line read scanning)

Большинство накопителей обеспечивают поддержку автономного сканирования поверхности, которое является одной из функций подпрограммы автономного сбора данных о состоянии накопителя (off-line data collection). При выполнении этой функции, накопитель выполняет полное сканирование поверхности путём чтения каждого сектора и замещением ненадёжных секторов на запасные сектора из резервной области (spare area) для предотвращения потери пользовательских данных.

Примечание. Если во время выполнения сканирования накопитель получает команду по интерфейсу, то процесс сканирования прерывается и накопитель приступает к обработке поступившей команды. При этом гарантируется максимальное время реагирования на поступившую команду - до 2 секунд.

Журналы ошибок (SMART error log)

В большинстве современных накопителей реализована функция журналирования появляющихся в течении работы накопителя ошибок или иных событий. В основном, накопители предоставляют информацию о пяти последних ошибках. При этом сохраняются последние 5 поступивших в накопитель команд, предшествующих возникновению этой ошибки, и другая необходимая информация. Накопитель может также поддерживать дополнительные журналы. Их структура, размер и назначение устанавливаются фирмой-производителем. При обновлении микропрограммы накопителя, все журналы накопителя очищаются, а общее количество ошибок устанавливается в значение 0.

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

Log Directory

    Тип: Каталог журналов S.M.A.R.T.
    Вид доступа: только чтение (RO)
    Размер: 1 сектор (512 байт)
    Примечание: поддержка мультисекторных журналов

Данный журнал представляет собой своего рода каталог, в котором указаны адреса всех поддерживаемых журналов S.M.A.R.T. и их размер в секторах. Максимальное количество журналов - 255.

Summary Error Log

    Тип: Суммарный журнал ошибок
    Вид доступа: только чтение (RO)
    Размер: 1 сектор (512 байт)
    Примечание: поддерживается только 28-битная адресация секторов (28-bit LBA)

Данный журнал содержит информацию об общем количестве ошибок, зафиксированных накопителем с момента первого включения (или обновления микропрограммы) и подробные записи о последних 5 ошибках. Для каждой из 5 зафиксированных ошибок сохраняются последние 5 поступивших в накопитель команд. В этом журнале сохраняются все ошибки UNC, IDNF, ошибки сервосистемы, записи/чтения и т.д. При этом, для каждой команды сохраняется значения всех регистров, время и текущее состояние накопителя на момент подачи самой команды. Ошибки, вызванные подачей не поддерживаемых команд или командами с ошибочными параметрами не фиксируются в журнале. Если накопитель поддерживает Comprehensive Error Log, то журнал Summary Error Log дублирует последние пять записей из журнала Comprehensive Error Log.

Comprehensive Error Log

    Тип: Комплексный журнал ошибок [SMART Error Logging]
    Вид доступа: только чтение (RO)
    Размер: 1…51 сектор (максимум 26,112 байт)
    Примечание: поддерживается только 28-битная адресация секторов (28-bit LBA)

Данный журнал содержит подробную информацию о общем количестве ошибок, зафиксированных накопителем с момента первого включения (или обновления микропрограммы) и подробные записи о последних ошибках. Максимальное количество сохраняемых ошибок - 255. Для каждой зафиксированной ошибки сохраняются последние 5 поступивших в накопитель команд. В этом журнале сохраняются все ошибки UNC, IDNF, ошибки сервосистемы, записи/чтения и т.д. При этом, для каждой команды сохраняется значения всех регистров, время и текущее состояние накопителя на момент подачи самой команды. Ошибки, вызванные подачей не поддерживаемых команд или командами с ошибочными параметрами не фиксируются в журнале.

Extended Comprehensive Error Log

    Тип: Расширенный комплексный журнал ошибок [SMART Error Logging]
    Вид доступа: только чтение (RO)
    Размер: 1…65,536 секторов (максимум 32 Мб)
    Примечание: поддерживается 28/48-битная адресация секторов

Назначение данного журнала аналогично журналу Comprehensive Error Log и содержит в себе копию его записей, однако этот журнал имеет иную структуру, которая позволяет реализовать поддержку как 28-битной, так и 48-битной адресации секторов. Максимальное количество сохраняемых ошибок - 327 680.

Self-test Log

    Тип: Журнал результатов самоконтроля [SMART self-test]
    Вид доступа: только чтение (RO)
    Размер: 1 сектор (512 байт)
    Примечание: поддерживается только 28-битная адресация секторов (28-bit LBA)

Данный журнал содержит информацию о результатах выполнения команд внутренней самодиагностики накопителя. Журнал может хранить до 21 записи. При превышении этого количества, журнал начинает заполняться заново, перезаписывая 1-ю запись 22-й, 2-ю - 23-ей и так далее. В каждой записи журнала сохраняется регистр с номером теста, код статуса выполнения теста, время на момент запуска/прерывания теста, номер текущей контрольной точки (или точки останова) теста, а также LBA-адрес сектора, на котором произошло прерывание/отмена теста.

Extended Self-test Log

    Тип: Расширенный журнал результатов самоконтроля [SMART self-test]
    Вид доступа: только чтение (RO)
    Размер: 1…65,536 секторов (максимум 32 Мбайт)
    Примечание: поддерживается 28/48-битная адресация секторов

Назначение данного журнала аналогично журналу Self-test Log и содержит в себе копию его записей, однако этот журнал имеет иную структуру, которая позволяет реализовать поддержку как 28-битной, так и 48-битной адресации секторов. Максимальное количество записей - 1 179 648.

Streaming Performance Log

    Тип: Журнал параметров производительности потоков [Streaming]
    Вид доступа: только чтение (RO)
    Размер: 1…65,536 секторов (максимум 32 Мбайт)

Данный журнал содержит информацию о переданных накопителю параметров командами управления режимом Automatic Acoustic Management и Typical Host Interface Sector Time (подробнее - см. ATA/ATAPI-6 rev 1e). В журнале сохраняется набор параметров, по которым производится настройка накопителя и перевод в его в режим, когда все операции чтения/записи возможны только специальными командами и передача данных происходит в виде непрерывного потока, для которого гарантированны и учитываются все временные интервалы (на обработку команды, чтение и передачу данных; минимальные/максимальные задержки, время доступа, позиционирования и т.п.). Подробнее о назначении данного вида журналов можно узнать из описания технологии Audio/Video (AV) Streaming Feature.

Write Stream Error Log

    Тип: Журнал ошибок потоковой записи [Streaming]
    Вид доступа: только чтение (RO)
    Размер: 1 сектор (512 байт)
    Примечание: поддерживается 48-битная адресация секторов

Данный журнал содержит информацию о возникших ошибках записи в период работы накопителя в потоковом режиме (streaming mode). В этом журнале сохраняется общее количество подобных ошибок, номер последней ошибки, предыдущее и текущее значения регистров состояния и ошибки, количество и LBA-номер сектора, на котором данная ошибка была зафиксирована. После чтения данного журнала, накопитель сбрасывает счетчик общего количества ошибок и очищает журнал. Содержимое журнала сохраняется только во время работы и очищается в момент следующего включения/выключения накопителя или при поступлении сигнала аппаратного сброса (hardware reset). Максимальное количество сохраняемых ошибок - 31.

Read Stream Error Log

    Тип: Журнал ошибок потокового чтения [Streaming]
    Вид доступа: только чтение (RO)
    Размер: 1 сектор (512 байт)
    Примечание: поддерживается 48-битная адресация секторов

Данный журнал содержит информацию о возникших ошибках чтения в период работы накопителя в потоковом режиме (streaming mode). В этом журнале сохраняется общее количество подобных ошибок, номер последней ошибки, предыдущее и текущее значения регистров состояния и ошибки; количество и LBA-номер сектора, на котором данная ошибка была зафиксирована. После чтения данного журнала, накопитель сбрасывает счётчик общего количества ошибок и очищает журнал. Содержимое журнала сохраняется только во время работы и очищается в момент следующего включения/выключения накопителя или при поступлении сигнала аппаратного сброса (hardware reset). Максимальное количество сохраняемых ошибок - 31.

Delayed LBA Sector Log

    Тип: Vendor Specified [General Purpose Logging]
    Вид доступа: только чтение (RO)
    Размер: устанавливается производителем (VS)
    Примечание: поддерживается 48-битная адресация секторов

Данный журнал содержит LBA-адреса всех секторов, которые были перемещены со своего нормального физического расположения, а также адреса границ недоступной последовательности секторов. Таким образом ведётся журнал всех дефектных или нестабильных секторов. Максимальный размер журнала устанавливается производителем. Новое физическое расположение, метод и время доступа к замещённым секторам также устанавливается производителем и не документируется. Запись в данный журнал может быть добавлена в любой момент времени, при условии активности (питания) самого накопителя. Для процесса обновления журнала устанавливается наивысший приоритет и выполнение всех других команд приостанавливается. При этом удалить существующую запись из журнала не возможно. Содержимое журнала сохраняется при циклах включения/выключения накопителя и при поступлении сигнала аппаратного сброса (hardware reset).

ECC Uncorrectable Sector Log

    Тип: Журнал неисправимых ошибок ECC [SMART Recovering]
    Вид доступа: только чтение (RO)
    Размер: 1 сектор (512 байт)
    Примечание: поддерживается только 28-битная адресация секторов (28-bit LBA)

Данный журнал содержит список LBA-адресов секторов, на которых была зафиксирована и проигнорирована не корректируемая ошибка ECC при выполнении операции READ CONTINUOUS (см. AV feature). При этом, выполнение процедуры автоматического переназначения сбойного сектора (ADR - Automatic Defects Reassigment) накопителем заблокировано. Журнал может содержать до 126 записей.

Примечание. Данный журнал доступен для чтения только при разрешённой операции READ CONTINUOUS. В противном случае накопитель возвратит код ошибки ERR->ABRT, прервёт выполнение команды или возвратит пустой журнал. После успешного чтения журнала, в самом накопителе он будет очищен.

Host Vendor Specific Log

    Тип: Пользовательские журналы
    Вид доступа: чтение/запись (R/W)
    Размер: максимум 31 журнал по 16 секторов (253,952 байт)
    Примечание: содержание и формат журнала - любое, на усмотрение пользователя

Этот вид журнала может быть использован для хранения произвольных пользовательских данных. Для записи этого журнала используется команда WRITE SMART LOG. Если данный журнал ни разу не был записан, то при чтении накопитель возвратит пустой журнал, заполненный нулями.

Device Vendor Specific Log

    Тип: Технические журналы изготовителя
    Вид доступа: не определён, на усмотрение производителя (VS)
    Размер: максимум 31 журнал по 16 секторов (253,952 байт)
    Примечание: содержание, формат и размеры журнала - на усмотрение производителя

Этот вид журнала предназначен для внутреннего использования фирменными утилитами производителя, для хранения результатов работы встроенных подпрограмм анализа и диагностики состояния накопителя и т.п. Возможность чтения/записи этого вида журнала устанавливается производителем и не не документируется.

Примечание. Новые накопители Seagate (модели Ux и Barracuda ATA) поддерживают и даже реально используют ещё три вида журналов SMART, однако их назначение и описание пока не известны.

Встроенные функции самоконтроля (self-test)

Практически с момента появления стандарта S.M.A.R.T. II, в большинстве накопителей появилась новая функция - внутренняя диагностика и самоконтроль, для углублённого контроля состояния механики накопителя, поверхности дисков и т.п. Для запуска этой функции, в набор команд S.M.A.R.T. была введена новая команда - SMART EXECUTE OFF-LINE IMMEDIATE. Результат работы сохраняется либо в специализированных атрибутах, либо отдельным параметром среди других данных в атрибутах. Если накопитель поддерживает журналы S.M.A.R.T., то результат выполнения тестов сохраняется также в журнале Self-test Log. После выполнения теста, накопитель в обязательном порядке обновляет показания во всех атрибутах и других параметрах. Если во время выполнения внутреннего теста накопитель получит по интерфейсу новую команду, то выполнение теста прерывается и накопитель приступает к обработке поступившей команды.

Методы тестирования

Существует два способа запуска тестов S.M.A.R.T.: автономный (off-line) или монопольный (captive). Результат теста всегда сохраняется накопителем в данных S.M.A.R.T. При автономном запуске накопитель сообщает о успешном завершении команды ДО ее ФАКТИЧЕСКОГО исполнения и только после этого выполняет тест. При этом, по интерфейсу флаг ЗАНЯТО (BSY) не выставляется и накопитель в любой момент готов приступить к выполнению очередной интерфейсной команды, приостанавливая работу теста. Фактически, тест выполняется в фоновом режиме. При запуске теста в монопольном режиме, по интерфейсу выставляется флаг ЗАНЯТО (BSY) и накопитель начинает непосредственное выполнение теста в режиме реального времени. Любая интерфейсная команда во время выполнения этого теста приведёт к его прерыванию и остановке, после чего накопитель приступит к обработке поступившей команды.

Разновидности тестов S.M.A.R.T.

Официально документированы три вида внутренних тестов, однако ещё существует набор так называемых "активных" тестов, функциональные особенности которых различны у разных производителей и для широкой публики не документированы.

Название теста off-line captive
1 Off-line collection +
2 Short Self-test + +
3 Extended Self-test + +
4 Drive Activity test #1…#4 + +

Время тестирования может варьироваться от 1 секунды (Quantum) до 54 минут (Fujitsu MPG3409AT). Поддержка первого теста наиболее вероятна даже в очень старых накопителях 4-5 летней давности. Второй и третий тесты появились относительно недавно, как дань внедрённым сложным технологическим решениям - для полного контроля состояния накопителя пришлось реализовывать более глубокие и точные тесты. Поддержка 4-х "активных" тестов (см. таблицу, п.4) официально не документирована.

Реальный набор выполняемых тестами функций можно рассмотреть на примере тестов, поддерживаемых жёсткими дисками Hitachi:

Функция теста Short Self test Extended Self test Off-line Collection
Raw Read Error Rate Test YES YES YES
Write Test YES YES NO
Servo Test YES YES NO
Partial Read Scanning YES NO NO
Full Read Scanning NO YES YES

Этот перечень тестов не является одинаковым для всех накопителей и приведен лишь в качестве примера.

Источники

Автоматизация магазинов, складов, переучетов