FLASH閃存文件系統研究

FLASH閃存文件系統研究
,轉自中國存儲網,原文鏈接:http://www.chinastor.com/a/jishu/FS/0112110212015.html
什麼是FLASH閃存文件系統?

在嵌入式領域,FLASH是一種常用的存儲介質,由於其特殊的硬件結構,所以普通的文件系統如ext2,ext3等都不適合在其上使用,於是就出現了專門針對FLASH的文件系統,比較常用的有jffs2,yaffs2,logfs,ubifs。

閃存文件系統(Flash file system),是一種爲了在閃存設備上存儲數據而設計的文件系統。隨着移動設備的日漸增加,閃存的存儲能力增加以及價格下降,這類型的文件系統變得越來越普遍。

閃存文件系統介紹

• JFFS2 : Journaling Flash File System version 2

(David Woodhouse)

– Has been integrated in Linux kernel since 2001.

– Commonly used for low volume flash devices.

– Compression is supported.

• YAFFS2 : Yet Another Flash File System version 2

(Charles Manning)

– YAFFS is the first file system designed specifically for NAND (since 2001).

– Version 2 supports 2KB large page NAND (since 2005).

– Compression is not supported.

• LogFS : Log Flash File System

(Jörn Engel)

– Mounting time is short (since 2005)

– Under development (Needs more testing on large devices)

– User data is not compressed, while meta data is compressed.

(Jörn said that user data is also compressed in ELC2009, but we could not see it in our

testing. We used the default settings.)

• UBIFS : Unsorted Block Image File System

(Artem Bityutskiy, Adrian Hunter)

– Mainlined in 2.6.27 in Oct 2008.

– Works on top of UBI volumes.

– Compression is supported.

閃存設備跟碟盤存儲設備,在硬件上有不同的特性:

抺除區塊(Erasing blocks):閃存的區塊(block)在寫入之前,要先做抹除(erase)的動作。抺除區塊的時間可能會很長,因此最好利用系統閒置的時間來進行抹除。

耗損平均技術(Wear leveling):閃存的區塊有抺寫次數的限制,重複抺除、寫入同一個單一區塊將會造成讀取速度變慢,甚至損壞而無法使用,因此閃存設備的驅動程序需要將抺寫的區塊分散,以延長閃存壽命。用於閃存的文件系統,也需要設計出平均寫入各區塊的功能。

隨機存取(Random access):一般的硬盤,讀寫數據時,需要旋轉磁盤,以找到存放的扇區,因此,一般使用於磁盤的文件系統,會作優化,以避免搜索磁盤的作用。但是閃存可以隨機存取,沒有查找延遲時間,因此不需要這個優化。

設計閃存文件系統的基本概念是,當存儲數據需要更新時,文件系統將會把新的複本寫入一個新的閃存區塊,將文件指針重新指向,並在閒置時期將原有的區塊抺除。例如JFFS2與YAFFS,都是這樣設計。

最早的閃存文件系統之一,是微軟所研發的 FFS2(Flash File System 2),在1990年代,它被應用在MS-DOS上。

在1994年間,PCMCIA組織,通過了閃存轉換層(Flash Translation Layer,FTL)的規格,允許Linear Flash設備能夠看起來像是FAT磁盤設備,但是仍然保有耗損平均技術的能力。應用相同概念,但爲了避免專利爭議,數據光公司(Datalight)創造了 FlashFX與 FlashFX Pro,作爲商業產品。

在Linux上實現的閃存轉換層,稱爲MTD。MTD是一個硬件的抽象層,能夠讓閃存設備看起來像是一種區塊設備,因此能夠將既有的文件系統,如FAT、Ext、XFS等,直接應用在閃存上。

本文是對FLASH閃存文件系統的一個概括性介紹,讓大家瞭解什麼是閃存文件系統,在哪些領域應用,接下來中國存儲網的編輯會分別介紹這些閃存文件系統(jffs2,yaffs2,logfs,ubifs)的架構及工作原理。《UBIFS閃存文件系統詳解篇》《JFFS2文件系統內部工作機制詳解及優勢和不足分析》
,轉自中國存儲網,原文鏈接:http://www.chinastor.com/a/jishu/FS/0112110212015.html
什麼是FLASH閃存文件系統?

