YAFFS (Yet Another Flash File System) 是特別依 NAND Flash 特性設計的檔案系統,針對 NAND 可能壞掉的情況使用日誌、錯誤更正和 verification 技術來強化穩定性。
YAFFS1 設計時是舊的 NAND Flash,其 eraseblock 是 512-byte 外加 16-byte OOB,利用通常每個 page 允許 2 或 3 次寫入 cycles, i.e. 透過寫一個在 specific spare 區域的 byte 來標記 dirty pages。
新的 NAND Flash 的 eraseblock 較大,是 2048-byte 外加 64-byte OOB。並且限制在同一個 block 裡的 page 只能依序寫入,且只能寫一次。所以演進為 YAFFS2,主要差別是內部架構不固定為 512-byte,且在每個 page 放一個 block 序號。如此一來,舊的 page 可邏輯上覆蓋而不違反 "write once" 規則。
YAFFS 是一個強健的 log-structured file system,視 data integrity 為高優先權。另一個 YAFFS 目標是高效能。
跟 JFFS2 比較
適用於 NOR Flash 的檔案系統使用了 NAND Flash 不需要的機制,而 NAND 需要一些 NOR Flash 不需要的機制。例如 garbage collection 的效能取決於 erase time,因為 NOR 的 erase 很慢,需要較複雜的 garbage collection 的策略,而 NAND 則不必。另外,NAND 有 bad block 的問題,NOR 則無。
跟 JFFS2 比較
適用於 NOR Flash 的檔案系統使用了 NAND Flash 不需要的機制,而 NAND 需要一些 NOR Flash 不需要的機制。例如 garbage collection 的效能取決於 erase time,因為 NOR 的 erase 很慢,需要較複雜的 garbage collection 的策略,而 NAND 則不必。另外,NAND 有 bad block 的問題,NOR 則無。
參考文獻
- http://esslab.tw/wiki/index.php/YAFFS (相當詳細)
- YAFFS [Wikipedia]
- YAFFS talk — Slides for "YAFFS - A NAND-flash filesystem" presented at FOSDEM 2004 (February 23rd).
- YAFFS2 跟 YAFFS1 比較、跟 JFFS2 效能比較
沒有留言:
張貼留言