'詳解Linux文件系統--EXT4文件系統,值得收藏'

Linux Links 收藏 物理 時光網 波波說運維 2019-07-19
"

概述

Linux系統的ext2和ext3文件系統存儲格式,使用block為存儲單元,每個block使用bmap中的位來標記是否空閒,儘管使用劃分塊組的方法優化提高了效率,但是一個塊組內部仍然使用bmap來標記該塊組內的block。對於一個巨大的文件,掃描整個bmap都將是一件浩大的工程。另外在inode尋址方面,ext2/3使用直接和間接的尋址方式,對於三級間接指針,可能要遍歷的指針數量是非常非常巨大的。那麼ext4文件系統又有什麼變化呢?

"

概述

Linux系統的ext2和ext3文件系統存儲格式,使用block為存儲單元,每個block使用bmap中的位來標記是否空閒,儘管使用劃分塊組的方法優化提高了效率,但是一個塊組內部仍然使用bmap來標記該塊組內的block。對於一個巨大的文件,掃描整個bmap都將是一件浩大的工程。另外在inode尋址方面,ext2/3使用直接和間接的尋址方式,對於三級間接指針,可能要遍歷的指針數量是非常非常巨大的。那麼ext4文件系統又有什麼變化呢?

詳解Linux文件系統--EXT4文件系統,值得收藏


1、EXT4文件系統特點

ext4文件系統的最大特點是在ext3的基礎上使用區(extent,或稱為段)的概念來管理。一個extent儘可能的包含物理上連續的一堆block。inode尋址方面也一樣使用區段樹的方式進行了改進。

"

概述

Linux系統的ext2和ext3文件系統存儲格式,使用block為存儲單元,每個block使用bmap中的位來標記是否空閒,儘管使用劃分塊組的方法優化提高了效率,但是一個塊組內部仍然使用bmap來標記該塊組內的block。對於一個巨大的文件,掃描整個bmap都將是一件浩大的工程。另外在inode尋址方面,ext2/3使用直接和間接的尋址方式,對於三級間接指針,可能要遍歷的指針數量是非常非常巨大的。那麼ext4文件系統又有什麼變化呢?

詳解Linux文件系統--EXT4文件系統,值得收藏


1、EXT4文件系統特點

ext4文件系統的最大特點是在ext3的基礎上使用區(extent,或稱為段)的概念來管理。一個extent儘可能的包含物理上連續的一堆block。inode尋址方面也一樣使用區段樹的方式進行了改進。

詳解Linux文件系統--EXT4文件系統,值得收藏

文件系統限制表

默認情況下,EXT4不再使用EXT3的block mapping分配方式 ,而改為Extent方式分配。

以下是ext4文件系統中一個文件的inode屬性示例,注意最後兩行的EXTENTS。

Inode: 12 Type: regular Mode: 0644 Flags: 0x80000
Generation: 476513974 Version: 0x00000000:00000001
User: 0 Group: 0 Size: 11
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
atime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
mtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
crtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
Size of extra inode fields: 28
EXTENTS:
(0):33409

2、磁盤佈局

Ext4文件系統的標準磁盤佈局如下:

"

概述

Linux系統的ext2和ext3文件系統存儲格式,使用block為存儲單元,每個block使用bmap中的位來標記是否空閒,儘管使用劃分塊組的方法優化提高了效率,但是一個塊組內部仍然使用bmap來標記該塊組內的block。對於一個巨大的文件,掃描整個bmap都將是一件浩大的工程。另外在inode尋址方面,ext2/3使用直接和間接的尋址方式,對於三級間接指針,可能要遍歷的指針數量是非常非常巨大的。那麼ext4文件系統又有什麼變化呢?

詳解Linux文件系統--EXT4文件系統,值得收藏


1、EXT4文件系統特點

ext4文件系統的最大特點是在ext3的基礎上使用區(extent,或稱為段)的概念來管理。一個extent儘可能的包含物理上連續的一堆block。inode尋址方面也一樣使用區段樹的方式進行了改進。