在嵌入式領域,FLASH是一種常用的存儲介質,由於其特殊的硬件結構,所以普通的文件系統如ext2,ext3等都不適合在其上使用,於是就出現了專門針對FLASH的文件系統,比較常用的有jffs2,yaffs2,logfs,ubifs。

閃存文件系統(Flash file system),是一種爲了在閃存設備上存儲數據而設計的文件系統。隨着移動設備的日漸增加,閃存的存儲能力增加以及價格下降,這類型的文件系統變得越來越普遍。

閃存文件系統介紹

• JFFS2 : Journaling Flash File System version 2

(David Woodhouse)

– Has been integrated in Linux kernel since 2001.

– Commonly used for low volume flash devices.

– Compression is supported.

• YAFFS2 : Yet Another Flash File System version 2

(Charles Manning)

– YAFFS is the first file system designed specifically for NAND (since 2001).

– Version 2 supports 2KB large page NAND (since 2005).

– Compression is not supported.

• LogFS : Log Flash File System

(Jörn Engel)

– Mounting time is short (since 2005)

– Under development (Needs more testing on large devices)

– User data is not compressed, while meta data is compressed.

(Jörn said that user data is also compressed in ELC2009, but we could not see it in our

testing. We used the default settings.)

• UBIFS : Unsorted Block Image File System

(Artem Bityutskiy, Adrian Hunter)

– Mainlined in 2.6.27 in Oct 2008.

– Works on top of UBI volumes.

– Compression is supported.

閃存設備跟碟盤存儲設備,在硬件上有不同的特性:

抺除區塊(Erasing blocks):閃存的區塊(block)在寫入之前,要先做抹除(erase)的動作。抺除區塊的時間可能會很長,因此最好利用系統閒置的時間來進行抹除。

耗損平均技術(Wear leveling):閃存的區塊有抺寫次數的限制,重複抺除、寫入同一個單一區塊將會造成讀取速度變慢,甚至損壞而無法使用,因此閃存設備的驅動程序需要將抺寫的區塊分散,以延長閃存壽命。用於閃存的文件系統,也需要設計出平均寫入各區塊的功能。

隨機存取(Random access):一般的硬盤,讀寫數據時,需要旋轉磁盤,以找到存放的扇區,因此,一般使用於磁盤的文件系統,會作優化,以避免搜索磁盤的作用。但是閃存可以隨機存取,沒有查找延遲時間,因此不需要這個優化。

設計閃存文件系統的基本概念是,當存儲數據需要更新時,文件系統將會把新的複本寫入一個新的閃存區塊,將文件指針重新指向,並在閒置時期將原有的區塊抺除。例如JFFS2與YAFFS,都是這樣設計。

最早的閃存文件系統之一,是微軟所研發的 FFS2(Flash File System 2),在1990年代,它被應用在MS-DOS上。

在1994年間,PCMCIA組織,通過了閃存轉換層(Flash Translation Layer,FTL)的規格,允許Linear Flash設備能夠看起來像是FAT磁盤設備,但是仍然保有耗損平均技術的能力。應用相同概念,但爲了避免專利爭議,數據光公司(Datalight)創造了 FlashFX與 FlashFX Pro,作爲商業產品。

在Linux上實現的閃存轉換層,稱爲MTD。MTD是一個硬件的抽象層,能夠讓閃存設備看起來像是一種區塊設備,因此能夠將既有的文件系統,如FAT、Ext、XFS等,直接應用在閃存上。

本文是對FLASH閃存文件系統的一個概括性介紹,讓大家瞭解什麼是閃存文件系統,在哪些領域應用,接下來中國存儲網的編輯會分別介紹這些閃存文件系統(jffs2,yaffs2,logfs,ubifs)的架構及工作原理。《UBIFS閃存文件系統詳解篇》《JFFS2文件系統內部工作機制詳解及優勢和不足分析》
,轉自中國存儲網,原文鏈接:http://www.chinastor.com/a/jishu/FS/0112110212015.html
什麼是FLASH閃存文件系統?

在嵌入式領域,FLASH是一種常用的存儲介質,由於其特殊的硬件結構,所以普通的文件系統如ext2,ext3等都不適合在其上使用,於是就出現了專門針對FLASH的文件系統,比較常用的有jffs2,yaffs2,logfs,ubifs。

閃存文件系統(Flash file system),是一種爲了在閃存設備上存儲數據而設計的文件系統。隨着移動設備的日漸增加,閃存的存儲能力增加以及價格下降,這類型的文件系統變得越來越普遍。

閃存文件系統介紹

• JFFS2 : Journaling Flash File System version 2

(David Woodhouse)

– Has been integrated in Linux kernel since 2001.

– Commonly used for low volume flash devices.

– Compression is supported.

• YAFFS2 : Yet Another Flash File System version 2

(Charles Manning)

– YAFFS is the first file system designed specifically for NAND (since 2001).

– Version 2 supports 2KB large page NAND (since 2005).

– Compression is not supported.

• LogFS : Log Flash File System

(Jörn Engel)

– Mounting time is short (since 2005)

– Under development (Needs more testing on large devices)

– User data is not compressed, while meta data is compressed.

(Jörn said that user data is also compressed in ELC2009, but we could not see it in our

testing. We used the default settings.)

• UBIFS : Unsorted Block Image File System

(Artem Bityutskiy, Adrian Hunter)

– Mainlined in 2.6.27 in Oct 2008.

– Works on top of UBI volumes.

– Compression is supported.

閃存設備跟碟盤存儲設備,在硬件上有不同的特性:

抺除區塊(Erasing blocks):閃存的區塊(block)在寫入之前,要先做抹除(erase)的動作。抺除區塊的時間可能會很長,因此最好利用系統閒置的時間來進行抹除。

耗損平均技術(Wear leveling):閃存的區塊有抺寫次數的限制,重複抺除、寫入同一個單一區塊將會造成讀取速度變慢,甚至損壞而無法使用,因此閃存設備的驅動程序需要將抺寫的區塊分散,以延長閃存壽命。用於閃存的文件系統,也需要設計出平均寫入各區塊的功能。

隨機存取(Random access):一般的硬盤,讀寫數據時,需要旋轉磁盤,以找到存放的扇區,因此,一般使用於磁盤的文件系統,會作優化,以避免搜索磁盤的作用。但是閃存可以隨機存取,沒有查找延遲時間,因此不需要這個優化。

設計閃存文件系統的基本概念是,當存儲數據需要更新時,文件系統將會把新的複本寫入一個新的閃存區塊,將文件指針重新指向,並在閒置時期將原有的區塊抺除。例如JFFS2與YAFFS,都是這樣設計。

最早的閃存文件系統之一,是微軟所研發的 FFS2(Flash File System 2),在1990年代,它被應用在MS-DOS上。

在1994年間,PCMCIA組織,通過了閃存轉換層(Flash Translation Layer,FTL)的規格,允許Linear Flash設備能夠看起來像是FAT磁盤設備,但是仍然保有耗損平均技術的能力。應用相同概念,但爲了避免專利爭議,數據光公司(Datalight)創造了 FlashFX與 FlashFX Pro,作爲商業產品。

在Linux上實現的閃存轉換層,稱爲MTD。MTD是一個硬件的抽象層,能夠讓閃存設備看起來像是一種區塊設備,因此能夠將既有的文件系統,如FAT、Ext、XFS等,直接應用在閃存上。

本文是對FLASH閃存文件系統的一個概括性介紹,讓大家瞭解什麼是閃存文件系統,在哪些領域應用,接下來中國存儲網的編輯會分別介紹這些閃存文件系統(jffs2,yaffs2,logfs,ubifs)的架構及工作原理。《UBIFS閃存文件系統詳解篇》《JFFS2文件系統內部工作機制詳解及優勢和不足分析》
,轉自中國存儲網,原文鏈接:http://www.chinastor.com/a/jishu/FS/0112110212015.html
什麼是FLASH閃存文件系統?
,轉自中國存儲網,原文鏈接:http://www.chinastor.com/a/jishu/FS/0112110212015.html
什麼是FLASH閃存文件系統?

在嵌入式領域,FLASH是一種常用的存儲介質,由於其特殊的硬件結構,所以普通的文件系統如ext2,ext3等都不適合在其上使用,於是就出現了專門針對FLASH的文件系統,比較常用的有jffs2,yaffs2,logfs,ubifs。

閃存文件系統(Flash file system),是一種爲了在閃存設備上存儲數據而設計的文件系統。隨着移動設備的日漸增加,閃存的存儲能力增加以及價格下降,這類型的文件系統變得越來越普遍。

閃存文件系統介紹

• JFFS2 : Journaling Flash File System version 2

(David Woodhouse)

– Has been integrated in Linux kernel since 2001.

– Commonly used for low volume flash devices.

– Compression is supported.

• YAFFS2 : Yet Another Flash File System version 2

(Charles Manning)

– YAFFS is the first file system designed specifically for NAND (since 2001).

– Version 2 supports 2KB large page NAND (since 2005).

– Compression is not supported.

• LogFS : Log Flash File System

(Jörn Engel)

– Mounting time is short (since 2005)

– Under development (Needs more testing on largedevices)

– User data is not compressed, while meta data is compressed.

(Jörn said that user data is also compressed in ELC2009, but we could not seeit in our

testing. We used the default settings.)

• UBIFS : Unsorted Block Image File System

(Artem Bityutskiy, Adrian Hunter)

– Mainlined in 2.6.27 in Oct 2008.

– Works on top of UBI volumes.

– Compression is supported.

閃存設備跟碟盤存儲設備,在硬件上有不同的特性:

抺除區塊(Erasing blocks):閃存的區塊(block)在寫入之前,要先做抹除(erase)的動作。抺除區塊的時間可能會很長,因此最好利用系統閒置的時間來進行抹除。

耗損平均技術(Wear leveling):閃存的區塊有抺寫次數的限制,重複抺除、寫入同一個單一區塊將會造成讀取速度變慢,甚至損壞而無法使用,因此閃存設備的驅動程序需要將抺寫的區塊分散,以延長閃存壽命。用於閃存的文件系統,也需要設計出平均寫入各區塊的功能。

隨機存取(Random access):一般的硬盤,讀寫數據時,需要旋轉磁盤,以找到存放的扇區,因此,一般使用於磁盤的文件系統,會作優化,以避免搜索磁盤的作用。但是閃存可以隨機存取,沒有查找延遲時間,因此不需要這個優化。

設計閃存文件系統的基本概念是,當存儲數據需要更新時,文件系統將會把新的複本寫入一個新的閃存區塊,將文件指針重新指向,並在閒置時期將原有的區塊抺除。例如JFFS2與YAFFS,都是這樣設計。

最早的閃存文件系統之一,是微軟所研發的 FFS2(FlashFile System 2),在1990年代,它被應用在MS-DOS上。

在1994年間,PCMCIA組織,通過了閃存轉換層(Flash Translation Layer,FTL)的規格,允許Linear Flash設備能夠看起來像是FAT磁盤設備,但是仍然保有耗損平均技術的能力。應用相同概念,但爲了避免專利爭議,數據光公司(Datalight)創 造了 FlashFX與 FlashFX Pro,作爲商業產品。

在Linux上實現的閃存轉換層,稱爲MTD。MTD是一個硬件的抽象層,能夠讓閃存設備看起來像是一種區塊設備,因此能夠將既有的文件系統,如FAT、Ext、XFS等,直接應用在閃存上。

MTD全稱是Memory Technology Device,內存技術設備. 實際上是一個虛擬設備驅動層,類似Virtual File System。它提供標準API給那些操作Raw Flash的device driver。那麼Flash device和普通的Block device的區別是什麼呢?
    普通的BLD只有兩種操作:read和write
    而Flash Device有三種操作:read,write和erase,另外,還需要一種wear leveling算法來做損耗均衡
這裏要重點指出的是:
SD/MMC卡、CF(Compact Flash)卡、USB Flash等並不是MTD設備,因爲這些設備中已經有一個內置的Flash Translation Layer,這個layer處理erase、wear leveling事情了(這個TL應該是固件中支持的)。所以這些設備直接當做普通的Block Device使用


本文是對FLASH閃存文件系統的一個概括性介紹,讓大家瞭解什麼是閃存文件系統,在哪些領域應用,接下來中國存儲網的編輯會分別介紹這些閃存文件系統(jffs2,yaffs2,logfs,ubifs)的架構及工作原理。《UBIFS閃存文件系統詳解篇》《JFFS2文件系統內部工作機制詳解及優勢 和不足分析》


發佈了24 篇原創文章 · 獲贊 53 · 訪問量 100萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章