歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linuxflash文件系統剖析(3)

Linuxflash文件系統剖析(3)

日期:2017/2/25 10:36:11   编辑:Linux教程
Flash 文件系統
Linux 可以使用多種 flash 文件系統。下一小節將解釋每種文件系統的設計和優點。
Journaling Flash File System
Journaling Flash File System 是針對 Linux 的最早 flash 文件系統之一。 JFFS 是一種專門為 NOR flash 設備設計的日志結構文件系統。它非常獨特,能夠解決許多 flash 設備問題,但同時也導致一些新問題。
JFFS 將 flash 設備視為一種循環的塊日志。寫入 flash 的數據被寫到了空間的末尾,開始部分的塊則被收回,而兩者之間的空間是空閒的;當空間變少時,將執行垃圾收集。垃圾收集器將有效塊移動到日志的尾部,跳過無效或廢棄塊,並擦除它們。因此這種文件系統可以自動實現靜態和動態平均讀寫。這種架構的主要缺點是過於頻繁地執行擦除操作(而沒有使用最佳擦除策略),從而使設備迅速磨損。

掛載 JFFS 時結構細節將讀取到內存中,這將延緩掛載時間並消耗更多的內存。
Journaling Flash File System 2
盡管 JFFS 在早期非常有用,但是它的平均讀寫算法容易縮短 NOR flash 設備的壽命。因此重新設計了底層算法,去掉了循環日志。JFFS2 算法專門為 NAND flash 設備設計,並且改善壓縮性能。
在 JFFS2 中,flash 中的每個塊都是單獨處理的。JFFS2 通過維護塊列表來充分地對設備執行平均讀寫。clean 列表表示設備中的塊全部為有效節點。dirty 列表中的塊至少包含有一個廢棄節點。最後,free 列表包含曾經執行過擦除操作並且可以使用的塊。
垃圾收集算法通過合理的方法智能地判斷應該回收的塊。目前,這個算法根據概率從 clean 或 dirty 列表中選擇。dirty 列表的選擇概率為 99%(將有效內容移到另一個塊),而 clean 列表的選擇概率為 1%(將內容移到新的塊)。在這兩種情況中,對選擇的塊執行擦除操作,然後將其置於 free 列表。這允許垃圾收集器重用廢棄的塊,但是仍然圍繞 flash 移動數據,以支持靜態平均讀寫。
Yet Another Flash File System
YAFFS 是針對 NAND flash 開發的另一種 flash 文件系統。最早的版本(YAFFS)支持 512 字節頁面的 flash 設備,但是較新的版本(YAFFS2)支持頁面更大的新設備以及更大的 Write 限制。
大多數 flash 文件系統會對廢棄塊進行標記,但是 YAFFS2 使用單調遞增數字序列號額外地標記塊。在掛載期間掃描文件系統時,可以快速標識有效的 inode。YAFFS 保留在 RAM 中的樹以表示 flash 設備的塊結構,包括通過檢查點(checkpointing)實現快速掛載 — 這個過程將在正常卸載時將 RAM 樹結構保存到 flash 設備,以在掛載時快速讀取和恢復到 RAM。與其他 flash 文件系統相比,YAFFS2 的掛載時性能是它的最大優勢。
Copyright © Linux教程網 All Rights Reserved