JFFS是由瑞典的Axis Communications Ab公司開發的(1999,以GNU發布),針對flash裝置的特性為嵌入式裝置開發的.(我邊上的兄弟曾想去那裡作畢業設計)
JFFS1和JFFS2的設計中都考慮到了FLASH的特性特別是滿足了上述3個條件,包括了記憶體回收,壞塊管理等功能. 這兩種檔案系統屬於LFS(Log-structured File System).這種檔案系統的特點是一旦資料出錯,容易恢複,但是系統運行是需要佔用一定的記憶體空間,這些空間就是用來儲存”log”的.
JFFS的缺點就是載入時間太長,因為每次載入都需要將FLASH上的所有節點(JFFS的儲存單位)到記憶體,這樣也佔用了可觀的記憶體空間.除此之外,”circle log”設計使得在對檔案資料進行所有的資料都會被重寫,這樣造成不必要的時間,同時也會減少FLASH的壽命.
JFFS2對JFFS1作了些改進,比如所需的記憶體變少了,記憶體回收機制也最佳化了.
針對JFFS1,JFFS2的缺點,JFFS3出現了.
YAFFS1 & YAFFS2
“Yet Another Flash File System”作者是新西蘭的Charles Manning為一家名叫Alpha one 的公司(http://www.aleph1.co.uk/)設計的,是第一個為NAND Flash設計的檔案系統.共兩個版本YAFFS1 和YAFFS2.
YAFFS1支援512Bytes/Page的NAND Flash;後者YAFFS2支援2kBytes/Page的NAND Flash. YAFFS檔案系統也屬於LFS.
跟其他檔案系統比較,它具有更好的可移植性,甚至可以使用在沒有作業系統的裝置上(called “YAFFS/Direct”). YAFFS採用模組化設計,雖然最初是用在linux系統上的,但是也已經移植到其他系統比如wince.
還有個突出的優點是它在mount的時候需要很少的記憶體.(如果是小頁—512byte/page,每1MByte NAND大約需要4KBytes記憶體;大頁需要大概1KBytes RAM/1MByte NAND)
JFFS與YAFFS比較,兩者各有長處. 一般來說,對於小於64MBytes的NAND Flash,可以選用JFFS;如果超過64MBytes,用YAFFS比較合適.
http://www.yaffs.net/yaffs-internals
http://www.yaffs.net/yaffs-direct-user-guide