如何使用备份刷新磁盘上的磁性状态?


8

我有几个大磁盘,上面有备份/存档材料。他们是ext4。关于那些将存储几年而不再次读取整个磁盘的磁盘,我一直在考虑一种刷新磁盘磁状态的方法。在我一直在寻找答案的任何地方,驱动器的保质期似乎都是一个辩论的问题,但是在存储了几年(例如5年左右)后,似乎应该以某种方式刷新数据(? )

我已经看到这个建议:

dd if=/dev/sda of=/dev/sda

安全吗?它有用吗?

我想要做的是a fsck或a 之外的另一件事dd if=/dev/sda of=/dev/null,这两者都可能会发现磁盘上已有的磁性脱落。

我要做的是在磁盘上的磁性电荷降低到可读水平以下之前刷新磁性数据。我怎样才能做到这一点?

Answers:


8

通常,如果不读取/写入所有磁盘,就无法真正刷新整个磁盘。fsck不太可能提供您需要的东西-它与文件系统一起工作而不与底层设备一起工作,因此它通常仅扫描文件系统元数据(节点和其他文件系统结构)。

badblocks -n可能是的选择dd if=X of=X。在任何情况下,您可能都想使用大块来加快速度(dd例如bs=16M,因为badblocks它将读为-b 16777216,或-b $((1<<24))使用合理的shell)。你可能也想用conv=fsyncdd

至于dd使用相同输入和输出设备的安全性-它会从输入中读取数据块并将其写入输出,因此它应该是安全的(我多次使用这种方法通过创建循环设备来对加密的分区重新加密)相同的基础设备和不同的密码,然后dd从一个到另一个)-至少对于某些类型的物理介质:例如,对于带驱动器的驱动器,对我来说绝对不明显,它可以100%防止故障。


感谢您的回答!那么conv=fsync“在完成之前物理地写输出文件数据和元数据”是什么意思?它更安全还是为什么要使用它?
PetaspeedBeaver

1
我希望它可以确保退出之前将所有内核缓存都刷新到介质。由于您只是重写相同的数据,因此实际上没什么大不了的。它只是确保dd完成后可以将插头拔出(当然,HDD中可能有一个缓存,但这超出了软件的管辖范围)。
彼得

因此,总而言之,完整的dd命令应类似于dd if=/dev/sda of=/dev/sda bs=16M conv=fsyncplus或还status=progress可以显示进度。这将需要一段时间,具体取决于驱动器的大小和速度。我认为用Ctrl + C取消此中间过程是安全的吗?
Martin Spacek '18

1
是的,从理论上讲,以任何方式中断整个过程都是安全的。至少对于非平铺式旋转磁力驱动器 -这是所使用的确切物理原理和技术很重要的领域。
彼得

1

我不知道如何使用* nix中的任何本机工具来执行此操作,但是我已经做了很多年的事情是运行GRC.com上名为Spinrite的产品。

它有几种模式,其中一种模式是通过运行每个扇区来刷新表面/数据,将每个位的状态反转几次,然后恢复到原来的状态。

我每年在驱动器上都这样运行几次,并不是说我想大声说出来,但是我觉得我的硬盘驱动器有很少的问题,而且有很多问题。

IIRC的价格确实在$ 80-90左右,但这些费用是相对的,具体取决于您认为数据对您有价值。

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.