Як стерти жорсткий диск з непридатними секторами?


21

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


У базі даних Debian є звіт про помилки щодо такої поведінки, але, схоже, він ще не реалізований.
Боббі

Чи badblocksзупиняється також на помилках? Можливо, ви могли б зробити деструктивне написання з цим?
oKtosiTe

Тепер я також виявив руйнівний характер, badblocksщоб переконатися, скільки поганих блоків є, перш ніж повернути диск у понеділок. Він також успішно стер диск, але це зайняло майже 50 годин.
TestUser16418

Відповіді:


18

спробуйте ddrescue замість dd - він намагається посилити помилки


1
ddrescue успішно видалив весь диск, ігноруючи помилки запису. Велике спасибі.
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 SSD з поганими блоками, які я намагаюся стерти ... утиліта Samsung Secure Erase не працювала для мене.
користувач1960364

3

Якщо ви просто хочете витерти диск, спробуйте dban

З сайту:

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


Я збирався запропонувати це.
qroberts

3

Для запису DD також має можливість 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

Однозначно не є користувальницьким рішенням, але якщо помилки запису зустрічаються рідко, ви можете просто продовжити вручну після їх виникнення.

Теоретично ви могли б написати щось для цього автоматично, але це не так банально, і я б скоріше написав інструмент, щоб зробити трюк, ніж турбуватися з написанням сценаріїв.

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

1
... або використовувати dd-рятувальний ...
Antti Haapala

... чи правильно записує DD-рятувальна ручка помилки запису?
qdot
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.