我有一个可启动的 FreeBSD 驱动器,在将 PC 捐赠给我当地的二手商店之前,我会用它来擦除硬盘上的内容。我使用以下命令来实现此目的:
dd if=/dev/urandom of=/dev/[drivename] bs=64k
假设硬盘上有损坏的扇区或物理损坏的区域。上述命令会覆盖这些扇区吗?或者是否仍然可以从损坏或损坏的扇区中提取数据?
答案1
这是一种取决于观点的问题:
损坏的扇区在某个时候无法读取或写入。但硬盘的设计理念是坏扇区在某个时候可能会出现。
如果没有处理此类扇区的机制,这将产生后果:假设 LBA 地址处的扇区出现问题,我们的连续 LBA 地址空间就会突然出现漏洞。为了解决这个问题,硬盘驱动器会维护一个备用扇区池。一旦硬盘驱动器发现 LBA 100 处的扇区出现问题,它可以将 LBA 100 重新映射到备用扇区,并使原始扇区停止使用。
因此,您将无法写入 LBA 100,这是原来的扇区,但是由于驱动器会将 LBA 地址映射到备用扇区,因此您最终可以写入 LBA 100。因此,只要驱动器有可用的备用扇区,您似乎就可以写入该扇区,而实际上您正在写入不同的物理扇区。
有一些情况会触发驱动器处理坏扇区:
- 读取时出错。硬盘驱动器将尝试从扇区恢复数据,如果成功,它可能会决定重新映射该扇区。如果不能,扇区将变为“待处理”(您可以在 SMART - 待处理中看到这一点)。它只会在写入时重新映射待处理扇区。
- 写入时出错。如果驱动器认为某个扇区无法可靠使用,它将重新映射该扇区(您可以在 SMART - 重新分配中看到这一点)。
此驱动器已重新分配扇区,并且还有待处理的扇区。如果您写入待处理的扇区,它们将消失:
关于恢复数据(或者如您所说,从坏扇区提取数据):
从坏扇区获取数据的最佳“工具”是硬盘本身。如果驱动器无法读取某个扇区,它会应用各种错误恢复技巧,甚至无需您要求。这可能需要每个扇区 20 秒的时间。这就是为什么人们经常抱怨“不稳定”的驱动器速度很慢;驱动器只是在非常努力地从有问题的扇区恢复数据。
专门从这些扇区恢复数据的软件只能做几件事:
- 要求驱动器再试一次。
- 尝试长读取(尽管此功能很久以前就从 ATA 规范中删除了)。通常,如果驱动器无法读取某个扇区,您将不会获得任何数据,而只会收到错误。使用长读取命令基本上就是告诉驱动器,给我任何您可以读取的数据,即使您认为它是错误的。
- 有时,看起来扇区无法读取是因为扇区损坏了,但其实这是硬盘存在其他问题,例如固件问题。在这种情况下,专业的数据恢复工具(通常是硬件和软件的组合)可能能够帮助读取这些扇区。
- 通常,数据恢复工具会分多次对驱动器进行映像处理,第一次处理会尽量跳过坏扇区,而后续每次处理会花更多时间处理坏扇区。但同样,您经常会遇到无法读取的扇区。
编辑:如果这是关于覆盖数据并击中坏扇区,则适用相同的机制:
如果驱动器在擦除过程中发现坏扇区,它将被重新分配。有些人可能会认为这是不安全的,或者是一个可能的攻击媒介,因为原始扇区已停止使用,因此不会被覆盖。
然而复苏的可能性不大:
- 访问未映射到 LBA 的扇区需要非常昂贵的工具,例如 PC3000。
- 即使如此,坏扇区也无法读取,这就是坏扇区的定义。即使使用 PC3000,扇区数据恢复的可能性也很小。
- 任何成功写入(即被覆盖)的扇区中的原始数据都无法恢复,尽管流行的神话人们相信可以从模糊的残留痕迹和其他东西中重建数据(这种说法在某个时候必然会出现在这种类型的线程中)。
如果驱动器支持增强擦除那么这将是安全擦除所有扇区(包括已重新分配的扇区)的最佳选择。
答案2
在很大程度上,问题取决于“坏”是否意味着操作系统已将其标记为坏,或者驱动器的固件是否认为它不可用。
在第一种情况下,较低级别的工具可能能够覆盖它。
在第二种情况下,坏区已被标记为不可用,并可能已被从储备池中替换,这些是固件操作,除非使用特殊的硬件工具,否则“坏”区很可能无法被覆盖。
如果整个存储区域没有在硬件层面被擦除和重新格式化,那么一个决心坚定、资金雄厚的对手很可能可以从中恢复信息。从历史上看,顶级取证设备即使在硬件擦除后也可以恢复原始数据的痕迹,因为时钟/数据转换的残留痕迹可以看作非常微弱的模拟信号。
固件或操作系统级别的操作不会阻止这种情况。
最终,擦除驱动器的唯一方法是使用锤子和熔炉。
答案3
由于我不确定在某种环境下的行为,因此适用以下情况:
固态硬盘
您尝试擦除的扇区与用于存储这些扇区内容的闪存块之间没有固定的映射。
由于闪存块的写入次数有限,因此 SSD 的固件必须在闪存块达到使用寿命后对其进行重新映射。此重新映射操作并非偶然,而是常规磨损处理的一部分。根据制造商的不同,此老化或磨损过程会反映在某些 SMART 属性的变化中。重新映射后,您无法再通过操作系统访问这些扇区。不过,专用工具似乎可以做到这一点。
LUKS 加密系统中的反取证分离器就是为了抵消这种影响而构建的。
硬盘
扇区号和物理扇区之间的映射通常是静态的,但硬盘寿命结束时似乎会出现错误。待处理扇区的数量似乎像雪崩一样激增。由写入操作触发的待处理扇区重新映射到待处理(不可读)扇区,会使操作系统无法访问该扇区。查看重新分配扇区数(SMART 属性)的 RAW 数字,以确定您无法访问的范围。
我无法判断对待处理扇区的写入操作是否会触发对该扇区的最后一次写入尝试(这可能导致写入成功)或者该扇区是否会被立即重新映射。
结论
重新映射可防止您擦除 HDD 和 SSD 上的数据,但重新映射随时间的变化情况不同。SMART“重新分配扇区”属性对于 HDD 很常见。您可以使用它来评估有多少扇区无法覆盖并采取相应措施。考虑到 SSD 的运行方式,我宁愿物理销毁它们,也不愿依靠用随机数据或零覆盖其内容。
答案4
传统答案是“是的,这就是你告诉驱动器固件重新映射扇区并用好的备用扇区替换它的方式”。
甚至更老派的回答是“不,你必须告诉你的磁盘控制器/操作系统进行这个重新映射”(这不适用于你今天在硬核复古计算环境之外找到的任何硬盘驱动器)。
新派的答案是“如果坏扇区造成的干扰足以让驱动器固件的缓解措施无法解决,除非您确定原因,否则请认为驱动器有问题 - 制造检验后产生的任何新坏扇区的风险太大,会产生更多坏扇区(例如驱动器中的污染,甚至更糟的是多米诺骨牌效应),超过更换成本)。此外,如果大量重新映射的扇区导致大量额外寻道(这在旋转硬盘上非常昂贵),则性能可能会下降。