Как стереть жесткий диск с незаписываемыми секторами?


21

Итак, у меня есть жесткий диск, который выходит из строя. Я хочу стереть данные перед отправкой на замену. Я пытаюсь использовать dd if=/dev/zero of=/dev/sdXX, но он останавливается при первой ошибке записи. Как я могу перезаписать диск нулями, игнорируя ошибки записи? conv=noerrorкажется, влияет только на входной файл.


В базе данных Debian есть отчет об ошибке , но похоже, что он еще не реализован.
Бобби

Есть ли badblocksтакже остановиться на ошибках? Возможно, вы могли бы сделать разрушительное письмо с этим?
Октябрь 15.10

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

Ответы:



15

Параметры, которые я использовал с ddrescue, чтобы стереть диск /dev/sdb(заполненный нулями из /dev/zero) и записать вывод в файл log.txt:

ddrescue --force /dev/zero /dev/sdb log.txt

Чтобы стереть случайные данные, используйте: ddrescue --force / dev / urandom / dev / sdX tmp.log
Бастион

Как вы знаете, когда это сделано? Я сделал это и позволил ему бежать в течение приблизительно 20 минут, и это осталось на 0,00% спасенным. Я пытаюсь стереть это твердотельный накопитель NVMe с плохими блоками ... У меня не работает утилита Samsung Secure Erase.
user1960364

3

Если вы просто хотите стереть диск, попробуйте dban

С сайта:

Darik Boot and Nuke («DBAN») - это автономный загрузочный диск, который надежно стирает жесткие диски большинства компьютеров. DBAN автоматически и полностью удалит содержимое любого жесткого диска, который он может обнаружить, что делает его подходящей утилитой для массового или аварийного уничтожения данных.


Я собирался предложить это.
Кробертс

3

Для записи, дд также имеет возможность conv=noerrorпропустить ошибки. Если у вас были ошибки во входном файле, и когда он не использовался /dev/zero, вы хотели бы использовать conv=noerror,notruncили conv=noerror,syncне допускать, чтобы dd урезал выходной файл, если существуют ошибки во входном файле.

Для вашего запроса вы можете попробовать эту команду вместо:

dd if=/dev/zero of=/dev/sdXX conv=noerror  

Чтобы ускорить процесс и, возможно, избежать гибели накопителя в середине шага, вы также можете попытаться увеличить размер байта со стандартного 512 (что делает чтение dd посекторным, что медленно) до чего-то большего, например 4K ( что в восемь раз больше):

dd if=/dev/zero of=/dev/sdXX bs=4K conv=noerror  

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

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


man dd«noerror» означает «продолжить после ошибок чтения»
Кевин Смит,

1

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

Теоретически вы можете написать что-нибудь, чтобы сделать это автоматически, но это не так тривиально, и я бы лучше написал инструмент, чтобы сделать трюк, чем беспокоиться о сценарии dd ..

   seek=BLOCKS
          skip BLOCKS obs-sized blocks at start of output

1
... или используйте dd-rescue ...
Антти Хаапала

... правильно ли обрабатывает ошибки записи dd-rescue ?
qdot
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.