天天看點

linux檢視檔案系統ext,Linux-EXT檔案系統

4.檔案系統

4.3 EXT2/EXT3/EXT4

4.3.1檔案系統

磁盤是用來儲檔案的,但是必須先把磁盤格式化為某種格式的檔案系統,才能存儲檔案。檔案系統的目的就是組織和管理磁盤中的檔案。在 Linux 系統中,最長見的是 ext2 系列的檔案系統。其早期版本為 ext2,後來又發展出 ext3 和 ext4。ext3 和 ext4 雖然對 ext2 進行了增強,但是其核心設計并沒有發生變化,是以我們仍是以較老的 ext2 作為示範對象。

1.鍊式檔案系統FAT

linux檢視檔案系統ext,Linux-EXT檔案系統

2.索引檔案系統

linux檢視檔案系統ext,Linux-EXT檔案系統

4.3.2 EXT2

linux檢視檔案系統ext,Linux-EXT檔案系統

1.Boot Sector

Boot Sector,是用來存儲磁盤分區資訊和啟動資訊,任何檔案系統給都不能缺少啟動塊。啟動塊大小是1KB,是由PC标準定義的。

2.Block

Block 就是邏輯塊。對于 ext2 檔案系統來說,硬碟分區首先被分割為一個一個的邏輯塊(Block),每個 Block 就是實際用來存儲資料的單元,大小相同,Block 按照0,1,2,3 的順序進行編号,第一個 Block 的編号為 0。

ext2 檔案系統支援的 Block 的大小有 1024 位元組、2048 位元組和 4096 位元組,Block 的大小在建立檔案系統的時候可以通過參數指定,如果不指定,則會從 /etc/mke2fs.conf 檔案中讀取對應的值。

原則上,Block 的大小與數量在格式化後就不能夠發生改變了,每個 Block 内最多隻會存放一個檔案的資料(即不會出現兩個檔案的資料被放入同一個 Block 的情況),如果檔案大小超過了一個 Block 的 size,則會占用多個 Block 來存放檔案,如果檔案小于一個 Block 的 size,則這個 Block 剩餘的空間就浪費掉了。

[[email protected] tmp]# dumpe2fs /dev/sda1 |grep "Block size"

dumpe2fs 1.42.9 (28-Dec-2013)

Block size:               1024

3.Block Group

啟動塊之後才是ext2檔案系統的開始。ext2檔案系統将整個分區劃分為大小相等的塊組(Block Group),每個塊組由以下部分組成:

lSuperblock(超級塊)

lGroup Description(組描述)

lBlock bitmap(塊位圖)

lInode bitmap(inode 位圖)

lInode table(inode 表)

lData Blocks(資料塊)

4.Superblock(超級區塊)

(1)Superblock

Superblock 是記錄整個 filesystem 相關資訊的地方,大小為 1024 Bytes。其實上除了第一個 block group 内會含有 superblock 之外,後續的 block group 不一定都包含 superblock,如果包含,也是做為第一個 block group 内 superblock 的備份。superblock 記錄的主要資訊有:

nblock 與 inode 的總量

n未使用與已使用的 inode/block 數量

nblock 與 inode 的大小(block 為 1,2,4K,inode 為 128 Bytes 或 256 Bytes)

nfilesystem 的挂載時間、最近一次寫入資料的時間、最近一次檢驗磁盤(fsck)的時間等檔案系統的相關資訊

n一個 valid bit 數值,若此檔案系統已被挂載,則 valid bit 為 0,若未被挂載,則 valid bit 為 1

(2)檢視Superblock

[[email protected] tmp]# dumpe2fs -h /dev/sda1

5.Group Description(組描述)

Group Description 用來描述每個 group 的開始與結束位置的 block 号碼,以及說明每個塊(superblock、bitmap、inodemap、datablock) 分别介于哪一個 block 号碼之間。

6.Block bitmap(區塊對照表)

在建立檔案時需要為檔案配置設定 block,屆時就會選擇配置設定空閑的 block 給檔案使用。通過 block bitmap 可以知道哪些 block 是空的,是以系統就能夠很快地找到空閑空間來配置設定給檔案。同樣的,在删除某些檔案時,檔案原本占用的 block 号碼就要釋放出來,此時在 block bitmap 當中相對應到該 block 号碼的标志就需要修改成"空閑"。這就是 block bitmap 的作用。

7.Inode bitmap(inode 對照表)

inode bitmap 與 block bitmap 的功能類似,隻是 block bitmap 記錄的是使用與未使用的 block 号,而 inode bitmap 則記錄的是使用與未使用的 inode 号。

8.Inode table

