为了验证我用于存档数据的磁盘(预期保存 30 年或更长时间)的完整性并恢复其磁性强度,我希望每隔一两年读取并重写驱动器上的每个数据块。有些是 HFS+,有些是 NFTS。这个答案建议使用一个在 Windows 机器上运行时可以执行此操作的实用程序,但我手边没有 Windows 机器,即使有,我也不认为 Windows 实用程序可以与 HFS+ 磁盘一起使用。
我想确保刷新重要的“隐藏”数据(例如分区图本身),因此我正在寻找一个可以在 Mac 上运行的程序,该程序将简单地将磁盘视为原始块存储,并只读取和重写磁盘上的每个块,但同时提供足够的信息以在遇到读取或写入错误时调出哪些文件已损坏。 (由于我有所有内容的 2 个存档副本,我希望我可以使用另一个存档中的好文件恢复一个存档中的坏文件。)
如果我可以让 Mac 将磁盘安装为原始驱动器,我可以想到很多方法来读取磁盘上的所有数据,但没有令人满意的方法将数据写回到同一个块或识别坏块属于哪个文件。
即使无法在发现坏块时标记哪个文件已损坏,重写数据的解决方案仍然很有用。如果您知道一种仅适用于 Linux 或 Windows 的解决方案,只要它可以处理 HFS+ 和 NTFS 驱动器,我很乐意听听它。此外,如果您知道一种实用程序,可以根据原始块 ID 确定坏块属于哪个文件,那么作为两部分解决方案的一半,它也很有用。
答案1
首先要说明的是:对于长期存档,硬盘并不是最好的介质。当前M-盘技术可以保存你的数据千年好物。这些光盘曾经很贵,但现在价格已经下降了。例如,在亚马逊上Verbatim M-Disc 5 件装 BD-R 25GB目前总共 125 GB 的价格为 14.27 美元。您还需要合适的刻录机。优点是写入后不需要对数据进行太多维护。
现在谈谈磁性硬盘:研究表明,搁置的磁盘每年会损失约 1% 的磁性。虽然要损失超过 50% 的磁场需要 50 多年,但仍然建议每 3-5 年进行一次预防性刷新。
事实证明,现代磁盘驱动器会重写磁场低于某个内置阈值的每个扇区。如果磁盘打开的时间足够长,固件将检查每个扇区。如果您不想等待,您只需强制读取整个磁盘(表面扫描)以验证每个扇区。
一些可以读取整个磁盘的命令是:
sudo cat /dev/rdisk0 > /dev/null
sudo badblocks -b 4096 -p 1 -c 32768 /dev/rdisk0
你还应该关注聪明的磁盘的统计数据。Back Blaze 文章硬盘 SMART 统计数据列出了五个表明即将发生磁盘驱动器故障的 SMART 指标:
- SMART 5 – 重新分配的扇区数量
- SMART 187 – 报告的不可纠正错误
- SMART 188 – 命令超时
- SMART 197 – 当前待处理扇区数量
- SMART 198 – 离线_无法纠正
Back Blaze 使用指标 187 作为标准,并建议在其变为非零值后更换驱动器。但是,其他指标同样糟糕:例如,指标 197 计数不可恢复的扇区。对于归档,我认为最好让所有这些指标都保持为零。