快閃記憶體檔案系統

快閃記憶體檔案系統(英語:Flash file system),是一種為了在快閃記憶體裝置上存儲資料而設計的檔案系統,如JFFS2YAFFS等。隨著行動裝置的日漸增加,快閃記憶體的存儲能力增加以及價格下降,這類型的檔案系統變得越來越普遍。

電腦上通行的大部份檔案系統,都是針對碟盤存儲裝置設計的,應用到快閃記憶體上並不適合。一般的檔案系統,可以透過快閃記憶體轉換層(Flash Translation Layer,FTL)寫入快閃記憶體,但是它的缺點是寫入的效率較差。因此,設計快閃記憶體檔案系統仍然是有必要的。

系統概述

快閃記憶體裝置跟碟盤存儲裝置,在硬體上有不同的特性,例如:

  • 抺除區塊(Erasing blocks):快閃記憶體的區塊(block)在寫入之前,要先做抹除(erase)的動作。抺除區塊的時間可能會很長,因此最好利用系統閒置的時間來進行抹除。
  • 耗損平均技術(Wear leveling):快閃記憶體的區塊有抺寫次數的限制,重複抺除、寫入同一個單一區塊將會造成讀取速度變慢,甚至損壞而無法使用,因此快閃記憶體裝置的驅動程式需要將抺寫的區塊分散,以延長快閃記憶體壽命。用於快閃記憶體的檔案系統,也需要設計出平均寫入各區塊的功能。
  • 隨機存取(Random access):一般的硬碟,讀寫資料時,需要旋轉磁碟,以找到存放的磁區,因此,一般使用於磁碟的檔案系統,會作最佳化,以避免搜尋磁碟的作用。但是快閃記憶體可以隨機存取,沒有尋找延遲時間,因此不需要這個最佳化。

設計快閃記憶體檔案系統的基本概念是,當儲存資料需要更新時,檔案系統將會把新的複本寫入一個新的快閃記憶體區塊,將檔案指標重新指向,並在閒置時期將原有的區塊抺除。例如JFFS2YAFFS,都是這樣設計。

歷史

最早的快閃記憶體檔案系統之一,是微軟所研發的FFS2(Flash File System 2),在1990年代,它被應用在MS-DOS上。

在1994年間,PCMCIA組織,通過了快閃記憶體轉換層(Flash Translation Layer,FTL)的規格,允許Linear Flash裝置能夠看起來像是FAT磁碟裝置,但是仍然保有耗損平均技術的能力。應用相同概念,但為了避免專利爭議,資料光公司(Datalight)創造了FlashFXFlashFX Pro,作為商業產品。

Linux上實作的快閃記憶體轉換層,稱為MTD。MTD是一個硬體的抽象層,能夠讓快閃記憶體裝置看起來像是一種區塊裝置,因此能夠將既有的檔案系統,如FATExtXFS等,直接應用在快閃記憶體上。

範例

參考資料