Как SMART самотестирование связано с бадблоками?

15

Инструмент smartctl позволяет запустить длительную самопроверку ( smartctl -t long /dev/sda). Однако есть и badblocksто, что я могу бегать на драйве. Как эти два связаны? Если badblocks обнаруживает плохие блоки, автоматически ли диск обновляет свои значения SMART (например, путем обновления количества перемещенных секторов)? Могут ли бадблоки заменить smartctl -t longили наоборот?

Хунли Лай
источник

Ответы:

5

Я должен не согласиться с voretaq7 - SMART не волшебство. Когда у вас есть диск и один из его секторов выходит из строя, вы больше не сможете читать данные с него. Таким образом, вполне возможно иметь нечитаемый файл на современном диске. SMART помечает этот нечитаемый сектор как «Текущий ожидающий» и «Неисправный в автономном режиме», когда он будет доступен после сбоя.

Но когда этот сектор будет записан снова, он будет переназначен на место переотображения, не помечено, и счетчик Reallocated_Sector_Ct увеличится. Тогда весь диск будет снова доступен для чтения.

smartctl -t longПроверка полезна - она ​​будет проверять все пространство диска на наличие нечитаемых секторов, а также регистрировать и помечать как «Текущее ожидание» и «Неисправность в автономном режиме» как первый поврежденный сектор, возникший при запуске. Я настраиваю свои серверы для запуска этого длинного теста один раз в неделю на каждом диске. Это не слишком влияет на обычные функции привода, поскольку запросы ОС всегда имеют приоритет над сканированием SMART.

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

badblocksиногда также полезно - например, он проверит весь диск и не остановится при первой ошибке. Он может проверить один раздел или любую другую часть диска. Вы можете использовать его, чтобы быстро проверить, был ли поврежден блок успешно перераспределен.

Tometzky
источник
11

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

Поэтому теоретически вы должны сообщать об badblocksошибке SMART до того, как что-то наподобие замечает (видимые конечному пользователю) поврежденные сектора на диске.
На современных жестких дисках любые плохие сектора, видимые конечному пользователю (как может сообщать badblocksОС или автоматически обнаруживать ОС), являются последним вздохом и дрожью умирающего диска.


В конечном итоге SMART и badblocksпротестировать две разные, но взаимосвязанные вещи:

SMART - это инструмент самоконтроля:

Жесткий диск знает некоторую информацию о своих рабочих параметрах и обладает мета-знаниями о том, что является «нормальным» для одних и «приемлемым» для других.
Если накопитель обнаружит, что определенные параметры являются «ненормальными» или «неприемлемыми», он сообщит о состоянии перед отказом - другими словами, накопитель по-прежнему функционирует, но может вскоре выйти из строя.

Например: двигатель шпинделя обычно потребляет 0,10 ампер, но теперь он потребляет 0,50 ампер - ненормально высокое усилие, которое может указывать на то, что вал сжимается, или постоянная смазка на подшипниках исчезла. В конце концов, двигатель не сможет преодолеть сопротивление, и привод закроется.

Другой пример: диск имеет 1000 блоков «переназначения» для работы с поврежденными секторами. Он использовал 750 из них, и инженеры, которые создали накопитель, определили, что число повторных операций указывает на что-то внутренне неправильное (плохое блюдо, отказ по старости, поврежденная головка) - накопитель сообщит о состоянии перед отказом, позволяя вам получить время Ваши данные отключены до того, как закончится место переназначения и станут видны поврежденные сектора.

SMART ищет больше, чем просто плохие секторы - это более всесторонняя оценка состояния диска. Вы можете получить предупреждение SMART перед отказом на приводе без дефектных секторов и ошибок чтения / записи (например, проблема с двигателем шпинделя, описанная выше).


badblocks инструмент с определенной (устаревшей) целью: поиск плохих секторов

badblocksприходит со времени до SMART и переназначения плохого сектора. В то время мы знали, что у накопителей есть недостатки, но единственный способ отобразить их, чтобы предотвратить случайное хранение данных, - это провести стресс-тестирование диска, вызвать сбой, а затем помнить, что данные никогда не помещались туда снова.

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

Теоретически вы могли бы использовать badblocksданные, чтобы ОС отображала (видимые) сбои, как если бы ваш современный диск был древним диском Винчестера, но это в конечном итоге контрпродуктивно - как я уже говорил, ЛЮБЫЕ поврежденные сектора, обнаруженные badblocksна современном диске, являются причиной отказа от Весь диск как неисправен (или собирается выйти из строя).

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


Таким образом, если вы работаете badblocksна диске до того, как вы развернете его в работе, вы почувствуете себя лучше и сделаете это, но если ваш диск был изготовлен в этом веке и на нем виден плохой сектор, вы должны выбросить его в корзину (или вызвать его гарантия). За мои деньги SMART статус и глубокая защита - лучшее использование моего времени, чем ручная проверка дисков.

