在嵌入式的设备上,一个无法避免的问题是,如果设备突然掉电,可能会引起一系列的连锁反应(这也是PC不建议直接扣电池的原因),其中有一项就是,突然掉电可能会引起文件系统损坏,这可是要命的!一般来说,如果只是文件损坏,那也没啥,最多坏一个或者几个文件,但要是文件系统损坏,那可能意味着所有数据的丢失(当然,如果你舍得花钱,还是可以找回来的, 只是成本问题),对用户体验的影响会是致命的,我们要如何解决这个问题呢?
首先从测试说起:
测试: 选用FAT32文件系统,自己写脚本做写入文件时随机断电的压力测试,发现:
问题一:文件系统没有损坏,但最后写入的文件有一个或者多个损坏
问题二:文件系统损坏,比如文件系统变成read-only(最常见的问题),有时也会有文件系统损坏
分析:
针对问题一,有一下两种case可能造成多个文件损坏(我们能接受的只有最后一个file坏掉,但其他的file必须是好的)
Case #1: 一个物理的block可能包含多个文件系统的block file,这样造成写一个file的时候可能把不相干的file擦除,造成其他文件损坏。
Case #2: 一个物理的block可能包含多个文件系统的block file,这样造成写一个file的时候可能把不相