詳解Linux文件系統--EXT4文件系統,值得收藏

文件系統限制表

默認情況下,EXT4不再使用EXT3的block mapping分配方式 ,而改為Extent方式分配。

以下是ext4文件系統中一個文件的inode屬性示例,注意最後兩行的EXTENTS。

Inode: 12 Type: regular Mode: 0644 Flags: 0x80000
Generation: 476513974 Version: 0x00000000:00000001
User: 0 Group: 0 Size: 11
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
atime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
mtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
crtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
Size of extra inode fields: 28
EXTENTS:
(0):33409

2、磁盤佈局

Ext4文件系統的標準磁盤佈局如下:

詳解Linux文件系統--EXT4文件系統,值得收藏

Ext4文件系統主要使用塊組0中的超級塊和塊組描述符表,在其他一些特定塊組中有超級塊和塊組描述符表的冗餘備份。如果塊組中不含冗餘備份,那麼塊組就以數據塊位圖開始。當格式化磁盤成為Ext4文件系統的時候,mkfs將在塊組描述符表後面分配預留GDT表數據塊(“Reserve GDT blocks”)以用於將來擴展文件系統。緊接在預留GDT表數據塊後的是數據塊位圖與inode表位圖,這兩個位圖分別表示本塊組內的數據塊與inode表的使用,inode表數據塊之後就是存儲文件的數據塊了。

在這些各種各樣的塊中,超級塊、GDT、塊位圖、Inode位圖都是整個文件系統的元數據,當然inode表也是文件系統的元數據,但是inode表是與文件一一對應的,我更傾向於將inode當做文件的元數據,因為在實際格式化文件系統的時候,除了已經使用的十來個外,其他inode表中實際上是沒有任何數據的,直到創建了相應的文件才會分配inode表,文件系統才會在inode表中寫入與文件相關的inode信息。


3、EXT4文件系統的結構特徵

EXT4在總體結構上與EXT3相似,大的分配方向都是基於相同大小的塊組,每個塊組內分配固定數量的inode、可能的superblock(或備份)及GDT。

EXT4的inode 結構做了重大改變,為增加新的信息,大小由EXT3的128字節增加到默認的256字節,同時inode尋址索引不再使用EXT3的"12個直接尋址塊+1個一級間接尋址塊+1個二級間接尋址塊+1個三級間接尋址塊"的索引模式,而改為4個Extent片斷流,每個片斷流設定片斷的起始block號及連續的block數量(有可能直接指向數據區,也有可能指向索引塊區)。

片段流即下圖中索引節點(inde node block)部分的綠色區域,每個15字節,共60字節。

"

概述

Linux系統的ext2和ext3文件系統存儲格式,使用block為存儲單元,每個block使用bmap中的位來標記是否空閒,儘管使用劃分塊組的方法優化提高了效率,但是一個塊組內部仍然使用bmap來標記該塊組內的block。對於一個巨大的文件,掃描整個bmap都將是一件浩大的工程。另外在inode尋址方面,ext2/3使用直接和間接的尋址方式,對於三級間接指針,可能要遍歷的指針數量是非常非常巨大的。那麼ext4文件系統又有什麼變化呢?

詳解Linux文件系統--EXT4文件系統,值得收藏


1、EXT4文件系統特點

ext4文件系統的最大特點是在ext3的基礎上使用區(extent,或稱為段)的概念來管理。一個extent儘可能的包含物理上連續的一堆block。inode尋址方面也一樣使用區段樹的方式進行了改進。

詳解Linux文件系統--EXT4文件系統,值得收藏

文件系統限制表

默認情況下,EXT4不再使用EXT3的block mapping分配方式 ,而改為Extent方式分配。

以下是ext4文件系統中一個文件的inode屬性示例,注意最後兩行的EXTENTS。

Inode: 12 Type: regular Mode: 0644 Flags: 0x80000
Generation: 476513974 Version: 0x00000000:00000001
User: 0 Group: 0 Size: 11
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
atime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
mtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
crtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
Size of extra inode fields: 28
EXTENTS:
(0):33409

