Cramfs、JFFS2、YAFFS2的全面对比
Cramfs、JFFS2、YAFFS2的全面對(duì)比? http://blog.csdn.net/daofengdeba/article/details/7721340
由于嵌入式系統(tǒng)自身存在一些特殊要求,使得一些傳統(tǒng)的文件系統(tǒng)(如FAT、EXT2等) 并不十分適合。專用的嵌入式文件系統(tǒng)應(yīng)有一些自身的特性,如文件系統(tǒng)面對(duì)的儲(chǔ)存介質(zhì)特殊性、文件系統(tǒng)應(yīng)具有的跨平臺(tái)的安全性,以及整個(gè)系統(tǒng)的即時(shí)性等。本文介紹了3種源碼開(kāi)放的嵌入式文件系統(tǒng)Cramfs、JFFS2、YAFFS2,詳細(xì)分析比較了這3種文件系統(tǒng)的主要性能,并根據(jù)分析結(jié)果指出了各自的適用領(lǐng)域。
Cramfs、JFFS2、YAFFS2是3種性能優(yōu)越,專用于嵌入式系統(tǒng)的文件系統(tǒng)。本文通過(guò)對(duì)這3種文件系統(tǒng)的設(shè)計(jì)原理和主要性能進(jìn)行分析與比較,歸納出各自的選型依據(jù)據(jù)和適用領(lǐng)域。 三種嵌入式文件系統(tǒng)主要性能分析與比較 資料安全、運(yùn)行速度、占用資源、使用范圍等是嵌入式文件系統(tǒng)的主要性能指標(biāo)。下面從這幾個(gè)方面入手,對(duì)這三種嵌入式文件系統(tǒng)進(jìn)行分析與比較。 資料安全 當(dāng)前的嵌入式系統(tǒng)主要使用固態(tài)Flash晶片作為儲(chǔ)存設(shè)備。由于Flash設(shè)備自身的特點(diǎn)以及嵌入式系統(tǒng)工作環(huán)境的復(fù)雜多樣性,如何保證資料的安全是嵌入式文件系統(tǒng)首先要考慮的問(wèn)題。資料安全主要包括資料冗余和掉電保護(hù)等部分。 資料冗余Cramfs文件系統(tǒng)是一種只讀文件系統(tǒng),文件系統(tǒng)內(nèi)容不可更改,設(shè)計(jì)思想遵循「只儲(chǔ)存最少的信息」;甚至沒(méi)有時(shí)間戳之類的信息,除了資料包的CRC校驗(yàn)信息外,幾乎沒(méi)有別的資料冗余。
?
JFFS2文件系統(tǒng)是典型的日志結(jié)構(gòu)的文件系統(tǒng),它儲(chǔ)存的資料是日志式資料信息。JFFS2在Flash上??只有兩種類型的資料實(shí)體:j.ffs2_raw_inode和jffs2_raw dirent。前者包含文件的管理信息,后者用于描述文件在文件系統(tǒng)中的位置。真正的資料信息就保持在jffs2_raw_inode節(jié)點(diǎn)的后面,大部分管理的信息都是在系統(tǒng)掛載之后建立起來(lái)的。兩種資料實(shí)體有著公共的文件頭結(jié)構(gòu)jffs2 _ unknown_node。在這個(gè)結(jié)構(gòu)里,有個(gè)jint32 _t類型的hdr_crc變量,它代表文件頭部中其他域的CRC校驗(yàn)值。這說(shuō)明JFFS2文件系統(tǒng)使用的是CRC循環(huán)冗余校驗(yàn)碼。[文件管理信息 + 文件在文件系統(tǒng)中的位置 + 真正的資料]
?
YAFFS2文件系統(tǒng)是一種類日志文件系統(tǒng),專用于NAND型Flash設(shè)備。其儲(chǔ)存資料的基本單位是chunk,相當(dāng)于Flash的頁(yè)。Chunk中的資料包括兩部分:一部分是資料區(qū),占用Flash的一頁(yè);另一部分是文件信息及冗余資料區(qū),占用Flash頁(yè)的OOB區(qū)。其冗余資料主要是ECC校驗(yàn)資料,對(duì)于小頁(yè)(每頁(yè)512位元組)的Flash,每頁(yè)有6位元組的ECC資料;對(duì)于大頁(yè)(每頁(yè)2048位元組)的Flash,每頁(yè)有24位元組的ECC資料。[專用于nand, 真正的資料放在flash頁(yè), 文件信息和冗余資料放在Flash頁(yè)的OOB區(qū)]
?
掉電保護(hù):
Cramfs文件系統(tǒng)將文件系統(tǒng)內(nèi)容解壓到記憶體中,由于其不能寫(xiě)入,文件系統(tǒng)的內(nèi)容無(wú)法更改,因此不存在掉電保護(hù)的問(wèn)題。[無(wú)掉電保護(hù)] JFFS2是一種日志結(jié)構(gòu)文件系統(tǒng),因此不論電源以何種方式在哪個(gè)時(shí)刻停止供電,JFFS2都能保持資料完整性。當(dāng)系統(tǒng)遭受不正常斷電后重新啟動(dòng)時(shí),JFFS2自動(dòng)將系統(tǒng)恢復(fù)到斷電前最后一個(gè)穩(wěn)定狀態(tài)。需要注意的是,文件系統(tǒng)在最后一個(gè)穩(wěn)定狀態(tài)之后發(fā)生的任何改變,都無(wú)法進(jìn)行恢復(fù)。 [斷電重啟后恢復(fù)到上一個(gè)穩(wěn)定狀態(tài)]YAFFS2是一種類日志文件系統(tǒng),可以在意外掉電重啟后自動(dòng)提供可靠的資料記錄,防止文件系統(tǒng)的崩潰。它使用獨(dú)立的日志文件跟蹤文件系統(tǒng)內(nèi)容的變化。舉例來(lái)說(shuō):當(dāng)應(yīng)用程式需要寫(xiě)Flash的某一頁(yè)時(shí),它首先修改的是存放于文件日志中的一塊鏡像;只有當(dāng)日志中的鏡像復(fù)制到文件系統(tǒng)中后,資料才真實(shí)地寫(xiě)到該頁(yè)上。當(dāng)發(fā)生意外掉電重啟后,YAFFS2沒(méi)有像JFFS2那樣,使用舊文件完全代替新寫(xiě)文件,而是選擇用新文件完全代替舊的文件,或者已寫(xiě)部分使用新文件,未寫(xiě)部分使用舊文件。這種方式增強(qiáng)了掉電時(shí)未完全寫(xiě)入文件的安全性能,特別是當(dāng)意外掉電發(fā)生在資料區(qū)時(shí),意外掉電時(shí)的文件幾乎被完好地保存下來(lái)。[斷電重啟后,用新?lián)Q舊] 運(yùn)行速度
運(yùn)行速度可以從以下幾個(gè)方面考察:文件系統(tǒng)掛載速度,讀文件速度,寫(xiě)文件速度等。這里預(yù)設(shè)的儲(chǔ)存介質(zhì)是NAND Flash。 一般而言,壓縮的、只讀的文件系統(tǒng)在啟動(dòng)時(shí)需要將文件系統(tǒng)解壓到SDRAM中,這在一定程度上會(huì)減緩文件系統(tǒng)掛載速度。但是,Cramfs文件系統(tǒng)在設(shè)計(jì)時(shí)充分考慮了系統(tǒng)掛載的時(shí)間,并沒(méi)有一次性地把文件系統(tǒng)的所有內(nèi)容都解壓到記憶體中,而只是在系統(tǒng)需要訪問(wèn)某個(gè)位置的資料時(shí),迅速計(jì)算出該資料在Cramfs中的位置,將其解壓縮到記憶體之中,再進(jìn)行訪問(wèn)操作。由于其讀文件速度只是找出文件位址以及訪問(wèn)記憶體的操作,所以無(wú)論是掛載速度,還是讀文件速度, Cramfs文件系統(tǒng)都比JFFS2和YAFFS2文件系統(tǒng)要快。 JFFS2文件系統(tǒng)的掛載可以分為以下幾個(gè)步驟進(jìn)行:???
1.檢查每個(gè)節(jié)點(diǎn)CRC校驗(yàn)碼的合法性,在記憶體中為每個(gè)節(jié)點(diǎn)每個(gè)節(jié)點(diǎn)分配必需的相關(guān)的結(jié)構(gòu);???
2.掃瞄每個(gè)i節(jié)點(diǎn)的物理節(jié)點(diǎn)鏈表,建立鏈接;???
3.釋放掃瞄過(guò)程中使用的臨時(shí)信息。 可以看出這個(gè)過(guò)程還是很復(fù)雜的,更重要的是,在JFFS2文件系統(tǒng)被掛載時(shí),需要對(duì)整個(gè)Flash儲(chǔ)存區(qū)域進(jìn)行掃瞄,這就耗費(fèi)了大量的時(shí)間,因此JFFS2文件系統(tǒng)的開(kāi)機(jī)速度非常緩慢。與JFFS2相比,YAFFS2減少了一些功能,掛載時(shí)只需掃瞄Flash記憶體的空閑區(qū),根據(jù)從OOB(備份資料區(qū))中讀取的yaffs_tags信息判讀是文件頭頁(yè)面還是資料頁(yè)面,再根據(jù)相應(yīng)信息在記憶體中為每個(gè)文件建立一個(gè)對(duì)??應(yīng)的yaffs_object對(duì)象。由于YAFFS2在系統(tǒng)載入時(shí)只需掃瞄各個(gè)頁(yè)面的OOB區(qū),即可建立起整個(gè)文件系統(tǒng)的結(jié)構(gòu),而不需要像JFFS2那樣掃瞄整個(gè)Flash設(shè)備,因此大大加快了文件系統(tǒng)的啟動(dòng)速度。但是,YAFFS2仍然要求對(duì)整個(gè)Flash設(shè)備所有頁(yè)的空閑進(jìn)行掃瞄,這就導(dǎo)致當(dāng)Flash設(shè)備儲(chǔ)存空間變大時(shí),系統(tǒng)掃瞄時(shí)間會(huì)直線上升。 在文件系統(tǒng)運(yùn)行時(shí),JFFS2需要維護(hù)幾個(gè)鏈表來(lái)管理擦寫(xiě)塊。根據(jù)擦寫(xiě)塊上的內(nèi)容,一個(gè)擦寫(xiě)塊可能會(huì)在不同的鏈表上。具 體來(lái)說(shuō),當(dāng)一個(gè)擦寫(xiě)塊上都是合法(valid)的節(jié)點(diǎn)時(shí),它會(huì)在clean_list上;當(dāng)一個(gè)擦寫(xiě)塊包含至少一個(gè)過(guò)時(shí)(obsolete)的節(jié)點(diǎn)時(shí),它 會(huì)在dirty_list上;當(dāng)一個(gè)擦寫(xiě)塊被擦寫(xiě)完畢,并被寫(xiě)入Cleanmarker節(jié)點(diǎn)后,它會(huì)在free_list上。正是以這些鏈表為基礎(chǔ), JFFS2文件系統(tǒng)才可以實(shí)現(xiàn)垃圾回收、損耗平衡等性能。文件系統(tǒng)掛載時(shí)YAFFS2在記憶體中建立一個(gè)層次結(jié)構(gòu)的索引,可以看作是一個(gè)文件樹(shù)。樹(shù)的最底層指向?qū)嶋H存放文件的頁(yè)面,高層則是一層層的索引目錄。文件樹(shù)是通過(guò)一個(gè)聯(lián)合結(jié)構(gòu)的節(jié)點(diǎn)來(lái)實(shí)現(xiàn)的。聯(lián)合結(jié)構(gòu)是固定大小(32位元組),當(dāng)它處于最底層時(shí), 由16個(gè)2位元組入口來(lái)查找頁(yè)面ID;當(dāng)處于其它層時(shí),由8個(gè)4位元組指針指向其他更低層的節(jié)點(diǎn)。每個(gè)文件對(duì)應(yīng)一個(gè)文件樹(shù),便于檢索。在以NAND Flash為儲(chǔ)存介質(zhì)的嵌入式系統(tǒng)中,YAFFS2的文件讀寫(xiě)性能都優(yōu)于JFFS2。[YAFFS2比JFFS2啟動(dòng)速度快,讀寫(xiě)性能也更優(yōu)]
?
占用資源 在嵌入式系統(tǒng)中,記憶體和外部記憶體資源匱乏,需要節(jié)約使用。因此占用的記憶體和外部記憶體資源量也是衡量嵌入式文件系統(tǒng)的一個(gè)重要指標(biāo)。 如果使用RAMDISK方式運(yùn)行文件系統(tǒng),那么在系統(tǒng)運(yùn)行之后,首先要把Flash上??的映像文件解壓到記憶體中,才可以開(kāi)始運(yùn)行程序。這樣,同樣的程式碼不僅在外部記憶體中占據(jù)了空間,而且由于解壓縮,還在記憶體中占用了更大的空間。Cramfs雖然是一個(gè)壓縮式的文件系統(tǒng),但前面已介紹過(guò),它并不需要一次性地將所有內(nèi)容解壓到記憶體之中。由于其對(duì)文件內(nèi)容的壓縮,因此無(wú)論是外部記憶體還是記憶體, Cramfs都比JFFS2和YAFFS2占用更少的資源。 JFFS2將文件系統(tǒng)的資料和原資料以節(jié)點(diǎn)的形式儲(chǔ)存在Flash上??,其冗余資料只是節(jié)點(diǎn)頭部的CRC校驗(yàn)碼,并且在儲(chǔ)存時(shí)對(duì)節(jié)點(diǎn)的資料進(jìn)行了壓縮。與之相比,YAFFS2不僅儲(chǔ)存了頁(yè)資料的ECC校驗(yàn)碼,并且沒(méi)有Flash設(shè)備OOB區(qū)儲(chǔ)存資料,而是用來(lái)儲(chǔ)存頁(yè)節(jié)點(diǎn)信息。其映像也是由若干個(gè)頁(yè)面組成,沒(méi)有對(duì)資料進(jìn)行壓縮,因此YAFFS2文件系統(tǒng)映像大大超過(guò)了JFFS2文件系統(tǒng)映像。實(shí)驗(yàn)表明,普通YAFFS2映像的大小約為同樣JFFS2映像大小的2倍。當(dāng)文件系統(tǒng)在記憶體中運(yùn)行時(shí),JFFS2在記憶體中定義了若干鏈表,YAFFS2在記憶體中為每個(gè)文件創(chuàng)建一個(gè)文件樹(shù)。盡管為每個(gè)文件建立一個(gè)文件樹(shù)需要消耗掉不少的記憶體,但是比起維護(hù)JFFS2所需的鏈表消耗的記憶體,還是少一些。在實(shí)際運(yùn)行中,YAFFS2占用的記憶體要小于JFFS2文件系統(tǒng)。[jffs2在儲(chǔ)存時(shí)對(duì)節(jié)點(diǎn)的資料進(jìn)行了壓縮,系統(tǒng)映像會(huì)大于yaffs2的,但是運(yùn)行時(shí)JFFS2維護(hù)的鏈表比yaffs的樹(shù)更占內(nèi)存] 使用范圍 要使用Cramfs或JFFS2文件系統(tǒng),離不開(kāi)MTD驅(qū)動(dòng)程式層的支援。MTD(Memory Technology Device)是Linux中的一個(gè)儲(chǔ)存設(shè)備通用界面層。雖然也可以建立在RAM上,但它是專為基于Flash的設(shè)備而設(shè)計(jì)的。MTD包含特定Flash 晶片的驅(qū)動(dòng)程式, Flash晶片驅(qū)動(dòng)向上層提供讀、寫(xiě)、擦除等基本的Flash操作方法。MTD對(duì)這些操作進(jìn)行封裝后向用戶層提供MTD char和MTD block類型的設(shè)備。MTD char類型的設(shè)備包括/dev/mtd0等,可以對(duì)Flash的原始字元訪問(wèn);MTD block類型的設(shè)備包括/dev/mtdblock0等,將Flash類比成塊設(shè)備,這樣就可以在這些塊設(shè)備上創(chuàng)建Cramfs或JFFS2等格式的文件系統(tǒng)。在對(duì)用戶層的界面上, Cramfs或JFFS2文件系統(tǒng)還需要作業(yè)系統(tǒng)VFS(虛擬文件系統(tǒng))的支援。 同樣,YAFFS2文件系統(tǒng)支援使用MTD驅(qū) ??動(dòng)層和VFS層,這也是一般在嵌入式Linux或者μClinux作業(yè)系統(tǒng)中使用YAFFS2文件系統(tǒng)的常用方法。除此之外,YAFFS2還帶有NAND Flash晶片驅(qū)動(dòng),并為嵌入式系統(tǒng)提供了直接訪問(wèn)文件系統(tǒng)的API,用戶可以不使用Linux中的MTD和VFS,直接對(duì)文件進(jìn)行操作。[cramfs和jffs要利用mtd和vfs的支持, 而yaffs2可用可不用, 但在linux中通常都要用] 圖1?為嵌入式系統(tǒng)的文件系統(tǒng)結(jié)構(gòu)。 AFFS2中的YAFFS2 Direct提供了直接的文件系統(tǒng)界面,因此在那些沒(méi)有VFS層的嵌入式系統(tǒng)中也可使用YAFFS2。YAFFS2文件系統(tǒng)的使用范圍要比Cramfs和JFFS2文件系統(tǒng)廣泛;但是需要注意的是,YAFFS2只能用在NAND Flash儲(chǔ)存設(shè)備上。 結(jié)論 這3種嵌入式文件系統(tǒng)在嵌入式系統(tǒng)中的應(yīng)用非常廣泛,但是又具有各自的特點(diǎn)。表2?比較了3種文件系統(tǒng)的主要性能,并歸納出各自最適用的領(lǐng)域。 各自最適用的領(lǐng)域具體分析如下:???1. Cramfs是最早的一種嵌入式文件系統(tǒng),它只儲(chǔ)存了最少的信息,對(duì)文件內(nèi)容進(jìn)行了壓縮,運(yùn)行速度比較???
快。但是由于其不能寫(xiě)入,不支援超過(guò)16 MB大小的文件,因此廣泛地應(yīng)用于儲(chǔ)存空間小、文件系統(tǒng)內(nèi)容???
較少并且不需要用戶寫(xiě)入的嵌入式系統(tǒng)中。??
2. JFFS2是一種較早的Flash專用文件系統(tǒng)。目前已有很多JFFS2應(yīng)用于μClinux以及嵌入式Linux的例子。事???
實(shí)上,它已經(jīng)成為新版Linux中的一種標(biāo)準(zhǔn)文件系統(tǒng)。??
同時(shí)它對(duì)NOR Flash和NAND Flash提供支援,針對(duì)兩種Flash設(shè)備共同的特性,提供掉電保護(hù)和損耗平衡等???
功能,可供用戶讀寫(xiě),十分適合于同時(shí)用到這兩種Flash設(shè)備的嵌入式系統(tǒng)。??
3. YAFFS2是專為NAND Flash設(shè)計(jì)的文件系統(tǒng),它充分考慮了NAND Flash設(shè)備的特性,支援ECC校驗(yàn),提???
供掉電保護(hù)和損耗平衡功能,運(yùn)行和掛載速度都比JFFS2要快。它支援作業(yè)系統(tǒng)廣泛,包括常見(jiàn)的嵌入???
式Linux、WinCE、μClinux。由于它提供Direct界面,因此稍加修改也可使用在沒(méi)有作業(yè)系統(tǒng)的嵌入式???
系統(tǒng)中。目前,被廣泛應(yīng)用于使用NAND Flash作為儲(chǔ)存設(shè)備的嵌入式系統(tǒng)中。 針對(duì)具體應(yīng)用,可以在考察各種文件系統(tǒng)特點(diǎn)的基礎(chǔ)上,選擇更適合自身系統(tǒng)的一種文件系統(tǒng)解決方案。比如在許多以NAND Flash為儲(chǔ)存介質(zhì)的應(yīng)用系統(tǒng)中,都用到「Cramfs YAFFS2」文件系統(tǒng)。以Cramfs作為根文件系統(tǒng),既提高了啟動(dòng)速度,也能保護(hù)根文件不受破壞;使用YAFFS2作為用戶文件系統(tǒng),在保證用戶可以自由讀寫(xiě)文件的基礎(chǔ)上,提高了文件系統(tǒng)的安全性和運(yùn)行速度,不失為一種優(yōu)良的嵌入式文件系統(tǒng)解決方案。 擴(kuò)展: 嵌入式: jffs2,yaffs2,logfs,ubifs文件系統(tǒng)性能分析? http://blog.chinaunix.net/uid-23381466-id-3411483.html Linux支持多種文件系統(tǒng),包括ext2、ext3、vfat、ntfs、 iso9660、jffs、romfs和nfs等,為了對(duì)各類文件系統(tǒng) 進(jìn)行統(tǒng)一管理,Linux引入了虛擬文件系統(tǒng)VFS(Virtual File System),為各類文件系統(tǒng)提供一個(gè)統(tǒng)一的操作界面和應(yīng)用編程接口。
Linux啟動(dòng)時(shí),第一個(gè)必須掛載的是根文件系統(tǒng);若系統(tǒng)不能從指定設(shè)備上掛載根文件系統(tǒng),則系統(tǒng)會(huì)出錯(cuò)而退出啟動(dòng)。之后可以自動(dòng)或手動(dòng)掛載其他的文件系統(tǒng)。因此,一個(gè)系統(tǒng)中可以同時(shí)存在不同的文件系統(tǒng)。
1. 基于FLASH的文件系統(tǒng)
(1) Jffs2: 日志閃存文件系統(tǒng)版本2 (Journalling Flash FileSystem v2) 
(2) yaffs:Yet Another Flash File System 
(3) Cramfs:Compressed ROM File System
?? ?Cramfs映像通常是放在Flash中,但是也能放在別的文件系統(tǒng)里,使用loopback 設(shè)備可以把它安裝別的文件系統(tǒng)里。
(4) Romfs
  傳統(tǒng)型的Romfs文件系統(tǒng)是一種簡(jiǎn)單的、緊湊的、只讀的文件系統(tǒng),不支持動(dòng)態(tài)擦寫(xiě)保存,按順序存放數(shù)據(jù),因而支持應(yīng)用程序以 XIP(eXecute In Place,片內(nèi)運(yùn)行)方式運(yùn)行,在系統(tǒng)運(yùn)行時(shí),節(jié)省RAM空間。uClinux系統(tǒng)通常采用Romfs文件系統(tǒng)。
  其他文件系統(tǒng):fat/fat32也可用于實(shí)際嵌入式系統(tǒng)的擴(kuò)展存儲(chǔ)器(例如PDA, Smartphone, 數(shù)碼相機(jī)等的SD卡),這主要是為了更好的與最流行的Windows桌面操作系統(tǒng)相兼容。ext2也可以作為嵌入式Linux的文件系統(tǒng),不過(guò)將它用于 FLASH閃存會(huì)有諸多弊端。 
