Self-Monitoring, Analysis and Reporting Technology (S.M.A.R.T.) – технология, позволяющая собирать статистику событий, происходящих во время работы жесткого диска. Также кроме сбора статистических данных в основу закладываются методы оценки этих данных самим устройством.
Учет событий жестко не регламентирован, в связи с чем у разработчиков микропрограмм винчестеров некоторая свобода творчества в плане учета тех или иных событий, а также собственное виденье критериев оценки, на основании которых то или иное событие будет зафиксировано. Также влияние оказывает аппаратная платформа устройства, так как для контроля некоторых параметров необходимо наличие средств, позволяющих осуществлять контроль того или иного события. При всей кажущейся вольности в разработке микропрограмм жестких дисков, в отношении SMART существует набор правил, описываемых в АТА стандарте. В правилах обуславливается набор команд, которые должна обслуживать микропрограмма накопителя и формат возвращаемых данных, которые накопитель должен выдать, обслуживая команды со стороны контроллера.
В АТА стандарте для операций со SMART предусмотрена команда 0xB0, к которой прилагаются субкоманды:
Субкоманда | Назначение |
0хD0 | SMART READ DATA |
0хD1 | SMART READ ATTRIBUTE THRESHOLDS |
0хD4 | SMART EXECUTE OFF-LINE IMMEDIATE |
0хD5 | SMART READ LOG |
0хD6 | SMART WRITE LOG |
0хD8 | SMART ENABLE OPERATIONS |
0хD9 | SMART DISABLE OPERATION |
0хDA | SMART RETURN STATUS |
Различное ПО, контролирующее состояние жестких дисков, использует эти команды для получения отчета SMART, формируемого накопителем.
В качестве примера возьмем накопитель Western Digital WD1001FALS-41Y6A0, которому отправим команду 0xB0 0xD0 (SMART READ DATA) посредством ATA Commander.
Отчет SMART, выдаваемый накопителем, представляет собой 512-байтный блок с данными. Размер записи об одном атрибуте равен 12 байтам, область описания атрибутов начинается со смещения 0x02
Формат записи атрибута | ||
Смещение | Размерность | Назначение |
0х00 | BYTE | номер атрибута |
0х01 | WORD | флаги атрибута |
0х03 | BYTE | текущее нормированное значение атрибута |
0х04 | BYTE | худшее нормированное значение атрибута |
0х05 | FWORD | ненормированное значение (RAW) |
0х0B | BYTE | зарезервировано |
Также при оценке SMART желательно учитывать флаги атрибутов, чтобы в полной мере понимать роль атрибута и критичность его значений, но большинство программ, позволяющих прочитать отчет SMART, не интерпретируют значения флагов.
Назначение битов в флагах атрибутов | |
№ бита | Назначение |
0 bit | если бит установлен, показатель жизненно-важен. |
1 bit | если бит установлен, то значение атрибута обновляет как в нормальном режиме, так и автономном. |
2 bit | если бит установлен, то значение атрибута влияет на производительность. |
3 bit | если бит установлен, значение атрибута является показателем частоты возникновения ошибок. |
4 bit | если бит установлен, то атрибут является счетчиком событий. |
5 bit | если бит установлен то атрибут является SELF PRESERVING |
6-15 bits | зарезервировано |
Для получения пороговых значений атрибутов необходимо выполнить команду 0xB0 0xD1 (SMART READ ATTRIBUTE THRESHOLDS)
Данный отчет SMART представляет собой 512-байтный блок с данными. Размер записи об одном атрибуте равен 12 байтам, область описания атрибутов начинается со смещения 0x02
Формат записи атрибута | ||
Смещение | Размерность | Назначение |
0х00 | BYTE | номер атрибута |
0х01 | BYTE | пороговое значение атрибута |
0х02 | TWORD | зарезервировано |
На основании этих данных можно отобразить атрибуты SMART в более удобочитаемом виде.
С точки зрения разработчиков микропрограмм жестких дисков пригодным к эксплуатации считается изделие, у которого ни один из текущих нормированных атрибутов не ниже порогового значения. При достижении порогового значения каким-либо атрибутом микропрограмма накопителя при ответе на запрос статуса SMART по команде 0xB0 0xDA будет информировать, что накопитель несправен.
Некоторые разработчики программ, позволяющих следить за параметрами SMART, руководствовались аналогичной логикой, которая, казалось бы, следует из АТА стандарта, и ввели показатель «Здоровье» для накопителей, который как правило определяется по состоянию атрибута, сильнее всего изменившего свое нормированное значение от начала эксплуатации. Подобный метод оценки технического состояния накопителя не совсем верен, так как:
1. Не учитываются особенности многих микропрограмм, где изменение некоторых атрибутов – нормальное явление и не является каким-то реальным признаком износа.
2. При возникновении многих видов проблем микропрограмме накопителя нужно немало времени, чтобы показать в параметрах атрибута, что состояние накопителя уже близкое к критическому.
Исходя из этого, можно лишь сказать, что при оценке «SMART status – BAD» можно говорить, что у накопителя есть проблемы, и желательно его заменить, а в случае «SMART status – GOOD» нельзя однозначно утверждать, что с накопителем нет проблем. Также по состоянию атрибута нельзя предсказывать, сколько времени еще может работать неисправный накопитель.
Показания SMART не позволяют так просто и однозначно, как бы хотелось пользователям, оценивать состояние винчестера, и многим данная технология кажется бесполезной игрушкой, но польза от нее есть.
Кроме нормированных значений, отображающих состояние накопителя в условных единицах, есть и RAW поле, и именно в этом поле показания атрибутов во многих случаях наиболее ценны. Приобретая новый жесткий диск, мы получаем изделие, которое после сборки прошло selfscan, во время которого была подобрана оптимальная плотность записи в зонах, сформированы сами зоны, учтены недостатки пластины и сформированы заводские дефект-листы, и на основании этого сформировано логическое пространство пронумерованных секторов. В новом накопителе в SMART практически все атрибуты в RAW полях содержат нули. Некоторые из них тут же станут ненулевыми после первого включения (счетчик количества запусков, счетчик времени наработки и т.п.). Но многие атрибуты будут содержать в поле ненормированных значений (RAW) нули на протяжении всего жизненного цикла накопителя, пока он будет в исправном состоянии.
Проблемы, которые возникают с винчестерами, не всегда происходят стремительно, и немалое их число можно заметить на раней стадии и предпринять меры по копированию данных на исправный накопитель прежде, чем наступит ситуация, при которой пользователь не сможет получить данные самостоятельно.
Понимая, что у исправного накопителя не должно быть затруднений при чтении и записи в рамках всего логического пространства, следует уделять пристальное внимание атрибуту 0xC5 (197) - current pending sector count (текущее количество нестабильных секторов). Изменение значения в поле RAW для этого атрибута свидетельствует о том, что в процессе операций чтения/записи встречались нестабильные сектора. Появление ненулевого значения в поле RAW для этого атрибута может означать: появление дефектов на поверхности пластин, некие деградационные процессы, произошедшие с БМГ, из-за чего появляются подобные ошибки, а также может быть внешняя причина, например, вибрация, высокая температура, которая привела к нестабильной работе накопителя.
Рекомендация в таком случае – немедленное копирование данных на другой носитель информации под контролем пользователя, чтобы в случае замедления, зависания накопителя или появления необычных звуков немедленно прервать операцию копирования, дабы не усугубить состояние накопителя и не лишить себя возможности восстановления данных.
Если копирование данных прошло успешно, тогда рекомендуется выполнить сервисные операции над накопителем, на основании которых можно будет предпринять дальнейшее решение о возможности дальнейшей эксплуатации.
Также стоит обращать внимание на атрибут 0x05 - reallocated sectors count (количество переназначенных секторов). Отличное от нуля значение в поле RAW для данного атрибута свидетельствует о том, что микропрограммой жесткого диска были проведены операции замещения некоторых секторов из логического пространства на резервные. То есть были обнаружены дефекты и выполнен remap. Изменения значения этого атрибута может свидетельствовать примерно о том же, о чем и изменения атрибута 0xC5 (197), в связи с чем рекомендации будут аналогичными.
Если в накопителе установлены датчики удара, то в SMART присутствует атрибут 0xBF (191) - G-sense error rate, который фиксирует ударные нагрузки. Особенно актуально обращать внимание на этот атрибут в случае внешних винчестеров или жестких дисков, используемых в ноутбуках, так как рост значений в поле RAW будет свидетельствовать о вашем небрежном отношении к устройству. Переосмыслите правила пользования современными мобильными устройствами, чтобы перестать подвергать их ударным нагрузкам, так как каждый из толчков может стать отправной точкой деградации накопителя. Помните, что современные накопители с весьма высокой плотностью записи на пластину могут очень быть чувствительны даже к незначительным толчкам во время работы.
Атрибут 0xC7 (199) UltraDMA CRC Error Count (Количество ошибок в режиме Ultra ATA) информирует о возникновении проблем в передаче данных между жестким диском и контроллером материнской платы в режимах Ultra ATA. Причинами возникновения ошибок могут быть: некачественные интерфейсные кабели (SATA, PATA), повреждения разъемов как на системной плате ПК, так и на жестком диске, неисправности контроллера на материнской плате, неисправности печатной платы («контроллера») жесткого диска. Большинство таких проблем решаются заменой интерфейсного кабеля либо подключения винчестера к другому порту системной платы.
В некоторые накопители внедрена системы контроля целостности данных в буферном ОЗУ, результат ее работы отражается в атрибуте 0xB8 (184) end-to-end error (ошибка четности буферного ОЗУ). Фиксация подобных ошибок свидетельствует о возможном искажении пользовательских данных при чтении/записи. Пока не наблюдается ярко выраженных сбоев, следует немедленно скопировать данные на другой накопитель с обязательной проверкой целостности скопированных данных. Далее использовать накопитель настоятельно не рекомендуется, во избежание рисков потери данных.
Описанные выше атрибуты – одни из основных, на которые стоит обращать внимание, исходя из массовости проблем. Не стоит воспринимать это высказывание как то, что иные атрибуты совсем не играют никакой роли. Играют, и порой важную, но если рассматривать различного рода проблемы жестких дисков, то признаки подавляющего большинства неисправностей обозначатся в описанных выше атрибутах. Показатели иных атрибутов имеет смысл анализировать при отсутствии признаков проблем по RAW полю атрибутов 0x05, 0xB8, 0xBF, 0xC5, 0xC7.
Регулярный мониторинг данных атрибутов поможет заметить приближающиеся проблемы, что увеличит шансы пользователя не потерять информацию из-за отказа накопителя.
Павел Янчарский
Перепечатка материалов разрешена только с указанием активной ссылки на оригинал статьи