文件系統的核心功能就是實現對磁盤空間的管理,要知道哪些空間可以用,哪些空間不可以用。
基于固定功能區典型文件系統: Linux ExtX
ExtX将磁盤劃分為等份的若幹區域,這個區域被稱為塊組,磁盤空間的管理以塊組為單位,以下是磁盤分區的布局圖(以4K邏輯塊大小為例),其中塊組0最複雜,其他的相似。
ext2磁盤布局
概念說明:
我們使用如下命令可以創建并格式化一個文件系統:
brdd if=/dev/zero of=30m.file bs=1M count=30br
mkfs.ext2 30m.file -b 1K
然後使用dump2fs查看
Ext2 磁盤布局實例-1
如果塊大小為4K,那麼有如下塊組:
Ext2磁盤布局實例-2
原因:ExtX使用邏輯塊存儲數據位圖,當block = 1K時,對應的數據塊位圖可以管理1024 * 8個數據塊,即1024[一個block的size] * (1024 * 8) [block的數量]= 8M的空間,30M就需要4個塊組;當block = 4K時,對應的數據塊位圖可以管理4 * 1024 * 8個數據塊,即(4 * 1024) * (4 * 1028 *8) = 128M, 因此一個塊組就可以。
基于非固定功能區基于固定功能區的 磁盤空間管理布局空間智能清晰,便于手動進行丢失數據恢複,但是也容易出現資源不足的情況,比如海量小文件場景。
非固定功能區的磁盤空間管理也分為數據和元數據,但是元數據和數據的區域非固定,随着文件系統對資源的需求而動态分配,典型有XFS和NTFS。
XFS文件系統将磁盤劃分為等份的區域,稱為分配組(AG),XFS對每個分配組進行獨立管理,AG的容量可以很大,最大可以達到1TB。
xfs磁盤布局
概念說明:
XFS文件系統通過兩個B 樹來追蹤空閑空間,一個是基于塊編号索引,另一個是基于空閑塊的大小索引。
前面的磁盤布局方式都是原地修改,在随機IO比較多的情況下,不太适合SS設備,基于數據追加的磁盤布局方式,對數據的變更并非在原地修改,而是追加寫的方式寫到後面的剩餘空間,将随機寫轉化為順序寫。比如NILFS2。
NILFS2将磁盤劃分為若幹的Segment,Segment默認大小是8M。
NILFS2磁盤布局
NILFS2将文件分為若幹類,分别是常規文件、目錄文件、鍊接文件和元數據文件。而元數據文件包括:
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!