2. 基于RAM的文件系統(tǒng)
  (1) Ramdisk 
?? ?Ramdisk是將一部分固定大小的內(nèi)存當(dāng)作分區(qū)來(lái)使用。它并非一個(gè)實(shí)際的文件系統(tǒng),而是一種將實(shí)際的文件系統(tǒng)裝入內(nèi)存的機(jī)制,并且可以作為根 文件系統(tǒng)。將一些經(jīng)常被訪問(wèn)而又不會(huì)更改的文件(如只讀的根文件系統(tǒng))通過(guò)Ramdisk放在內(nèi)存中,可以明顯地提高系統(tǒng)的性能。
?? ?在Linux的啟動(dòng)階段,initrd提供了一套機(jī)制,可以將內(nèi)核映像和根文件系統(tǒng)一起載入內(nèi)存。 
?? ?
?? ?(2)ramfs/tmpfs
  Ramfs是Linus Torvalds開(kāi)發(fā)的一種基于內(nèi)存的文件系統(tǒng),工作于虛擬文件系統(tǒng)(VFS)層,不能格式化,可以創(chuàng)建多個(gè),在創(chuàng)建時(shí)可以指定其最大能使用的內(nèi)存大小。
  Ramfs/tmpfs文件系統(tǒng)把所有的文件都放在RAM中,所以讀/寫(xiě)操作發(fā)生在RAM中,可以用ramfs/tmpfs來(lái)存儲(chǔ)一些臨時(shí)性或經(jīng)常要修改的數(shù)據(jù),例如/tmp和/var目錄,這樣既避免了對(duì)Flash存儲(chǔ)器的讀寫(xiě)損耗,也提高了數(shù)據(jù)讀寫(xiě)速度。
  Ramfs/tmpfs相對(duì)于傳統(tǒng)的Ramdisk的不同之處主要在于:不能格式化,文件系統(tǒng)大小可隨所含文件內(nèi)容大小變化。
  Tmpfs的一個(gè)缺點(diǎn)是當(dāng)系統(tǒng)重新引導(dǎo)時(shí)會(huì)丟失所有數(shù)據(jù)。 
