我在这里看到四个可行的答案:
如果您直接连接到计算机,则由garethTheRed发布的hdparm
方法可能是最好的。但是,显然,如果您尝试通过USB连接它,则可以使驱动器变砖。如果您要对要处理的驱动器进行此操作,那可能是一件好事。但是,您可能希望在丢弃前确保擦除安全。
imz-Ivan Zakharyaschev报告的技术可以使用,但是可能很慢。我建议如果您不希望数据可恢复,请使用/dev/urandom
代替/dev/zero
; 例如,
dd iflag=fullblock oflag=direct conv=noerror,notrunc if=/dev/urandom of=/dev/sdX
我建议以下几点。对于执行相同操作的更快的东西,请使用maxschlepzig报告的技术(在问题中):
ddrescue --verbose --force --nosplit /dev/urandom /dev/sdX
这将比dd
命令快,但不如hdparm
命令快。见下文为什么我不推荐这个...
该badblocks
命令也可以使用,但是您不能以这种方式将数据随机化,这将非常慢。
最后,如果我没有指出人们要完全擦除磁盘的第一个原因是他们将要处理磁盘,那我将是失职。在这种情况下,如果您尚未尝试,则可能要先尝试恢复磁盘。如果您读取了一个块并返回了I / O错误,则下次您写入同一块时,磁盘将尝试从保留列表中重新分配另一个块。一旦保留列表已满,您将在写入时遇到I / O错误。那是您真正应该丢弃驱动器的时间。
因此,您可以执行以下简单操作:
dd if=/dev/sdX of=/dev/null conv=noerror
然后,重写坏块,如下所示:
dd if=/dev/zero of=/dev/sdX bs=128k
如果该命令有效,那么您可以重新格式化磁盘,然后再次使用它。
或者,您可以badblocks
在磁盘上运行两次命令。第二次它应该报告没有坏块...
badblocks -v -s -w -t random /dev/sdX
badblocks -v -s -w -t random /dev/sdX
这将花费更长的时间,但是更可靠。
还值得注意的是,除hdparm
命令外,没有任何一种技术真正执行安全擦除。还记得所有这些坏块吗?这些仍然保留了您大部分原始数据。数据恢复专家可以访问这些文件,以查看硬盘上以前的少量内容。
关于ddrescue及其反对的建议,我有以下解药:
问题是ddrescure会很好地忽略错误。我有一个硬盘,与dd一致地将写入速度降低到大约102 GB标记,并开始在238 GB标记处产生写入错误。令我印象深刻的是ddrescue继续以恒定的速度搅动磁盘,甚至没有报告任何错误。17小时后,当它达到1300 GB时,我偶然发现驱动器指示灯本身停止闪烁。快速检查发现整个USB机箱都已脱机。我将驱动器从通讯座中拉出。我注意到ddrescue只是很高兴地报告说,即使手握了磁盘,它仍在进行复制且没有错误。我将磁盘插入另一台计算机,发现它现在是一块砖。
我不怪ddrescue使驱动器变砖了。驱动器出现故障,将变成砖块。我只是发现令人不安的ddrescue甚至没有给出忽略它的写错误数的错误计数。在这种用法中,ddrescue会使您认为它已经完全成功,而不管所有写入失败如何。事实是,在放慢速度的部分中,它不应该能够全速继续。该节之所以缓慢,是因为驱动器已重定位了许多块,从而导致在访问该节时进行大量查找。因此,这可能是ddrescue的输出变为虚构的点。
dd conv=noerror
我不确定这可能是GNU扩展。无论如何,它都可以解决问题。SATA告诉驱动器自己擦除的答案值得研究,以擦除整个驱动器。