嵌入式文件系統(tǒng)介紹合集:FAT32、exFAT、ext3、ext4、jffs2、yaffs2、ubifs、squashf
liwen01 2024.07.21
前言
在嵌入式 Linux 系統(tǒng)中常用的文件系統(tǒng)有:FAT32、exFAT、ext3、ext4、jffs2、yaffs2、ubifs、squashfs。不管是在文件系統(tǒng)類型選型還是嵌入式應(yīng)用軟件面試中,關(guān)于文件系統(tǒng)的問題都會經(jīng)常被提起。
就目前而言,并沒有哪款文件系統(tǒng)可以適用于所有應(yīng)用場景,它們各有優(yōu)缺點,各有適用領(lǐng)域。
(一)存儲設(shè)備簡介
目前主流的存儲設(shè)備有3類:機(jī)械硬盤、FTL 閃存設(shè)備、裸flash。
機(jī)械硬盤:日常使用比較多的是在PC機(jī)上,還有一部分是在大容量的MDVR上,它使用的文件系統(tǒng),一般是跟隨使用的操作系統(tǒng),window 使用 NTFS, Linux 使用 ext4。
FTL閃存設(shè)備:指有帶 flash 轉(zhuǎn)換層的 flash 儲存設(shè)備,比如常用的:U盤、SD、TF卡、emmc、ssd設(shè)備。它們上面常用的文件系統(tǒng)是 FAT32、exFAT。
裸flash:直接將 flash 焊接在板子上直接使用,沒有flash 轉(zhuǎn)換層,一般容量較小,用來存儲固件程序或是少量的用戶配置信息等,有 nor 和 nand 兩種,nor flash 上常用的是 jffs2, nand flash 常用的是 yaffs2,有些nand flash容量會比較大,一般用來存儲媒體數(shù)據(jù),比如圖片和視頻,對于大容量的nand flash, 使用 ubifs 會更加合適。
(二)文件系統(tǒng)簡介
(1)FAT32
FAT32 兼容性很高,可以在不同的系統(tǒng)上使用,軟件實現(xiàn)簡單、支持在嵌入式設(shè)備和PC機(jī)上使用。傳統(tǒng)安防及行車記錄儀大部分都是使用 FAT32 文件系統(tǒng)格式。在嵌入式設(shè)備上采集錄制了數(shù)據(jù),可以在嵌入式設(shè)備或PC機(jī)上查看。
FAT32 文件系統(tǒng)的缺點是不帶日志功能,在熱拔插的情況下,容易導(dǎo)致數(shù)據(jù)丟失,如果丟失的是元數(shù)據(jù),那文件系統(tǒng)就會出現(xiàn)異常,常見的是文件名亂碼。另外一個缺點是有容量大小限制,在大容量存儲設(shè)備中響應(yīng)緩慢。
(2)exFAT
exFAT 是在FAT32基礎(chǔ)上發(fā)展而來,在window系統(tǒng),如果FTL閃存設(shè)備容量大于32G,window默認(rèn)會將卡格式化成exFAT格式。exFAT 主要解決 FAT32 大容量限制及大容量工作效率問題。
微軟擁有 exFAT 的絕大部分專利,如果要使用 exFAT 到產(chǎn)品上,需要考慮版權(quán)風(fēng)險。
(3)ext4
ext4 適用于 Linux 操作系統(tǒng),有帶日志功能,數(shù)據(jù)分塊存儲,安全和效率都比較好,如果是要在 Linux 系統(tǒng)中存儲比較大容量的音視頻數(shù)據(jù),可以選擇 ext4 文件系統(tǒng)。
ext4 的缺點是不能跨平臺使用,如果在嵌入式設(shè)備中使用 ext4 作為 TF 卡的文件系統(tǒng),那么 TF 卡放置到 window 系統(tǒng)上就不能識別,會直接提示需要格式化。對于那些需要在設(shè)備和window PC機(jī)上查看存儲數(shù)據(jù)的存儲設(shè)備就不適合使用 ext4 文件系統(tǒng)了。
(4)jffs2
jffs2 是一個日志型文件系統(tǒng),常用在 nor flash 上,用來存儲程序或是用戶配置數(shù)據(jù)。因為是日志文件系統(tǒng),所以文件系統(tǒng)的崩潰一致性會比較好。一般是用作 nor flash 嵌入式設(shè)備的參數(shù)分區(qū)文件系統(tǒng)。
jffs2 的缺點是,在掛載的時候,需要全盤掃描 flash 以建立完整的文件信息,這也導(dǎo)致了它在大容量 flash 分區(qū)中使用效率不高。
(5)yaffs2
yaffs2 與 jffs2 類似, yaffs2 主要應(yīng)用于 nand flash 上,它與 jffs2 的區(qū)別是,yaffs2 使用了nand flash 的 OOB 區(qū)來存儲一些元數(shù)據(jù),所以 yaffs2 在掛載時只掃描 OOB 區(qū)域就可以構(gòu)建出文件的依賴關(guān)系,從而提升文件系統(tǒng)的效率。
yaffs2 的缺點是不支持?jǐn)?shù)據(jù)壓縮,元數(shù)據(jù)開銷大,擴(kuò)展性能差。
(6)ubifs
ubifs 主要應(yīng)用于大容量的 nand flash, 它使用邏輯擦除塊與物理擦除塊分離的方法,可以為整個 flash 空間提供磨損平衡功能。另外它支持動態(tài)調(diào)大小,整體的擴(kuò)展性能好。
ubifs 的缺點是軟件復(fù)雜度高,調(diào)試難度比較大。
(7)squashfs
squashfs 是一個壓縮文件系統(tǒng),它最大的優(yōu)勢是壓縮比例高,最大的限制是文件系統(tǒng)為只讀。它主要應(yīng)用于一些不需要修改內(nèi)容的資源分區(qū)上,比如字體,語音提示文件等。壓縮比高表示可以在有限空間存儲更多的數(shù)據(jù)內(nèi)容,從而達(dá)到降低 flash 成本的目的。
各文件系統(tǒng)工作原理及它們優(yōu)缺點的詳細(xì)介紹,可以選擇查看前面已經(jīng)分析過的文章:
文件系統(tǒng)(一):存儲介質(zhì)、原理與架構(gòu)
文件系統(tǒng)(二):分區(qū)、格式化數(shù)據(jù)結(jié)構(gòu)
文件系統(tǒng)(三):嵌入式、計算機(jī)系統(tǒng)啟動流程與步驟
文件系統(tǒng)(四):FAT32文件系統(tǒng)實現(xiàn)原理
文件系統(tǒng)(五):exFAT 文件系統(tǒng)原理詳解
文件系統(tǒng)(六):一文看懂linux ext4文件系統(tǒng)工作原理
文件系統(tǒng)(七):文件系統(tǒng)崩潰一致性、方法、原理與局限
文件系統(tǒng)(八):Linux JFFS2文件系統(tǒng)工作原理、優(yōu)勢與局限
文件系統(tǒng)(九):一文看懂yaffs2文件系統(tǒng)原理
文件系統(tǒng)(十):一文看懂 UBI 文件系統(tǒng)
文件系統(tǒng)(十一):Linux Squashfs只讀文件系統(tǒng)介紹
結(jié)尾
文件系統(tǒng)系列介紹,到這里就告一段落了,后續(xù)可能會更新一個無線網(wǎng)絡(luò)開發(fā)相關(guān)的專題介紹。上面介紹的內(nèi)容如有錯誤,歡迎在留言區(qū)留言指出,不勝感激。當(dāng)然,如果你有其它的想法,也歡迎一起交流。

浙公網(wǎng)安備 33010602011771號