3. 網(wǎng)絡(luò)文件系統(tǒng)NFS (Network File System)
  NFS是由Sun開(kāi)發(fā)并發(fā)展起來(lái)的一項(xiàng)在不同機(jī)器、不同操作系統(tǒng)之間通過(guò)網(wǎng)絡(luò)共享文件的技術(shù)。在嵌入式Linux系統(tǒng)的開(kāi)發(fā)調(diào)試階段,可以利用該技術(shù)在主機(jī)上建立基于NFS的根文件系統(tǒng),掛載到嵌入式設(shè)備,可以很方便地修改根文件系統(tǒng)的內(nèi)容。
以上討論的都是基于存儲(chǔ)設(shè)備的文件系統(tǒng)(memory-based file system),它們都可用作Linux的根文件系統(tǒng)。實(shí)際上,Linux還支持邏輯的或偽文件系統(tǒng)(logical or pseudo file system),例如procfs(proc文件系統(tǒng)),用于獲取系統(tǒng)信息,以及devfs(設(shè)備文件系統(tǒng))和sysfs,用于維護(hù)設(shè)備文件。
不同的文件系統(tǒng)類型有不同的特點(diǎn),因而根據(jù)存儲(chǔ)設(shè)備的硬件特性、系統(tǒng) 需求等有不同的應(yīng)用場(chǎng)合。在嵌入式Linux應(yīng)用中,主要的存儲(chǔ)設(shè)備為 RAM(DRAM, SDRAM)和ROM(常采用FLASH存儲(chǔ)器),常用的基于存儲(chǔ)設(shè)備的文件系統(tǒng)類型包括:jffs2, yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。
?
轉(zhuǎn)載于:https://www.cnblogs.com/mylinux/p/5754716.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Cramfs、JFFS2、YAFFS2的全面对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: MongoDB数据导入hbase +
- 下一篇: Linux下I/O多路转接之select
