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