我有一个树莓派,使用 TF 卡作为存储,根分区在启动加载时设置为只读模式。理论上来说,根分区是不会发生数据变更的。而事实上,当使用一段时间(可能是半年或一年)后,就会出现 IO 读取错误。为了确认是否 TF 卡的(物理)损坏,我直接用备份的镜像重新整个写入,惊奇的发现可以继续正常(无错误)的使用。因为 TF 卡容量较小只有 4G ,且 IO 错误的位置处于镜像数据范围内,跑 badblocks 后没有报错,所以可以确认 IO 错误并非因为 TF 卡自身的损坏。
基于上述现象,我认为是被称为 [ Bit Rot ] 的现象所导致的结果。究其原因很可能是长期只读使用过程中,形成的 [ Read Disturb ] 或自然衰减造成的。
对于 SSD 来说,主控可能会对冷数据进行搬运。实际上硬盘设备并没有自己的时间概念,也只能对于擦写次数相对而言来进行冷热判断。如果写入次数很少又或者容量较大的情况下,很可能长期不会对冷数据进行处置。但如果搬运频繁或者刷新重写,又会造成写入放大的问题。所以我认为这个机制实际上在一般的 SSD 中并不存在。同样的,对于 TF 这类更为低级的存储设备来说,这些机制更不可能存在。操作系统和文件系统也不会参与其中。
因此,我想提出这样一个问题: 对于 NAND 存储设备而言,冷数据是否需要自己来定期搬运?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.