我在 Internet 上(包括許多 StackExchange 論壇)搜尋了 JFFS2 檔案系統進行碎片整理的可行方法,但找不到答案。
該系統有一個 256MB NAND 快閃記憶體部分。它作為 MTD 設備進行訪問,分為三個分區。第三個分區是根檔案系統儲存為 JFFS2 檔案系統的位置。問題在於,由於 JFFS2 垃圾收集器決定在最糟糕的時間運行的常見問題,對根檔案系統的寫入具有不確定的效能。當發生這種情況時,產品會在垃圾收集器(和 pdflush)運作時掛起一段未知的時間。
更改檔案系統不是一個選項。此解決方案需要能夠在非工作時間運行,運行後會產生更可預測的寫入效能。現在我正在開發一個程序,該程序將嘗試強制垃圾收集器運行,然後刪除文件,希望所有釋放的節點突然變得更容易使用並使寫入性能更好。
想法?
答案1
嘗試實作您自己的垃圾收集演算法,並嘗試在安裝時執行演算法,當您的寫入空間不足時,再次單獨啟動垃圾收集執行緒。
如果您將文件寫為片段,那麼當您擦除其中包含一半文件的區塊或頁面時,您仍然可以將其寫入某處並獲取該頁面以供將來使用,這會容易得多。
棘手的部分是如何打開跨文件系統的多個片段的文件。