Пометка поврежденных секторов на жестком диске без форматирования

22

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

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

Есть ли способ пометить эти плохие блоки без форматирования жесткого диска?

enedene
источник

Ответы:

29

Я предполагаю, что вы говорите о физических поврежденных блоках на диске, а не о поврежденных файловых системах.

Для проверки физического состояния вашего диска лучше всего установить smartmontools

sudo apt-get install smartmontools

Это работает, потому что все современные диски регистрируют свое состояние работоспособности, используя систему под названием SMART

Используйте smartctrlкоманду, чтобы прочитать этот статус. Например, чтобы прочитать все атрибуты из первого обращения к диску

sudo smartctl --all /dev/sda

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

SMART overall-health self-assessment test result: PASSED

Другими строками, которые вы хотите проверить, являются Число ожидающих секторов и Перераспределенные сектора.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       48
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       2

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

Вы даже можете запустить самотестирование диска, если это поддерживается вашей моделью

sudo smartctl -t long /dev/sda

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

sudo badblocks -svvn -c 262144 /dev/sda

Если вы полностью обработали свой диск таким образом, контроллер диска должен был заменить все поврежденные блоки рабочими, и в журнале SMART будет увеличено количество перераспределенных блоков.

user228505
источник
2
Каково влияние -cили количество блоков, которые тестируются за один раз, или, другими словами, почему у вас такое большое значение по сравнению со значением по умолчанию 64?
Greole
4
размер блока по умолчанию 1024 байта, умноженный на значение по умолчанию для 64 блоков одновременно, приводит к обработке только 64 КБ для каждого запроса. С современными дисками, имеющими пропускную способность до 150 МБ / с, это вносит больше накладных расходов, чем мне удобно. Я хочу дать приводу возможность обрабатывать данные наиболее эффективным способом, не дожидаясь данных на шине.
user228505
Говорит: / dev / sda явно используется системой; запускать бадблоки небезопасно!
Димс
1
@Dims Это говорит вам не запускать это на активно смонтированном диске. Размонтируйте диск первым. В вашем случае это может быть системный диск. Так что сначала загрузитесь в систему спасения.
user228505
2
@Dims Есть опция -force, если вы все равно хотите ее запустить. т.е. sudo badblocks -svvn -c 262144 / dev / sda -force
ADR