如何在 linux/unix 中进行数据清理(即海量存储位衰减缓解)?

如何在 linux/unix 中进行数据清理(即海量存储位衰减缓解)?

数据清理向我提供了一种减轻所谓的位腐烂(在大容量存储上)的方法。

其基本原理是,硬盘上的数据可能会“衰减”/“腐烂”,从而被损坏,为了防止这种情况,硬盘生产商应让光盘在内部为每个写入的块添加一些额外的校正数据。当数据及其附带的纠正/保护数据(某种纠错码 ECC)无法纠正驱动器上发现的数据时,就会发生位损坏。

现在,我目前的理解/信息是,随着时间的推移,数据(及其添加的校正信息)会逐渐丢失。这意味着您等待的时间越长,内部发生的位衰减就越多,直到级联达到无法进行校正的点(即内部添加的校正数据,不再提供足够的信息进行修复)。

数据清理似乎有助于减轻位衰减。我认为理想情况下它是在内部读取驱动器的所有数据并使用附加纠错数据检查数据。如果测试时驱动器遇到问题,它可以纠正错误。此外,所有内部位旋转字节(尚未引起真正的 URE)都可以设置回更好的状态。

话虽如此,我如何触发设备进行这样的数据清理?

smartctl,还是hdparm

smartctl3 种类型的测试:conveyenceshortlong/ extended。对我来说唯一真正有意义的是long,因为显然需要时间读取驱动器的所有数据才能进行潜在的修复。

此处针对 RAID 1 提出了一个问题:使用 mdadm 进行位腐烂检测和纠正

我想知道当没有 RAID、只有普通 SATA 驱动器时该怎么做。

答案1

读取整个普通驱动器:

dd if=/dev/sd(x) of=/dev/null iflag=nocache status=progress

可能有助于确定错误。

badblocks(8)with选项-n是最接近的。先卸载驱动器。

相关内容