每当我在 UBIFS 文件系统上运行我的应用程序并对任何文件执行写操作(前提是文件具有适当的读写模式),在断电和打开后,我立即看到写入文件的内容丢失了。文件的大小为零。如果在 JFFS2 文件系统上执行同样的操作,则不会出现此问题。我已尝试使用同步命令,但仍然很少出现此问题。
例如:
我需要在一个名为 myfile 的文件中写入一些数据,在运行时我打开它并写入一些数据为“Hi..Hello..”(如果我打开文件并在写入操作后检查,则数据写入正确), 然后关机/重启后,我发现内容“Hi..Hello..”不存在,文件大小为零字节。
注意:只有在关闭或重启系统后才会出现问题。
最佳答案
UBIFS 的同步频率较低。所以如果文件是重要的调用,在用户应用程序中你必须调用 fsync()。我建议您执行以下操作之一以防止 UBIFS 中的数据丢失:
- 关键写入调用后 fsync()
- 打开带有 O_SYNcflags的文件
- 使用 -o sync 挂载 ubifs(写入缓冲区被绕过)
关于linux - 系统关闭后嵌入式文件系统 UBIFS 中的数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34409726/