Linux標準的文件系統(tǒng)知識分享(Ext2/Ext3/Ext4)
Ext
全稱Linux extended file system, extfs,即Linux擴展文件系統(tǒng),Ext2就代表第二代文件擴展系統(tǒng),Ext3/Ext4以此類推,它們都是Ext2的升級版,只不過增加了日志功能,且彼此向下兼容,所以Ext2被稱為索引式文件系統(tǒng),而Ext3/Ext4被稱為日志式文件系統(tǒng)。
備注:Linux支持很多文件系統(tǒng),包括網(wǎng)絡(luò)文件系統(tǒng)(NFS)、Windows的Fat文件系統(tǒng)。
查看Linux支持的文件系統(tǒng):ls -l /lib/modules/$(uname -r)/kernel/fs

查看Linux支持的文件系統(tǒng)(已載入到內(nèi)存中):cat /proc/filesystems

核心設(shè)計
數(shù)據(jù)區(qū)
這些元素相對穩(wěn)定,磁盤格式化后,就固定下來了。
1、inode(索引節(jié)點)
記錄文件的權(quán)限、屬性和數(shù)據(jù)所在塊block的號碼,每個文件都有且僅有一個的inode,每個inode都有自己的編號,可以把inode簡單地理解為文檔索引。
2、block(數(shù)據(jù)區(qū)塊)
存儲的文件內(nèi)容,也叫數(shù)據(jù)區(qū)塊(data block),每個block都有自己的編號,Ext2支持的單位block容量僅為1k、2k、4k。
備注:為了方便inode的記錄,在磁盤格式化后,block的大小都已經(jīng)固定了。每一個塊只能存放一個文件的數(shù)據(jù),若文件太大,將占用多個block;若文件太小,block剩余空間就不能被使用了,就會導致磁盤空間浪費,所以在磁盤分區(qū)后,文件系統(tǒng)格式化前,請先仔細想想文件系統(tǒng)的預(yù)計使用情況。
中介數(shù)據(jù)(metadata)
這些元素是為了維持文件系統(tǒng)狀態(tài)而設(shè)計出來的,主要代表的是文件系統(tǒng)的動態(tài)配置信息,屬于描述性信息。
1、superblock(超級塊)
記錄文件系統(tǒng)(filesystem)的整體信息,包括inode/block的總量、使用量、剩余量、大小、以及文件系統(tǒng)的格式和相關(guān)信息。
備注:整個文件系統(tǒng)的基本信息全部記錄在superblock,它的大小一般為1024Bytes,如果它死掉,將會花費大量的時間去補救哦?。?!
2、block group(區(qū)塊群組)
試想一下,假如我們的磁盤容量高達數(shù)百G,當我們格式后,inode和block會非常龐大,為了便于管理,Ext文件系統(tǒng)在格式化時,引入了區(qū)塊群組(block group)的概念,每個區(qū)塊群組都保持獨立inode/block/superblock,擁有固定數(shù)量的block,這樣就分成了一群一群最基礎(chǔ)的子文件系統(tǒng)。
備注:superblock對于文件系統(tǒng)太重要了,但是文件系統(tǒng)的superblock又只有一個,所以除了第一個block group含有superblock外,后續(xù)block group都可能會含有備份的superblock,目的就是為了避免superblock單點無法救援的問題。
3、block bitmap(區(qū)塊對照表)
一個block只能被一個文件使用,當我們新增文件時,肯定需要使用新的block來記錄文件數(shù)據(jù)。那么如何快速地知道,哪些block是新的?哪些block是已經(jīng)使用了的?block bitmap就是這樣被設(shè)計出來,記錄所有使用和未使用的block號碼。同樣的,當我們刪除文件時,先從block bitmap中找到對應(yīng)的block號碼,然后更新標志為未使用,最后釋放block。
inode bitmap(inode 對照表)
和block bitmap一樣的設(shè)計理念,只不過它記錄地是已使用和未使用的inode號碼,這里就不再敖述了。
group descriptor
描述每個區(qū)段(block group)開始和結(jié)束的block號碼,以及說明每個區(qū)段(inodemap、blockmap、inode table)分別介于哪些block號碼之間。
列出目前系統(tǒng)所有被格式化的設(shè)備:blkid

