這篇文章給大家介紹什么是Linux MTD設(shè)備文件系統(tǒng),內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)公司企業(yè)建站,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁中充分展現(xiàn),通過對(duì)客戶行業(yè)精準(zhǔn)市場調(diào)研,為客戶提供的解決方案。
文件系統(tǒng)是一種存儲(chǔ)和組織計(jì)算機(jī)數(shù)據(jù)的方法,它使得對(duì)其訪問和查找變得容易,文件系統(tǒng)使用文件和樹形目錄的抽象邏輯概念代替了硬盤和光盤等物理設(shè)備使用數(shù)據(jù)塊的概念,用戶使用文件系統(tǒng)來保存數(shù)據(jù)不必關(guān)心數(shù)據(jù)實(shí)際保存在硬盤(或者光盤)的地址為多少的數(shù)據(jù)塊上,只需要記住這個(gè)文件的所屬目錄和文件名。在寫入新數(shù)據(jù)之前,用戶不必關(guān)心硬盤上的那個(gè)塊地址沒有被使用,硬盤上的存儲(chǔ)空間管理(分配和釋放)功能由文件系統(tǒng)自動(dòng)完成,用戶只需要記住數(shù)據(jù)被寫入到了哪個(gè)文件中。
文件系統(tǒng)通常使用硬盤和光盤這樣的存儲(chǔ)設(shè)備,并維護(hù)文件在設(shè)備中的物理位置。但是,實(shí)際上文件系統(tǒng)也可能僅僅是一種訪問數(shù)據(jù)的界面而已,實(shí)際的數(shù)據(jù)是通過網(wǎng)絡(luò)協(xié)議(如NFS、SMB、9P等)提供的或者內(nèi)存上,甚至可能根本沒有對(duì)應(yīng)的文件(如proc文件系統(tǒng))。
嚴(yán)格地說,文件系統(tǒng)是一套實(shí)現(xiàn)了數(shù)據(jù)的存儲(chǔ)、分級(jí)組織、訪問和獲取等操作的抽象數(shù)據(jù)類型(Abstract data type)。
在嵌入式系統(tǒng)中,與文件系統(tǒng)相關(guān)的存儲(chǔ)設(shè)備包括硬盤、Flash存儲(chǔ)器等。Flash存儲(chǔ)器又分為Flash芯片設(shè)備(Raw Flash device,也叫MTD設(shè)備)和帶Flash控制器的設(shè)備(Flash Translation Layer device, FTL設(shè)備),兩者的關(guān)鍵區(qū)別是是否帶有Flash控制器,這也直接決定了文件系統(tǒng)分為不同的兩類。
其中MTD設(shè)備包括NOR Flash、NAND Flash等,F(xiàn)TL設(shè)備包括SD、eMMC、SSD、USB大容量存儲(chǔ)設(shè)備等。JFFS2、YAFFS2、UBIF、LogFS支持MTD設(shè)備,F(xiàn)AT、EXT3/4、XFS和Btrfs支持 FTL設(shè)備和硬盤(HDD)。MTD設(shè)備對(duì)應(yīng)的設(shè)備文件為/dev/mtd,F(xiàn)TL設(shè)備對(duì)應(yīng)的設(shè)備文件可為/dev/mtdblock。
JFFS意為“Journaling Flash File System”,該文件系統(tǒng)是瑞典Axis通信公司開發(fā)的一種基于Flash存儲(chǔ)器的日志文件系統(tǒng)。該公司于1999年在GNU/Linux上發(fā)行了第一版JFFS文件系統(tǒng),后來經(jīng)過Redhat公司的發(fā)展,發(fā)行了第二個(gè)版本的JFFS2。JFFS2 是一個(gè)日志結(jié)構(gòu)(log-structured)的文件系統(tǒng),將文件系統(tǒng)的數(shù)據(jù)和原數(shù)據(jù)以節(jié)點(diǎn)的形式存儲(chǔ)在閃存上。主要用于NOR型閃存,基于MTD驅(qū)動(dòng)層,特點(diǎn)是:可讀寫的、支持?jǐn)?shù)據(jù)壓縮的、基于哈希表的日志型文件系統(tǒng),并提供了崩潰/掉電安全保護(hù),提供“寫平衡”支持等。缺點(diǎn)主要是當(dāng)文件系統(tǒng)已滿或接近滿時(shí),因?yàn)槔占年P(guān)系而使JFFS2的運(yùn)行速度大大放慢。
JFFS2的缺點(diǎn)包括:掛載時(shí)間過長;對(duì)芯片存儲(chǔ)塊讀寫不均衡;擴(kuò)展性較差等。JFFS2不適合用于NAND閃存主要是因?yàn)镹AND閃存的容量一般較大,這樣導(dǎo)致JFFS2為維護(hù)日志節(jié)點(diǎn)所占用的內(nèi)存空間迅速增大,另外,JFFS2文件系統(tǒng)在掛載時(shí)需要掃描整個(gè)FLASH的內(nèi)容,以找出所有的日志節(jié)點(diǎn),建立文件結(jié)構(gòu),對(duì)于大容量的NAND閃存會(huì)耗費(fèi)大量時(shí)間。
YAFFS/YAFFS2是專為嵌入式系統(tǒng)使用NAND型閃存而設(shè)計(jì)的一種日志型文件系統(tǒng)。與JFFS2相比,它減少了一些功能(例如不支持?jǐn)?shù)據(jù)壓縮),所以速度更快,掛載時(shí)間很短,對(duì)內(nèi)存的占用較小。另外,它還是跨平臺(tái)的文件系統(tǒng)。
YAFFS/YAFFS2自帶NAND芯片的驅(qū)動(dòng),并且為嵌入式系統(tǒng)提供了直接訪問文件系統(tǒng)的API,用戶可以不使用Linux中的MTD與VFS,直接對(duì)文件系統(tǒng)操作。當(dāng)然,YAFFS也可與MTD驅(qū)動(dòng)程序配合使用。這方便了其跨平臺(tái)移植。
YAFFS與YAFFS2的主要區(qū)別在于,前者僅支持小頁(512 Bytes)NAND閃存,后者則可支持大頁(2KB) NAND閃存。同時(shí),YAFFS2在內(nèi)存空間占用、垃圾回收速度、讀/寫速度等方面均有大幅提升。
UBIFS(Unsorted Block Image File System)最早在2006年由IBM與Nokia的工程師Thomas Gleixner,Artem Bityutskiy所設(shè)計(jì),專門為了解決MTD(Memory Technology Device)設(shè)備所遇到的瓶頸。由于NAND Flash容量的暴漲,YAFFS等皆無法再去控制NAND Flash的空間。UBIFS通過子系統(tǒng)UBI處理與MTD device之間的動(dòng)作。與JFFS2一樣,UBIFS 建構(gòu)于MTD device 之上,因而與一般的block device不兼容。
UBIFS在設(shè)計(jì)與性能上均較YAFFS2、JFFS2更適合NAND Flash,例如:UBIFS 支持 write-back, 其寫入的數(shù)據(jù)會(huì)被cache, 直到有必要寫入時(shí)才寫到Flash,大地降低分散小區(qū)塊數(shù)量并提高I/O效率。UBIFS文件系統(tǒng)目錄存儲(chǔ)在Flash上,UBIFS mount時(shí)不需要scan整個(gè)Flash的數(shù)據(jù)來重新創(chuàng)建文件目錄。支持on-the-flight壓縮文件數(shù)據(jù),而且可選擇性壓縮部份文件。另外UBIFS使用日志(journal),可減少對(duì)Flash index的更新頻率。
當(dāng)前主流的選擇是UBIFS和YAFFS2,如果是非Linux系統(tǒng)可以選用移植性較好的YAFFS2。
關(guān)于什么是Linux MTD設(shè)備文件系統(tǒng)就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。