對ROMFS文件系統(tǒng)的分析和改進(jìn)
引言:ROMFS是在嵌入式設(shè)備上常用的一種文件系統(tǒng),具備體積小,可靠性好,讀取速度快等優(yōu)點。同時支持目錄,符號鏈接,硬鏈接,設(shè)備文件。但也有其局限性。ROMFS是一種只讀文件系統(tǒng),同時由于ROMFS本身設(shè)計上的原因,使得ROMFS支持的最大文件不超過256M。本文討論了 ROMFS的原理,并針對其代碼做了詳細(xì)的分析,指出了ROMFS的優(yōu)缺點并做了相應(yīng)的改進(jìn)。Linux, uclinux都支持ROMFS文件系統(tǒng)。除ROMFS外,其它常用的嵌入式設(shè)備的文件系統(tǒng)還有CRAMFS,JFFS2等,它們各有特色。
1.ROMFS文件系統(tǒng)的特點
ROMFS是一種只讀的文件系統(tǒng),它使用順序存儲方式,所有數(shù)據(jù),包括目錄,鏈接等都按目錄樹的順序存放。相對于EXT2等較大型的文件系統(tǒng)而言,ROMFS非常節(jié)省空間。通常ROMFS用在嵌入式設(shè)備中作為根文件系統(tǒng),或者用于保存boot loader以便引導(dǎo)系統(tǒng)啟動。
2.ROMFS文件系統(tǒng)的數(shù)據(jù)存儲方式
設(shè)計一個文件系統(tǒng)首先要確定它的數(shù)據(jù)存儲方式。不同的數(shù)據(jù)存儲方式對文件系統(tǒng)占用空間,讀寫效率,查找速度等主要性能有極大影響。ROMFS是一種只讀的文件系統(tǒng),它使用順序存儲方式,所有數(shù)據(jù)都是順序存放的。因此ROMFS中的數(shù)據(jù)一旦確定就無法修改,這是ROMFS只能是一種只讀文件系統(tǒng)的原因,它的數(shù)據(jù)存儲方式?jīng)Q定了無法對ROMFS進(jìn)行寫操作。由于采用了順序存放策略,ROMFS中每個文件的數(shù)據(jù)都能連續(xù)存放,讀取過程中只需要一次尋址操作,進(jìn)而就可以讀入整塊數(shù)據(jù),因此ROMFS中讀取數(shù)據(jù)效率很高。
整個ROMFS文件系統(tǒng)的布局如下:
ROMFS的首部
前八個字節(jié)是文件系統(tǒng)的名字,在這里是”-rom1fs-“, 8-11字節(jié)存放該文件系統(tǒng)大小,12-15字節(jié)為前512字節(jié)的校驗和,從16字節(jié)開始是文件系統(tǒng)的卷名,卷名的長度必須的16字節(jié)的整數(shù)倍,不足的部分可以用‘0’填充。
ROMFS的首部是ROMFS的超級塊信息,操作系統(tǒng)通過超級塊來識別文件系統(tǒng)的類型。首部之后就是實際的數(shù)據(jù),包括目錄,普通文件,設(shè)備文件,硬鏈接等。ROMFS支持所有這些類型的文件。
ROMFS文件系統(tǒng)中文件存儲方式:
評論