挑選一個已格式化好的設(shè)備,查看文件系統(tǒng)的詳細信息:dumpe2fs /dev/vda1


備注:通過上面的Magic簽名為0xEF53,說明我們的磁盤分區(qū)是一個的ext2和ext3文件系統(tǒng)。類似于通過文件開頭的Magic,可以判斷文件類型一樣。
總結(jié)
Ext家族是Linux支持度最廣、最完整的文件系統(tǒng),當我們格式化磁盤后,就已經(jīng)為我們規(guī)劃好了所有的inode/block/metadate等數(shù)據(jù),這樣系統(tǒng)可以直接使用,不需要再進行動態(tài)的配置,這也是它最優(yōu)秀的特點,不過這也是它最顯著的缺點,磁盤容量越大,格式化越慢,centos7.x已經(jīng)選用xfs作為默認文件系統(tǒng)。
相關(guān)文章

集成系統(tǒng)級Claw模式! Deepin 官宣發(fā)布 25.1 版本
deepin操作系統(tǒng)發(fā)布了最新的 25.1 版本更新,該版本基于 deepin 25 正式版積累的多輪內(nèi)測成果,在 AI 能力、內(nèi)核版本、桌面環(huán)境、文件管理器以及系統(tǒng)安全等方面進行了更新2026-04-13
又一代老硬件退場! Linux 內(nèi)核正式放棄Intel 486 CPU
在過去的幾十年間,CPU 的架構(gòu)已經(jīng)經(jīng)歷了飛速發(fā)展,x86 系列就是其中之一,而 i486 則屬于該系列中的一個,當前,i486 的CPU處理器已經(jīng)夠老,從 Linux 7.1 開始將不再有對2026-04-09
趕緊收藏! 全網(wǎng)最全 Linux 命令總結(jié)
我把 Linux 中最常用、最實用、最常被問到的命令按照實際使用場景分類整理,方便你快速查閱和記憶,內(nèi)容覆蓋日常運維、開發(fā)調(diào)試、性能分析、文件處理、網(wǎng)絡(luò)、安全、系統(tǒng)管2026-04-08
一分鐘內(nèi)檢查Linux服務(wù)器性能? 9個性能檢測常用的基本命令
今天我們來看看Linux系統(tǒng)中用于性能監(jiān)控的一系列命令,這些命令可以快速查看機器的負載情況,詳細請看下文介紹2026-03-18
從零基礎(chǔ)到精通! 適合高級用戶的15款Linux發(fā)行版推薦
Linux作為操作系統(tǒng)領(lǐng)域靈活性和可定制性的基石,提供了大量滿足不同用戶需求的發(fā)行版,今天分享適合高級用戶的15款Linux發(fā)行版2026-03-10
開箱即用? 這4個高手級Linux發(fā)行版遠沒你想象的那么安全易用
如果你正在糾結(jié)用哪個發(fā)行版?零基礎(chǔ)新手別被“高端”“極客”“聲明式”這些詞沖昏頭腦,先用好用的,再慢慢進階2026-03-10
這幾款SSH工具真的夠用了! Linux好用的ssh工具推薦
在Linux上使用SSH,您需要安裝一個SSH客戶端,今天整理找到的8 款 SSH / 終端工具,從免費開源到企業(yè)級商用,從輕量化命令行到一站式工具箱,每款都做了介紹與對比,希望能2026-03-09
在Linux系統(tǒng)下有兩種用戶,即高級用戶root,普通用戶,高級用戶root可以在系統(tǒng)中做任何事情,普通用戶僅可在Linux系統(tǒng)中做有限的事情,下面我們就來看看切換方法2026-02-28
揭秘當前登錄用戶的身份! Linux中使用logname命令的技巧
logname命令就是這樣一個簡單但強大的工具,它能幫助我們輕松獲取當前登錄用戶的用戶名,今天,我們就來深入探索一下這個命令的工作原理、使用方法和最佳實踐2026-02-26
在 Linux 系統(tǒng)中,DNS 緩存是一種將域名和 IP 地址映射關(guān)系緩存在本地的機制,可以加快域名解析速度,并減輕 DNS 服務(wù)器的負載2026-02-26