2、磁盤佈局

Ext4文件系統的標準磁盤佈局如下:

詳解Linux文件系統--EXT4文件系統,值得收藏

Ext4文件系統主要使用塊組0中的超級塊和塊組描述符表,在其他一些特定塊組中有超級塊和塊組描述符表的冗餘備份。如果塊組中不含冗餘備份,那麼塊組就以數據塊位圖開始。當格式化磁盤成為Ext4文件系統的時候,mkfs將在塊組描述符表後面分配預留GDT表數據塊(“Reserve GDT blocks”)以用於將來擴展文件系統。緊接在預留GDT表數據塊後的是數據塊位圖與inode表位圖,這兩個位圖分別表示本塊組內的數據塊與inode表的使用,inode表數據塊之後就是存儲文件的數據塊了。

在這些各種各樣的塊中,超級塊、GDT、塊位圖、Inode位圖都是整個文件系統的元數據,當然inode表也是文件系統的元數據,但是inode表是與文件一一對應的,我更傾向於將inode當做文件的元數據,因為在實際格式化文件系統的時候,除了已經使用的十來個外,其他inode表中實際上是沒有任何數據的,直到創建了相應的文件才會分配inode表,文件系統才會在inode表中寫入與文件相關的inode信息。


3、EXT4文件系統的結構特徵

EXT4在總體結構上與EXT3相似,大的分配方向都是基於相同大小的塊組,每個塊組內分配固定數量的inode、可能的superblock(或備份)及GDT。

EXT4的inode 結構做了重大改變,為增加新的信息,大小由EXT3的128字節增加到默認的256字節,同時inode尋址索引不再使用EXT3的"12個直接尋址塊+1個一級間接尋址塊+1個二級間接尋址塊+1個三級間接尋址塊"的索引模式,而改為4個Extent片斷流,每個片斷流設定片斷的起始block號及連續的block數量(有可能直接指向數據區,也有可能指向索引塊區)。

片段流即下圖中索引節點(inde node block)部分的綠色區域,每個15字節,共60字節。

詳解Linux文件系統--EXT4文件系統,值得收藏

EXT4刪除數據後,會依次釋放文件系統bitmap空間位、更新目錄結構、釋放inode空間位。


4、EXT4使用多block分配方式。

在存儲數據時,ext3中的block分配器一次只能分配4KB大小的Block數量,而且每存儲一個block前就標記一次bmap。假如存儲1G的文件,blocksize是4KB,那麼每存儲完一個Block就將調用一次block分配器,即調用的次數為1024*1024/4KB=262144次,標記bmap的次數也為1024*1024/4=262144次。

而在ext4中根據區段來分配,可以實現調用一次block分配器就分配一堆連續的block,並在存儲這一堆block前一次性標記對應的bmap。這對於大文件來說極大的提升了存儲效率。


20多年來,EXT文件系統一直是許多Linux發行版的默認文件系統。它們需要少量的維護就能提供穩定性、高容量、可靠性和性能。毫無疑問,EXT4文件系統應該用於大多數Linux系統,除非有令人信服的理由去使用另一個文件系統。

後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~

"

概述

Linux系統的ext2和ext3文件系統存儲格式,使用block為存儲單元,每個block使用bmap中的位來標記是否空閒,儘管使用劃分塊組的方法優化提高了效率,但是一個塊組內部仍然使用bmap來標記該塊組內的block。對於一個巨大的文件,掃描整個bmap都將是一件浩大的工程。另外在inode尋址方面,ext2/3使用直接和間接的尋址方式,對於三級間接指針,可能要遍歷的指針數量是非常非常巨大的。那麼ext4文件系統又有什麼變化呢?

詳解Linux文件系統--EXT4文件系統,值得收藏


1、EXT4文件系統特點

ext4文件系統的最大特點是在ext3的基礎上使用區(extent,或稱為段)的概念來管理。一個extent儘可能的包含物理上連續的一堆block。inode尋址方面也一樣使用區段樹的方式進行了改進。