voretaq7
источник
1
Хорошо, это очень хорошо объясняет разницу между SMART и badblocks. Но означает ли это, что достаточно следить за состоянием SMART или мне также нужно время от времени запускать длинные SMART-тесты, если я хочу, чтобы предупреждения SMART отключались правильно? Т.е. я должен запускаться smartctl -t long /dev/sdaвремя от времени, или я могу предположить, что smartdэто «автоматически» предупредит меня о неизбежных проблемах без необходимости что-либо настраивать?
Хунли Лай
Это решение может принять только вы, однако SMART не предназначен для ручного вмешательства (оно «просто работает», и вы, как правило, не должны возиться с ним). Доверяйте своему оборудованию (по крайней мере, в этой ограниченной степени), потому что, если вы не можете доверять своему оборудованию, вы можете собрать вещи и пойти домой.
voretaq7
2
«Современные накопители уже делают то же, что и бадблоки, внутренне и в несколько тысяч раз быстрее», - badblocksсчитывает каждый байт с накопителя, перезаписывает их случайным образом, а затем возвращает исходные данные. УМНЫЕ самопроверки не делают этого. Это должно очистить все «ожидающие» сектора, если я правильно понимаю.
эндолит
4
@endolith Тесты не являются прямыми эквивалентами, но цель, которой они служат, эквивалентна (обнаружить и разрешить переназначение плохих секторов). Моим главным пунктом был последний абзац: если вы хотите запускать badblocks как инструмент для работы с диском (чтобы увидеть, можете ли вы спровоцировать ошибки SMART, потому что он находит кучу плохих блоков), сделайте это, но если вы запускаете badblocks сегодня с намерение затем загрузить список поврежденных блоков, чтобы избежать использования этих секторов (как мы это делали в каменном веке), вы делаете это неправильно: видимые поврежденные сектора означают, что вы должны забить диск в ближайший мусорный бак.
voretaq7
1
@Hashim Да, я считаю, что полезно использовать блокировку ошибок, потому что это очистит ожидающие сектора.
эндолит
5

Хорошие ответы на этот вопрос

/superuser//a/693065

/superuser//a/693064

Вопреки другим ответам я считаю бадблоки не устаревшими, а очень полезным инструментом. Однажды я обновил свой компьютер с новым жестким диском, и он начал работать нестабильно. Благодаря плохим блокам у меня ушло много времени, чтобы понять, что поверхность диска имеет дефекты. С тех пор я запускаю полные блокираторы режима записи (разрушаемые!) Для каждого нового жесткого диска, который я начинаю использовать, и у меня больше никогда не возникало этой проблемы. Я очень рекомендую

время sudo badblocks -swvo sdX.log / sev / sdX

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

Во время этого теста неисправные блоки будут отображаться на диске. Таким образом, «количество повторных секторов» следует записывать до и после теста и сравнивать с пороговым значением SMART, поскольку оно скажет что-то о работоспособности накопителя.

Фрэнк Брейтлинг
источник
2
Стресс-тестирование нового диска, пока он еще на гарантии, - отличная идея.
эндолит
2

badblocks - это пережиток старых времен, он не очень полезен, он может найти нечитаемый в настоящее время сектор, но правильное решение для плохого сектора - восстановить данные из резервной копии. Что может быть сделано, если данные не были важны для вас, это удалить связанный файл и записать что-либо в это место, это позволит диску перераспределить сектор, если он сочтет это необходимым, и продолжить работу.

Самопроверка диска также обойдется и проверит весь носитель на наличие различных дефектов; предполагается, что он будет использовать более низкие пороги по сравнению с тем, что он использует в обычной работе, чтобы увидеть, есть ли на диске много слабых мест, и на основе логики поставщика может решить, что диск истек срок его службы, и объявить тест не удалось. В этот момент вы должны вынуть все свои данные или восстановить их из резервной копии и заменить диск.

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

Если вам нужно выбрать между этими двумя вариантами, используйте smartctl -t, если он лучше проанализирует диск.

Я также могу предложить использовать мою утилиту дискового сканирования https://github.com/baruch/diskscan , она больше работает как плохие блоки, но пытается оценить, работают ли сектора, которые плохо работают, что-то вроде сектора с плохим слухом, который требует много дольше читать. Это указывает на проблему с развивающимся носителем, и в будущих версиях также может предлагаться автоматическая попытка помочь диску устранить эту проблему.

Барух Эвен
источник
«Кроме того, badblocks по сути устарели в наше время, так как сами диски будут перераспределять данные, и больше нет необходимости отображать поврежденные блоки на уровне файловой системы». Разве badblocksнагрузка на диск не влияет на самотестирование SMART?
эндолит
Нет, badblocks выполнит последовательное сканирование диска. Он не лучше, чем dd, и будет таким же, как и самотестирование.
Барух Эвен
badblocksчитает каждый байт с диска, заменяет его тестовыми шаблонами, а затем записывает исходные данные на место. SMART самотестирование аналогично тестам чтения-записи?
эндолит
1
Что ж, плохая блокировка перезаписи данных очистит все «ожидающие секторы» и заставит диск либо пометить их как хорошие, либо перераспределить их, верно?
эндолит
1
Да. Это может быть то, что вы хотите в таком случае.
Барух Эвен