文件系統是一種存儲和組織計算機數據的方法,它使得對其訪問和查找變得容易,文件系統使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設備使用數據塊的概念,用戶使用文件系統來保存數據不必關心數據實際保存在硬盤(或者光盤)的地址為多少的數據塊上,只需要記住這個文件的所屬目錄和文件名。在寫入新數據之前,用戶不必關心硬盤上的那個塊地址沒有被使用,硬盤上的存儲空間管理(分配和釋放)功能由文件系統自動完成,用戶只需要記住數據被寫入到了哪個文件中。
文件系統通常使用硬盤和光盤這樣的存儲設備,并維護文件在設備中的物理位置。但是,實際上文件系統也可能僅僅是一種訪問數據的界面而已,實際的數據是通過網絡協議(如NFS、SMB、9P等)提供的或者內存上,甚至可能根本沒有對應的文件(如proc文件系統)。
嚴格地說,文件系統是一套實現了數據的存儲、分級組織、訪問和獲取等操作的抽象數據類型(Abstract data type)。
在嵌入式系統中,與文件系統相關的存儲設備包括硬盤、Flash存儲器等。Flash存儲器又分為Flash芯片設備(Raw Flash device,也叫MTD設備)和帶Flash控制器的設備(Flash Translation Layer device, FTL設備),兩者的關鍵區別是是否帶有Flash控制器,這也直接決定了文件系統分為不同的兩類。
圖 2.1 MTD設備和FTL設備比較
其中MTD設備包括NOR Flash、NAND Flash等,FTL設備包括SD、eMMC、SSD、USB大容量存儲設備等。如圖 2.1和圖 2.2所示JFFS2、YAFFS2、UBIF、LogFS支持MTD設備,FAT、EXT3/4、XFS和Btrfs支持 FTL設備和硬盤(HDD)。MTD設備對應的設備文件為/dev/mtd,FTL設備對應的設備文件可為/dev/mtdblock。
圖 2.2 Linux文件系統軟件模塊圖
JFFS意為“Journaling Flash File System”,該文件系統是瑞典Axis通信公司開發的一種基于Flash存儲器的日志文件系統。該公司于1999年在GNU/Linux上發行了第一版JFFS文件系統,后來經過Redhat公司的發展,發行了第二個版本的JFFS2。JFFS2 是一個日志結構(log-structured)的文件系統,將文件系統的數據和原數據以節點的形式存儲在閃存上。主要用于NOR型閃存,基于MTD驅動層,特點是:可讀寫的、支持數據壓縮的、基于哈希表的日志型文件系統,并提供了崩潰/掉電安全保護,提供“寫平衡”支持等。缺點主要是當文件系統已滿或接近滿時,因為垃圾收集的關系而使JFFS2的運行速度大大放慢。
JFFS2的缺點包括:掛載時間過長;對芯片存儲塊讀寫不均衡;擴展性較差等。JFFS2不適合用于NAND閃存主要是因為NAND閃存的容量一般較大,這樣導致JFFS2為維護日志節點所占用的內存空間迅速增大,另外,JFFS2文件系統在掛載時需要掃描整個FLASH的內容,以找出所有的日志節點,建立文件結構,對于大容量的NAND閃存會耗費大量時間。擴展資料https://www.ibm.com/developerworks/cn/linux/l-jffs2/。
YAFFS/YAFFS2是專為嵌入式系統使用NAND型閃存而設計的一種日志型文件系統。與JFFS2相比,它減少了一些功能(例如不支持數據壓縮),所以速度更快,掛載時間很短,對內存的占用較小。另外,它還是跨平臺的文件系統。
YAFFS/YAFFS2自帶NAND芯片的驅動,并且為嵌入式系統提供了直接訪問文件系統的API,用戶可以不使用Linux中的MTD與VFS,直接對文件系統操作。當然,YAFFS也可與MTD驅動程序配合使用。這方便了其跨平臺移植。
YAFFS與YAFFS2的主要區別在于,前者僅支持小頁(512 Bytes)NAND閃存,后者則可支持大頁(2KB) NAND閃存。同時,YAFFS2在內存空間占用、垃圾回收速度、讀/寫速度等方面均有大幅提升。
UBIFS(Unsorted Block Image File System)最早在2006年由IBM與Nokia的工程師Thomas Gleixner,Artem Bityutskiy所設計,專門為了解決MTD(Memory Technology Device)設備所遇到的瓶頸。由于NAND Flash容量的暴漲,YAFFS等皆無法再去控制NAND Flash的空間。UBIFS通過子系統UBI處理與MTD device之間的動作。與JFFS2一樣,UBIFS 建構于MTD device 之上,因而與一般的block device不兼容。
UBIFS在設計與性能上均較YAFFS2、JFFS2更適合NAND Flash,例如:UBIFS 支持 write-back, 其寫入的數據會被cache, 直到有必要寫入時才寫到Flash,大地降低分散小區塊數量并提高I/O效率。UBIFS文件系統目錄存儲在Flash上,UBIFS mount時不需要scan整個Flash的數據來重新創建文件目錄。支持on-the-flight壓縮文件數據,而且可選擇性壓縮部份文件。另外UBIFS使用日志(journal),可減少對Flash index的更新頻率。擴展閱讀https://blog.csdn.net/younger_china/article/details/12651909。
當前主流的選擇是UBIFS和YAFFS2,如果是非Linux系統可以選用移植性較好的YAFFS2。具體的比較見圖 3.1和圖 3.2。擴展閱讀資料https://elinux.org/images/7/7e/ELC2009-FlashFS-Toshiba.pdf。
圖 3.1 MTD設備文件系統比較
圖 3.2 MTD設備文件系統選用建議
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
網站題目:嵌入式文件系統簡介(一)——LinuxMTD設備文件系-創新互聯
文章URL:http://vcdvsql.cn/article2/pheic.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、標簽優化、用戶體驗、網站策劃、網站維護、App開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