Inode table 中存放着一個個 inode,inode 的内容記錄檔案的屬性以及該檔案實際資料是放置在哪些 block 内,inode 記錄的主要的檔案屬性如下:

l該檔案的讀寫權限(rwx)

l該檔案的擁有者和所屬組(owner/group)

l該檔案的容量

l該檔案的 ctime(建立時間)

l該檔案的 atime(最近一次的讀取時間)

l該檔案的 mtime(最近修改的時間)

l該檔案的特殊辨別,比如 SetUID 等

l該檔案真正内容的指向(pointer)

inode 的數量與大小也是在格式化時就已經固定了的,另外 inode 還有如下特點:

l每個 inode 大小均固定為 128 Bytes(新的 ext4 為 256 Bytes)

l每個檔案都僅會占用一個 inode

l檔案系統能夠建立的檔案數量與 inode 的數量相關

l系統讀取檔案時需要先找到 inode,并分析 inode 所記錄的權限與使用者是否符合,若符合才能夠開始讀取 block 的内容

9.Data block

Data block 是用來存放檔案内容的地方。需要注意的是,由于 block 大小的差異,會導緻檔案系統能夠支援的最大磁盤容量和最大單個檔案的大小并不相同。

4.3.3資料塊尋址

linux檢視檔案系統ext,Linux-EXT檔案系統

4.3.4檔案存取

1.Linux的目錄項

當我們在 Linux 下的檔案系統建立一個目錄時,檔案系統會配置設定一個 inode 與至少一塊 block 給該目錄。其中,inode 記錄該目錄的相關權限與屬性,并可記錄配置設定到的那塊 block 号碼; 而 block 則是記錄在這個目錄下的檔名與該檔名占用的 inode 号碼資料。

linux檢視檔案系統ext,Linux-EXT檔案系統
linux檢視檔案系統ext,Linux-EXT檔案系統

2.Linux檔案的讀取

以讀取檔案/var/log/message為例,講解讀取檔案messages時,從磁盤中查找/讀取檔案内容的過程。

linux檢視檔案系統ext,Linux-EXT檔案系統

i.首先系統通過挂載資訊(在超級塊中,位置固定)找到根目錄(/)的inode編号,根目錄對應的inode是固定的(通常為2号)。

ii.根據根目錄的inode編号(2号),在inode table中找到對應的inode資訊,從inode資訊中找到存儲根目錄資訊的目錄塊編号,根據編号找到資料塊,如圖中标記為‘/’的方格,該目錄塊存儲的資訊如圖中的dentry所示。

iii.從目錄塊中存儲的資訊中,找到檔案名(目錄名)為var所對應的inode編号(2667711)。

iv.在inode table中找到編号為2667711的inode資訊,從該inode資訊中,找到var目錄存放的資料塊。從var資料塊存儲的資訊中,找到log目錄對應的inode編号(267850)。

v.重複上述步驟,直至找到message檔案對應的inode結點,根據inode結點中記錄的message檔案内容對應的資料塊,從資料塊中讀取内容。

4.3.5 EXT3

(1)EXT3與EXT2的差別

uext2和ext3的格式完全相同,隻是在ext3硬碟最後面有一部分空間用來存放Journal(日志)的記錄;

u在ext2中,寫資料到硬碟中時,先将資料寫入緩存中,當緩存寫滿時才會寫入硬碟中;

u在ext3中,寫資料到硬碟中時,先将資料寫入緩存中,鼗緩存寫滿時系統先通知Journal,再将資料寫入硬碟,完成後再通知Journal,資料已完成寫入工作;

u是否有Journal的差别:

l在ext2中,系統開機時會去檢查有效位(Valid bit),如果值為1,表示系統上次有正常關機;如果為0,表示上次關機未正常關機,那系統就會從頭檢查硬碟中的資料,這樣時間會很長;

l在ext3中,也就是有Journal機制裡,系統開機時檢查Journal的資料,來檢視是否有錯誤産生,這樣就快了很多;

utune2fs –j 将ext2轉換成ext3

(2)日志式檔案系統 (Journaling filesystem)

u預備:當系統要寫入一個檔案時,會先在日志記錄區塊中紀錄某個檔案準備要寫入的資訊;

u實際寫入:開始寫入檔案的權限與資料;開始更新 metadata 的資料;

u結束:完成資料與 metadata 的更新後,在日志記錄區塊當中完成該檔案的紀錄。

4.3.6 EXT4

nExt4的檔案系統容量達到1EB,而檔案容量則達到16TB

n理論上支援無限數量的子目錄

nExt4檔案系統使用64位空間記錄塊數量和i-節點數量

nExt4的多塊配置設定器支援一次調用配置設定多個資料塊