2

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

Я пытался исправить проблему с жесткими дисками с помощью таких команд, как

fsck.ext4 -p /dev/sda1

но для того, чтобы починить секторы, нужны годы. Я отформатировал весь HDD, но все еще есть проблемы. Есть ли быстрый способ отформатировать жесткий диск и восстановить поврежденные сектора?

5 ответов5

5

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

dd bs=512k if=/dev/zero of=/dev/...

Это займет некоторое время (обычно 2-3 часа). Это даст вашему диску возможность обрабатывать поврежденные сектора. Современный диск (созданный за последние ~ 15 лет) обрабатывает поврежденные сектора внутри, прозрачно переназначая эти сектора из зарезервированного набора секторов во время записи. В итоге у вас должен быть диск со всеми используемыми секторами. Если диск не может выполнить это переназначение, это обычно означает, что существует так много поврежденных секторов, что на нем закончились зарезервированные сектора. Это явный признак того, что срок годности диска истек.

2

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

Например, современный жесткий диск имеет реальную пропускную способность чтения около 130 МБ / с, поэтому современному диску 4 ТБ потребуется около 4000000 МБ / 130 МБ / с = 8,5 часов, чтобы даже прочитать весь диск один раз без проблемных блоков. Накопитель с одним или несколькими поврежденными блоками заставит диск неоднократно пытаться перечитать эти блоки, поэтому пропускная способность сильно пострадает. Это позволит вам найти плохие блоки, которые вызывают ошибки чтения. Чтобы заставить любой современный жесткий диск переназначить плохой блок, нужно что-то записать в этот плохой блок.

Единственный способ действительно проверить, работает ли блок поверхности жесткого диска, - это прочитать этот блок, затем записать его обратно и посмотреть, все ли в порядке с диска все в порядке для этого блока. Раньше блоки имели длину 512 байт, но современные накопители используют блоки по 4 КБ. Современный накопитель на 4 ТБ требует тестирования около миллиарда (1e9) блоков по 4 КБ. И я упоминал, что жесткие диски работают медленно?

Если у вас плохие блоки и какие-либо данные, вам действительно нужен fsck.ext4 -cc . И это займет около дня или двух как минимум. Выполнение fsck.ext4 -c позволит ext4 избежать плохих блоков, но не сможет починить диск. Опция -c в fsck.ext4 позволяет попробовать прочитать каждый блок раздела. Опция -cc заставит его попробовать прочитать каждый блок и записать одно и то же содержимое обратно на диск и проверить на наличие ошибок. И даже диски с -cc иногда можно починить ... Тем не менее, нет волшебной пули, чтобы найти плохие блоки. Единственный способ - просканировать весь диск, и он будет медленным с огромными дисками.

Поскольку вам не нужны никакие данные, выполнение команды sudo dd if=/dev/zero of=/dev/sdX bs=4M позволит пропустить часть "чтение данных" и перейти непосредственно к части "исправить блоки". И это все еще займет где-то между 8-20 часами, чтобы закончить.

Обратите внимание, что микропрограмма привода исправит неисправный блок автоматически после перезаписи неисправного блока. Это действительно не имеет значения, какую операционную систему или инструмент вы используете, чтобы перезаписать поврежденный блок на жестком диске. И данные тоже не имеют значения. Если диск не может исправить какой-либо неисправный блок, этот диск готов. Это связано с тем, что современные жесткие диски имеют в запасе несколько дополнительных физических блоков, которые используются для заполнения поврежденных блоков в логическом адресном пространстве. Если плохой блок не может быть исправлен, это только потому, что все блоки в резервном пространстве уже были использованы! В этом случае привод уже давно вышел из строя.

Обратите внимание, что вы должны использовать правильный размер блока, чтобы исправить блок. Например, если ваш накопитель использует физические блоки 4 КБ и по-прежнему допускает логические блоки 512 Б, вы не можете перезаписать поврежденный блок логической записью 512 Б, потому что технически диск попытается прочитать реальный блок 4 КБ, измените записанный вами 512 Б и -записать блок 4KB обратно на магнитную платформу. Очевидно, что "прочитать реальные 4 КБ" не удастся, если физический блок 4 КБ будет плохим. Чтобы избежать этого, нужно записать весь блок размером 4 КБ в одну команду жесткого диска, чтобы с физического диска ничего не читалось. В конце вы должны написать правильно выровненный блок 4 КБ, чтобы исправить данный плохой блок. Команда dd выше всегда будет записывать блоки 4 Мб, которые будут правильно выровнены при использовании всего устройства в качестве мишени (вы можете использовать любое кратное 4 Кбайт для записи, приведенный выше пример использует 4 МБ для повышения производительности). Если вы используете один раздел в качестве целевого и этот раздел не выровнен правильно, эта команда все равно может не исправить поврежденные блоки, если логические и физические размеры блоков не совпадают с диском. Насколько я знаю, это верно для большинства современных жестких дисков. Выполнение of даст информацию об устройстве smartctl -x /dev/sdX .

Как всегда, сделайте man fsck.ext4 , man dd и man smartctl перед тем, как возиться с этим.

1

Прежде всего, плохой сектор, в теории, будет означать необратимое повреждение частей жесткого диска. Так что, если вы планируете использовать этот диск для важных данных в ближайшем будущем, возможно, пересмотрите это. Шансы на рост плохих секторов хорошие. Насколько я знаю, сейчас существует реальный способ исправить плохие сектора. Только не допускайте их использования. Также необходимо помнить, что файловые системы могут быть записаны в разделах. Чтобы просмотреть список разделов, используйте команду fdisk -l. Затем вы можете использовать команду e2fsck -c, чтобы предотвратить размещение плохих блоков в файле или каталоге.

1

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

Диски Seagate

Western Digital

0
badblocks -wsv -o /root/<badblocks.txt> /dev/<device>

mkfs.<filesystem-type> -l /root/<badblocks.txt> /dev/<device>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .