資料介紹
您之前可能聽說過 Journaling Flash File System(JFFS)和 Yet Another Flash File System(YAFFS),但是您知道使用底層 flash 設備的文件系統意味著什么嗎?本文將向您介紹 Linux? 的 flash 文件系統,并探索它們如何通過平均讀寫(wear leveling)處理底層的可消耗設備(flash 部件),并鑒別各種不同的 flash 文件系統以及它們的基本設計。
固態驅動器當前非常流行,但是嵌入式系統很久以前就開始使用固態驅動器進行存儲。您可以看到 flash 系統被用于個人數字助理(PDA)、手機、MP3 播放器、數碼相機、USB flash 驅動(UFD),甚至筆記本電腦。很多情況下,商業設備的文件系統可以進行定制并且是專有的,但是它們會遇到以下挑戰。
基于 Flash 的文件系統形式多種多樣。本文將探討幾種只讀文件系統,并回顧目前可用的各種讀/寫文件系統及其工作原理。但是,讓我們先看看 flash 設備及其所面對的挑戰。
Flash 內存技術
Flash 內存(可以通過幾種不同的技術實現)是一種非揮發性內存,這意味著斷開電源之后其內容仍然保持下來。
兩種最常見的 flash 設備類型為:NOR 和 NAND。基于 NOR 的 flash 技術比較早,它支持較高的讀性能,但以降低容量為代價。NAND flash 提供更大容量的同時實現快速的寫擦性能。NAND 還需要更復雜的輸入/輸出(I/O)接口。
Flash 部件通常分為多個分區,允許同時進行多個操作(擦除某個分區的同時讀取另一個分區)。分區再劃分為塊(通常大小為 64KB 或 128KB)。使用分區的固件可以進一步對塊進行獨特的分段 — 例如,一個塊中有 512 字節的分段,但不包括元數據。
Flash 設備有一個常見的限制,即與其他存儲設備(如 RAM 磁盤)相比,它需要進行設備管理。flash 內存設備中惟一允許的 Write 操作是將 1 修改為 0。如果需要撤銷操作,那么必須擦除整個塊(將所有數據重置回狀態 1)。這意味著必須刪除該塊中的其他有效數據來實現持久化。NOR flash 內存通常一次可以編寫一個字節,而 NAND flash 內存必須編寫多個字節(通常為 512 字節)。
這兩種內存類型在擦除塊方面有所不同。每種類型都需要一個特殊的 Erase 操作,該操作可以涵蓋 flash 內存中的一個整塊。NOR 技術需要通過一個準備步驟將所有值清零,然后再開始 Erase 操作。Erase 是針對 flash 設備的特殊操作,非常耗費時間。擦除操作與電有關,它將整個塊的所有單元中的電子放掉。
NOR flash 設備通常需要花費幾秒時間來執行 Erase 操作,而 NAND 設備只需要幾毫秒。flash 設備的一個關鍵特性是可執行的 Erase 操作的數量。在 NOR 設備中,flash 內存中的每個塊可被擦除 100,000 次,而在 NAND flash 內存中可達到一百萬次。
Flash 內存面臨的挑戰
除了前面提到的一些限制以外,管理 flash 設備還面臨很多挑戰。三個最重大的挑戰分別是垃圾收集、管理壞塊和平均讀寫。
垃圾收集
垃圾收集 是一個回收無效塊的過程(無效塊中包含了一些無效數據)。回收過程包括將有效數據移動到新塊,然后擦除無效塊從而使它變為可用。如果文件系統的可用空間較少,那么通常將在后臺執行這一過程(或者根據需要執行)。
管理壞塊
用的時間長了,flash 設備就會出現壞塊,甚至在出廠時就會因出現壞塊而不能使用。如果 flash 操作(例如 Erase)失敗,或者 Write 操作無效(通過無效的錯誤校正代碼發現,Error Correction Code,ECC),那么說明出現了壞塊。
識別出壞塊后,將在 flash 內部將這些壞塊標記到一個壞塊表中。具體操作取決于設備,但是可以通過一組獨立的預留塊來(不同于普通數據塊管理)實現。對壞塊進行處理的過程 — 不管是出廠時就有還是在使用過程中出現 — 稱為壞塊管理。在某些情況下,可以通過一個內部微控制器在硬件中實現,因此對于上層文件系統是透明的。
平均讀寫
前面提到 flash 設備屬于耗損品:在變成壞塊以前,可以執行有限次數的反復的 Erase 操作(因此必須由壞塊管理進行標記)。平均讀寫算法能夠最大化 flash 的壽命。平均讀寫有兩種形式:動態平均讀寫 和靜態平均讀寫 。
動態平均讀寫解決了塊的 Erase 周期的次數限制。動態平均讀寫算法并不是隨機使用可用的塊,而是平均使用塊,因此,每個塊都獲得了相同的使用機會。靜態平均讀寫算法解決了一個更有趣的問題。除了最大化 Erase 周期的次數外,某些 flash 設備在兩個 Erase 周期之間還受到最大化 Read 周期的影響。這意味著如果數據在塊中存儲的時間太長并且被讀了很多次,數據會逐漸消耗直至丟失。靜態平均讀寫算法解決了這一問題,因為它可以定期將數據移動到新塊。
系統架構
到目前為止,我已經討論了 flash 設備及其面臨的基本挑戰。現在,讓我們看看這些設備如何組合成為一個分層架構的一部分(參加圖 1)。架構的頂層是虛擬文件系統(VFS),它為高級應用程序提供通用接口。VFS 下面是 flash 文件系統(將在下節介紹)。接下來是 Flash 轉換層(Flash Translation Layer,FTL),它整體管理 flash 設備,包括從底層 flash 設備分配塊、地址轉換、動態平均讀寫和垃圾收集。在某些 flash 設備中,可以在硬件中實現一部分 FTL 。
圖 1. flash 系統的基本架構
Linux 內核使用內存技術設備(Memory Technology Device,MTD)接口,這是針對 flash 系統的通用接口。MTD 可以自動檢測 flash 設備總線的寬度以及實現總線寬度所需設備的數量。
固態驅動器當前非常流行,但是嵌入式系統很久以前就開始使用固態驅動器進行存儲。您可以看到 flash 系統被用于個人數字助理(PDA)、手機、MP3 播放器、數碼相機、USB flash 驅動(UFD),甚至筆記本電腦。很多情況下,商業設備的文件系統可以進行定制并且是專有的,但是它們會遇到以下挑戰。
基于 Flash 的文件系統形式多種多樣。本文將探討幾種只讀文件系統,并回顧目前可用的各種讀/寫文件系統及其工作原理。但是,讓我們先看看 flash 設備及其所面對的挑戰。
Flash 內存技術
Flash 內存(可以通過幾種不同的技術實現)是一種非揮發性內存,這意味著斷開電源之后其內容仍然保持下來。
兩種最常見的 flash 設備類型為:NOR 和 NAND。基于 NOR 的 flash 技術比較早,它支持較高的讀性能,但以降低容量為代價。NAND flash 提供更大容量的同時實現快速的寫擦性能。NAND 還需要更復雜的輸入/輸出(I/O)接口。
Flash 部件通常分為多個分區,允許同時進行多個操作(擦除某個分區的同時讀取另一個分區)。分區再劃分為塊(通常大小為 64KB 或 128KB)。使用分區的固件可以進一步對塊進行獨特的分段 — 例如,一個塊中有 512 字節的分段,但不包括元數據。
Flash 設備有一個常見的限制,即與其他存儲設備(如 RAM 磁盤)相比,它需要進行設備管理。flash 內存設備中惟一允許的 Write 操作是將 1 修改為 0。如果需要撤銷操作,那么必須擦除整個塊(將所有數據重置回狀態 1)。這意味著必須刪除該塊中的其他有效數據來實現持久化。NOR flash 內存通常一次可以編寫一個字節,而 NAND flash 內存必須編寫多個字節(通常為 512 字節)。
這兩種內存類型在擦除塊方面有所不同。每種類型都需要一個特殊的 Erase 操作,該操作可以涵蓋 flash 內存中的一個整塊。NOR 技術需要通過一個準備步驟將所有值清零,然后再開始 Erase 操作。Erase 是針對 flash 設備的特殊操作,非常耗費時間。擦除操作與電有關,它將整個塊的所有單元中的電子放掉。
NOR flash 設備通常需要花費幾秒時間來執行 Erase 操作,而 NAND 設備只需要幾毫秒。flash 設備的一個關鍵特性是可執行的 Erase 操作的數量。在 NOR 設備中,flash 內存中的每個塊可被擦除 100,000 次,而在 NAND flash 內存中可達到一百萬次。
Flash 內存面臨的挑戰
除了前面提到的一些限制以外,管理 flash 設備還面臨很多挑戰。三個最重大的挑戰分別是垃圾收集、管理壞塊和平均讀寫。
垃圾收集
垃圾收集 是一個回收無效塊的過程(無效塊中包含了一些無效數據)。回收過程包括將有效數據移動到新塊,然后擦除無效塊從而使它變為可用。如果文件系統的可用空間較少,那么通常將在后臺執行這一過程(或者根據需要執行)。
管理壞塊
用的時間長了,flash 設備就會出現壞塊,甚至在出廠時就會因出現壞塊而不能使用。如果 flash 操作(例如 Erase)失敗,或者 Write 操作無效(通過無效的錯誤校正代碼發現,Error Correction Code,ECC),那么說明出現了壞塊。
識別出壞塊后,將在 flash 內部將這些壞塊標記到一個壞塊表中。具體操作取決于設備,但是可以通過一組獨立的預留塊來(不同于普通數據塊管理)實現。對壞塊進行處理的過程 — 不管是出廠時就有還是在使用過程中出現 — 稱為壞塊管理。在某些情況下,可以通過一個內部微控制器在硬件中實現,因此對于上層文件系統是透明的。
平均讀寫
前面提到 flash 設備屬于耗損品:在變成壞塊以前,可以執行有限次數的反復的 Erase 操作(因此必須由壞塊管理進行標記)。平均讀寫算法能夠最大化 flash 的壽命。平均讀寫有兩種形式:動態平均讀寫 和靜態平均讀寫 。
動態平均讀寫解決了塊的 Erase 周期的次數限制。動態平均讀寫算法并不是隨機使用可用的塊,而是平均使用塊,因此,每個塊都獲得了相同的使用機會。靜態平均讀寫算法解決了一個更有趣的問題。除了最大化 Erase 周期的次數外,某些 flash 設備在兩個 Erase 周期之間還受到最大化 Read 周期的影響。這意味著如果數據在塊中存儲的時間太長并且被讀了很多次,數據會逐漸消耗直至丟失。靜態平均讀寫算法解決了這一問題,因為它可以定期將數據移動到新塊。
系統架構
到目前為止,我已經討論了 flash 設備及其面臨的基本挑戰。現在,讓我們看看這些設備如何組合成為一個分層架構的一部分(參加圖 1)。架構的頂層是虛擬文件系統(VFS),它為高級應用程序提供通用接口。VFS 下面是 flash 文件系統(將在下節介紹)。接下來是 Flash 轉換層(Flash Translation Layer,FTL),它整體管理 flash 設備,包括從底層 flash 設備分配塊、地址轉換、動態平均讀寫和垃圾收集。在某些 flash 設備中,可以在硬件中實現一部分 FTL 。
圖 1. flash 系統的基本架構
Linux 內核使用內存技術設備(Memory Technology Device,MTD)接口,這是針對 flash 系統的通用接口。MTD 可以自動檢測 flash 設備總線的寬度以及實現總線寬度所需設備的數量。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 手把手教你在flash上移植fatfs文件系統(含實時操作系統)
- Nand Flash文件系統解決方案
- SPI FLASH LittleFS文件系統例程資料免費下載 35次下載
- SPI—外部FLASH文件系統 5次下載
- 《Linux設備驅動開發詳解》第5章、Linux文件系統與設備文件系統 0次下載
- 基于嵌入式Linux的Flash文件系統的實時性能研究_孫曉榮 0次下載
- fat文件系統筆記 4次下載
- Linux虛擬文件系統實現技術探討 32次下載
- 基于VxWorks的文件系統的研究與實現
- 基于CC CCS 的Flash 文件系統設計
- 車載MP3中Flash文件系統的設計與應用
- 嵌入式系統中的線性Flash 文件系統設計
- 車載MP3中Flash文件系統的設計與應用
- Linux文件系統課程 0次下載
- 嵌入式系統中的Flash文件系統
- 如何修改buildroot和debian文件系統 254次閱讀
- Linux 文件系統層的主要結構 872次閱讀
- C程序設計基礎-文件系統 673次閱讀
- 如何制作ubuntu20.04的文件系統 3488次閱讀
- F2FS文件系統的數據結構 3728次閱讀
- 深入剖析Linux文件系統的架構 973次閱讀
- Linux文件系統的類型及工作原理 564次閱讀
- 深入剖析Linux內核虛擬文件系統 2952次閱讀
- 什么是分布式文件系統 3990次閱讀
- 基于Buildroot的Linux系統構建之根文件系統 2478次閱讀
- 使用RT-Thread文件系統 8484次閱讀
- Xilinx Zynq制作修改根文件系統的方法 3436次閱讀
- 文件系統是什么?淺談EXT文件系統歷史 5548次閱讀
- debian安裝zfs文件系統 1w次閱讀
- 玩轉Linux,先把文件系統搞懂 2009次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 2開關電源基礎知識
- 5.73 MB | 6次下載 | 免費
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設計
- 0.60 MB | 3次下載 | 免費
- 5基于FPGA的光纖通信系統的設計與實現
- 0.61 MB | 2次下載 | 免費
- 6基于FPGA的C8051F單片機開發板設計
- 0.70 MB | 2次下載 | 免費
- 751單片機窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費
- 8基于51單片機的RGB調色燈程序仿真
- 0.86 MB | 2次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33564次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21548次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537796次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191185次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183278次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多