如何对 JFFS2 文件系统进行碎片整理

如何对 JFFS2 文件系统进行碎片整理

我在整个互联网上(包括在许多 StackExchange 论坛上)搜索过对 JFFS2 文件系统进行碎片整理的可行方法,但没有找到答案。

有问题的系统有一个 256MB 的 NAND 闪存部件。它被当作 MTD 设备访问,分为三个分区。第三个分区是根文件系统作为 JFFS2 文件系统存储的位置。问题是由于 JFFS2 垃圾收集器决定在最糟糕的时间运行,导致对根文件系统的写入具有不确定的性能。当发生这种情况时,产品会在垃圾收集器(和 pdflush)运行时挂起一段未知的时间。

更改文件系统不是一个选择。解决方案必须是可以在非工作时间运行的程序,运行后可实现更可预测的写入性能。现在我正在开发一个程序,它将尝试强制运行垃圾收集器,然后删除文件,希望所有释放的节点突然变得更容易使用,并使写入性能更好。

有什么想法吗?

答案1

尝试实现您自己的垃圾收集算法并尝试在安装时运行该算法,当您的写入空间不足时,再次单独启动垃圾收集线程。

如果将文件写为片段,这样会容易得多,当您擦除包含一半文件的块或页面时,您仍然可以将其写入某处并获取该页面以供将来使用。

棘手的部分是如何打开一个跨文件系统的多个片段的文件。

相关内容