Назад | Перейти на главную страницу

Что делает SMART-тестирование и как оно работает?

man smartctl говорится (УКАЗАНО для краткости):

В первая категория, называется «онлайн-тестирование». В вторая категория тестирования называется «офлайн-тестированием». Обычно диск приостанавливает автономное тестирование во время доступа к диску, а затем автоматически возобновляет его, когда в противном случае диск бездействует. В третья категория тестирования (и единственная категория, для которой слово «тестирование» действительно подходит) - это «самотестирование».

Включает или отключает автоматический автономный тест SMART, который каждые четыре часа сканирует диск на предмет дефектов. Эта команда может быть подана во время нормальной работы системы.

Кто запускает тест-драйв прошивки? Что это за тесты - читает / записывает ли прошивка на диск - что именно происходит? Безопасно ли запускать тестирование в ОС (linux) или можно запланировать тест на более позднее время - как это происходит - при перезагрузке ОС в приглашении BIOS («автономный тест»)? Где отображаются результаты - журналы SMART?

  1. Прошивка накопителя запускает тесты.

  2. Подробности тестов можно прочитать, например, на сайте www.t13.org/Documents/UploadedDocuments/technical/e01137r0.pdf, где резюмируются элементы короткого и длинного тестов следующим образом:

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

    2. сегмент поиска / сервопривода, в котором привод проверяет его способность находить и серво на дорожках данных. Конкретная методология, используемая в этом тесте, также зависит от поставщика.

    3. сегмент сканирования чтения / проверки, в котором накопитель выполняет сканирование чтения некоторой части поверхности диска. Количество и местоположение сканированной поверхности зависят от ограничения времени завершения и зависят от поставщика.

    4. Критерии расширенного самотестирования такие же, как и у короткого самотестирования, за двумя исключениями: сегмент (3) расширенного самотестирования должен представлять собой сканирование чтения / проверки всей области пользовательских данных, и нет максимальное время, в течение которого привод выполняет тест.

  3. Выполнять неразрушающий контроль во время работы ОС безопасно, хотя вероятно некоторое снижение производительности. Поскольку smartctl страница руководства говорит для обоих -t short и -t long,

Эта команда может быть дана при нормальной работе системы (если не запущена в неактивном режиме)

Если вы активируете режим захвата с помощью -C, smartctl предполагает, что диск может быть занят или недоступен. Это должно не выполняется на диске, который использует ОС.

Как указано на странице руководства, автономное тестирование (что означает просто периодическое фоновое тестирование) ненадежно и никогда официально не входило в спецификации ATA. Вместо этого я запускаю свой из cron; Таким образом я знаю, когда они должны произойти, и могу остановить это, если мне нужно.

  1. Результаты можно увидеть в smartctl вывод. Вот один с запущенным тестом:
[root@risby images]# smartctl -a /dev/sdb
smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.1.6-201.fc22.x86_64] (local build)
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org
[...]
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)   LBA_of_first_error
# 1  Extended offline    Completed without error       00%     20567         -
# 2  Extended offline    Completed without error       00%       486         -

SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
   1        0        0  Self_test_in_progress [90% left] (0-65535)
   2        0        0  Not_testing
   3        0        0  Not_testing
   4        0        0  Not_testing
   5        0        0  Not_testing

Обратите внимание на два предыдущих завершенных теста (при 486 и 20567 часах включения соответственно) и текущий работающий (завершено на 10%).

Реализации SMART зависят от производителя, иногда довольно обширные журналы доступны через smart -a команда. Вот что я получаю на одном из моих дисков с самошифрованием из Hitachi:

SMART Error Log Version: 1
ATA Error Count: 3

Error 3 occurred at disk power-on lifetime: 2543 hours (105 days + 23 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
-- -- -- -- -- -- --
10 51 08 00 08 00 00  Error: IDNF at LBA = 0x00000800 = 2048

Commands leading to the command that caused the error were:
CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
-- -- -- -- -- -- -- --  ----------------  --------------------
60 08 68 00 08 00 40 00      00:00:06.139  READ FPDMA QUEUED
27 00 00 00 00 00 e0 00      00:00:06.126  READ NATIVE MAX ADDRESS EXT
ec 00 00 00 00 00 a0 00      00:00:06.125  IDENTIFY DEVICE
ef 03 46 00 00 00 a0 00      00:00:06.125  SET FEATURES [Set transfer mode]
27 00 00 00 00 00 e0 00      00:00:06.125  READ NATIVE MAX ADDRESS EXT
...

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

  • AMNF - Адресная метка не найдена
  • TONF - Трек 0 не найден
  • ABRT - команда прервана
  • IDNF - идентификатор сектора не найден
  • UNC - неисправимые данные
  • BBK - знак плохого блока

В моем случае ошибку IDNF (ID Not Found) можно проследить до инцидента, когда диск был подключен через адаптер USB-SATA и оказался недостаточно мощным, что помешало ему правильно искать.