我有一个树莓派,使用 TF 卡作为存储,根分区在启动加载时设置为只读模式。理论上来说,根分区是不会发生数据变更的。而事实上,当使用一段时间(可能是半年或一年)后,就会出现 IO 读取错误。为了确认是否 TF 卡的(物理)损坏,我直接用备份的镜像重新整个写入,惊奇的发现可以继续正常(无错误)的使用。因为 TF 卡容量较小只有 4G ,且 IO 错误的位置处于镜像数据范围内,跑 badblocks 后没有报错,所以可以确认 IO 错误并非因为 TF 卡自身的损坏。
基于上述现象,我认为是被称为 [ Bit Rot ] 的现象所导致的结果。究其原因很可能是长期只读使用过程中,形成的 [ Read Disturb ] 或自然衰减造成的。
对于 SSD 来说,主控可能会对冷数据进行搬运。实际上硬盘设备并没有自己的时间概念,也只能对于擦写次数相对而言来进行冷热判断。如果写入次数很少又或者容量较大的情况下,很可能长期不会对冷数据进行处置。但如果搬运频繁或者刷新重写,又会造成写入放大的问题。所以我认为这个机制实际上在一般的 SSD 中并不存在。同样的,对于 TF 这类更为低级的存储设备来说,这些机制更不可能存在。操作系统和文件系统也不会参与其中。
因此,我想提出这样一个问题: 对于 NAND 存储设备而言,冷数据是否需要自己来定期搬运?
1
levn 1 天前
搜索一下西数固态“冷数据门”
|
2
Overfill3641 1 天前
10 多年前就被存储卡坑过一次。
存储卡、U 盘只用于临时转存。 持久化运行,不用机械盘也得上好点的固态盘。 备份就随意了,多份备份随便搞,恢复就是了。 |
3
ntedshen 1 天前
https://www.ni.com/en-us/support/documentation/supplemental/12/understanding-life-expectancy-of-flash-storage.html
https://www.jedec.org/sites/default/files/docs/JESD218.pdf nand 你就当他个电容,他必定会漏电,漏电就必定会丢 正常情况下会有一些机制确保数据不那么冷,不然就不会单独拉西数三星出来叫冷数据门了。。。 但是你不通电那是完犊子 |
4
stinkytofux 1 天前
担忧的有道理, TF 卡不合适长期存储数据.
|
7
wr410 OP @ntedshen 只讨论硬盘的话确实有可能有加热数据的功能,但是这个特性并不会标明在硬盘上,用户也没办法知道具不具备这个特性。其实我主要讨论的还是,像不具备这种特性的数据卡,U 盘,是不是应该主动去加热?甚至是各种单片机设备上 NAND 里的固件,这些数据又怎么去加热?
|
8
ntedshen 1 天前
@wr410 u 盘 tf 卡。。。没办法,这种东西他压根不会自己热。。。。。。。。。
这些功能都是要算力支撑的,现在 ssd 的主控都开始上 arm 处理器了,但是 tf 卡 sd 卡那主控。。。还没个棉签头大呢,实现不了。。。 要么就 diskfresh 那种软件定期烤烤,要么就自己倒下数据了,隔壁掌机区好似经常这么干的。。。 |
9
L4Linux 1 天前 via Android
有个东西叫 trim ,有的文件系统能自动 trim ,操作系统有任务定期 trim 。
|
10
WuSiYu 1 天前 via iPhone
ssd 主控一般会智能一点,不放心的话定期全盘读一遍,如果 bit rot 严重的话会表现为读速度变慢( LDPC 纠错码是迭代式的,错误越严重耗时越长)
|
11
kokutou 1 天前 via Android
杂牌 tf+工作环境长期高温
|
12
nkidgm 1 天前
tf 卡从来都不是为了生产环境准备的,就是一个消费级玩具。
不过就算是生产级别的 nand 储存产品,也得留一份备份,企业级最看重这个了。 |