詳解Linux文件系統--EXT4文件系統,值得收藏

文件系統限制表

默認情況下,EXT4不再使用EXT3的block mapping分配方式 ,而改為Extent方式分配。

以下是ext4文件系統中一個文件的inode屬性示例,注意最後兩行的EXTENTS。

Inode: 12 Type: regular Mode: 0644 Flags: 0x80000
Generation: 476513974 Version: 0x00000000:00000001
User: 0 Group: 0 Size: 11
File ACL: 0 Directory ACL: 0
Links: 1 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
atime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
mtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
crtime: 0x5b628ca0:491d6224 -- Thu Aug 2 12:46:24 2018
Size of extra inode fields: 28
EXTENTS:
(0):33409

2、磁盤佈局

Ext4文件系統的標準磁盤佈局如下:

詳解Linux文件系統--EXT4文件系統,值得收藏

Ext4文件系統主要使用塊組0中的超級塊和塊組描述符表,在其他一些特定塊組中有超級塊和塊組描述符表的冗餘備份。如果塊組中不含冗餘備份,那麼塊組就以數據塊位圖開始。當格式化磁盤成為Ext4文件系統的時候,mkfs將在塊組描述符表後面分配預留GDT表數據塊(“Reserve GDT blocks”)以用於將來擴展文件系統。緊接在預留GDT表數據塊後的是數據塊位圖與inode表位圖,這兩個位圖分別表示本塊組內的數據塊與inode表的使用,inode表數據塊之後就是存儲文件的數據塊了。

在這些各種各樣的塊中,超級塊、GDT、塊位圖、Inode位圖都是整個文件系統的元數據,當然inode表也是文件系統的元數據,但是inode表是與文件一一對應的,我更傾向於將inode當做文件的元數據,因為在實際格式化文件系統的時候,除了已經使用的十來個外,其他inode表中實際上是沒有任何數據的,直到創建了相應的文件才會分配inode表,文件系統才會在inode表中寫入與文件相關的inode信息。


3、EXT4文件系統的結構特徵

EXT4在總體結構上與EXT3相似,大的分配方向都是基於相同大小的塊組,每個塊組內分配固定數量的inode、可能的superblock(或備份)及GDT。

EXT4的inode 結構做了重大改變,為增加新的信息,大小由EXT3的128字節增加到默認的256字節,同時inode尋址索引不再使用EXT3的"12個直接尋址塊+1個一級間接尋址塊+1個二級間接尋址塊+1個三級間接尋址塊"的索引模式,而改為4個Extent片斷流,每個片斷流設定片斷的起始block號及連續的block數量(有可能直接指向數據區,也有可能指向索引塊區)。

片段流即下圖中索引節點(inde node block)部分的綠色區域,每個15字節,共60字節。

詳解Linux文件系統--EXT4文件系統,值得收藏

EXT4刪除數據後,會依次釋放文件系統bitmap空間位、更新目錄結構、釋放inode空間位。


4、EXT4使用多block分配方式。

在存儲數據時,ext3中的block分配器一次只能分配4KB大小的Block數量,而且每存儲一個block前就標記一次bmap。假如存儲1G的文件,blocksize是4KB,那麼每存儲完一個Block就將調用一次block分配器,即調用的次數為1024*1024/4KB=262144次,標記bmap的次數也為1024*1024/4=262144次。

而在ext4中根據區段來分配,可以實現調用一次block分配器就分配一堆連續的block,並在存儲這一堆block前一次性標記對應的bmap。這對於大文件來說極大的提升了存儲效率。


20多年來,EXT文件系統一直是許多Linux發行版的默認文件系統。它們需要少量的維護就能提供穩定性、高容量、可靠性和性能。毫無疑問,EXT4文件系統應該用於大多數Linux系統,除非有令人信服的理由去使用另一個文件系統。

後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~

詳解Linux文件系統--EXT4文件系統,值得收藏

"

相關推薦

推薦中...