如何用不可写的扇区擦除硬盘驱动器?


21

因此,我的硬盘驱动器出现故障。我想先删除其中的数据,然后再发送替换数据。我正在尝试使用dd if=/dev/zero of=/dev/sdXX,但是它在第一个写入错误时停止。如何用零覆盖驱动器,而忽略写入错误?conv=noerror似乎只会影响输入文件。


Debian数据库中一个有关此行为的错误报告,但似乎尚未实现。
鲍比2010年

是否badblocks也停止错误?也许您可以用它进行破坏性的写作?
10

我现在也进行了破坏性检查badblocks,以确保在周一归还磁盘之前有多少坏块。它还成功擦除了磁盘,但是花费了将近50个小时。
TestUser16418 '12

Answers:


18

尝试ddrescue而不是dd-它会更努力地出现错误


1
ddrescue成功擦除了整个磁盘,而忽略了写入错误。非常感谢你。
TestUser16418 '12

15

我与ddrescue一起使用的参数擦除驱动器/dev/sdb(从中填充零/dev/zero)并将输出记录到file中log.txt

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

要擦除随机数据,请使用:ddrescue --force / dev / urandom / dev / sdX tmp.log
堡垒

你怎么知道什么时候完成的?我这样做了,让它运行了大约20分钟,并且仍以0.00%的比例获救。我要擦除的是一块坏块的NVMe SSD ...三星安全擦除实用程序对我不起作用。
user1960364

3

如果您只是想擦拭驱动器,请尝试dban

从站点:

Darik的Boot and Nuke(“ DBAN”)是一个独立的启动磁盘,可以安全擦除大多数计算机的硬盘。DBAN会自动并完全删除它可以检测到的任何硬盘的内容,这使其成为批量或紧急数据销毁的合适工具。


我打算建议这个。
qroberts 2010年

3

作为记录,dd还可以选择conv=noerror跳过错误。如果输入文件中有错误,并且在使用时/dev/zero,您要使用conv=noerror,notruncconv=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”表示“读取错误后继续”
Kevin Smyth

1

绝对不是高级用户解决方案,但是如果写错误很少见,那么您可能只想在错误发生后手动继续。

从理论上讲,您可以编写脚本来自动执行此操作,但这并不是一件容易的事,我宁愿编写一个工具来完成这项工作,也不必费心编写dd。

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

1
...或使用dd-rescue ...
Antti Haapala

... dd-rescue处理正确地写入错误吗?
qdot
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.