【问题标题】:Data loss in embedded file system UBIFS after shutdown of system系统关闭后嵌入式文件系统UBIFS中的数据丢失
【发布时间】:2015-12-29 13:04:13
【问题描述】:

每当我在 UBIFS 文件系统上运行我的应用程序并对任何文件执行写入操作时(前提是文件具有正确的读写模式),在关闭电源后立即打开,我看到写入文件的内容丢失了。文件大小为零。如果在 JFFS2 文件系统上执行相同的操作,则不会出现此问题。我已尝试使用同步命令,但仍然很少存在此问题。

例如:

我需要在一个名为 myfile 的文件中写入一些数据,在运行时我打开它并将一些数据写入“Hi..Hello..”(如果我打开文件并在写入操作后检查,数据写入正确),然后在关机/重启后,我发现内容“Hi..Hello..”不存在,文件大小为零字节。

注意:只有在关闭或重新启动系统后才会出现问题。

【问题讨论】:

  • 把你遇到的消息错误

标签: linux linux-kernel embedded-linux


【解决方案1】:

UBIFS 的同步频率较低。所以如果文件是重要的调用,在用户应用程序中你必须调用 fsync()。我建议您执行以下操作之一以防止 UBIFS 中的数据丢失:

  • 关键写入后调用fsync()
  • 使用 O_SYNC 标志打开文件
  • 使用 -o sync 装载 ubif(绕过写入缓冲区)

Why is my file empty after an unclean reboot?

Few notes with regards to synchronization

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多