Как на самом деле дефрагментировать файловую систему JFFS2

Как на самом деле дефрагментировать файловую систему JFFS2

Я искал по всему Интернету, в том числе на нескольких форумах StackExchange, работающий метод дефрагментации файловой системы JFFS2, но не нашел ответа.

Система, о которой идет речь, имеет флэш-часть NAND объемом 256 МБ. К ней обращаются как к устройству MTD, разделенному на три раздела. Третий раздел — это место, где корневая файловая система хранится как файловая система JFFS2. Проблема в том, что записи в корневую файловую систему имеют недетерминированную производительность из-за обычных проблем сборщика мусора JFFS2, решающего запуститься в неподходящее время. Когда это происходит, продукт зависает на неопределенный промежуток времени, пока работает сборщик мусора (и pdflush).

Изменение файловой системы не вариант. Решение должно быть таким, которое может работать в нерабочее время, и после запуска которого производительность записи будет более предсказуемой. Прямо сейчас я работаю над программой, которая попытается принудительно запустить сборщик мусора, а затем удалит файл в надежде, что все освобожденные узлы внезапно станут более доступными и запись будет выполняться лучше.

Мысли?

решение1

Попробуйте реализовать свой собственный алгоритм сборки мусора и запустить его во время монтирования, а когда у вас закончится место для записи, снова запустите отдельный поток сборки мусора.

Будет намного проще, если вы запишете свои файлы в виде фрагментов, так что когда вы удалите блок или страницу с половиной файла, вы все равно сможете записать ее куда-нибудь и получить страницу для будущего использования.

Сложность заключается в том, как открыть файл, содержащий несколько фрагментов, разбросанных по всей файловой системе.

Связанный контент