嵌入式设备断电后,程序文件记录为数个月前的记录,系统是Linux3.9

时间:2022-04-10 18:51:49
嵌入式设备用Linux 3.9Kernel自己编译的版本,程序采用c++编写,每天都会在记录文件里进行记录(每次写完就关文件,但没有sync),由于突然断电,再次启动设备后,发现程序记录文件仅记录到几个月前的记录,后面就没有了,现在怀疑操作系统会因为某个条件触发均衡机制,将数据写到缓存里,当写到一定量的时候才会sync到flash里。
我的问题是什么时候会触发它写缓存,以及如何避免这个问题?

4 个解决方案

#1


一般是手动  如果存储设备拔插 会进行sync

#2


最好自己手动sync

#3


引用 1 楼 xuweiwei1860 的回复:
一般是手动  如果存储设备拔插 会进行sync

我的问题是linux系统怎样才会触发它写缓存,因为最开始几个月的数据是记录的,直到某天开始设备虽然显示是在记录,cat也可以看到文件数据是对的,但突然断电,数据就直接回到几个月前,也就是设备运行6个月,突然断电,记录文件直接回到3个月前的记录,我想问是怎么触发它开始只写缓存不写硬盘的,sync的问题倒是好解决,主要想弄清楚写缓存的触发条件。

#4


内存吃紧cache不够的时候会把dirty page写文件系统里去,不同的文件系统也有处理不同的地方,反正不能依赖这个特性就是了

#1


一般是手动  如果存储设备拔插 会进行sync

#2


最好自己手动sync

#3


引用 1 楼 xuweiwei1860 的回复:
一般是手动  如果存储设备拔插 会进行sync

我的问题是linux系统怎样才会触发它写缓存,因为最开始几个月的数据是记录的,直到某天开始设备虽然显示是在记录,cat也可以看到文件数据是对的,但突然断电,数据就直接回到几个月前,也就是设备运行6个月,突然断电,记录文件直接回到3个月前的记录,我想问是怎么触发它开始只写缓存不写硬盘的,sync的问题倒是好解决,主要想弄清楚写缓存的触发条件。

#4


内存吃紧cache不够的时候会把dirty page写文件系统里去,不同的文件系统也有处理不同的地方,反正不能依赖这个特性就是了