XFS文件系統採用區段(extents)作為其空間管理的關鍵組件,通過邏輯偏移映射和區段狀態標志,支持稀疏文件並確保空間分配的連續性。區段大小固定,內部結構復雜,包括邏輯塊偏移、文件系統塊數等信息。存儲區段有兩種方式:簡單直接的區段列表和高效處理大量區段的B+樹結構。當文件需要的連續空間超過inode的限制,B+樹會介入,其根節點位於inode的分配區域,葉節點存儲按偏移排序的擴展塊數組,確保大文件的高效管理。
在XFS中,數據管理的核心是通過區段(extents)進行,每個區段由起始位置和長度定義,與inode中的邏輯偏移關聯。這種設計支持稀疏文件,且在空間不足時,會嘗試合並區段以保持連續性。每個區段的大小固定,內部結構復雜,如xfs_bmbt_rec結構,包含映射的邏輯塊和文件系統塊信息,以及區段狀態標識。
當文件所需的連續磁碟空間無法滿足時,XFS會使用多區段,同時處理多個文件的分配可能會導致區段交錯。其區段分配策略由內核中的分配器決定。區段大小為128位,採用緊湊布局存儲,內核管理的區段使用xfs_bmbt_irec結構,優化了磁碟上的存儲效率。
文件的區段信息存儲方式有兩種:一種是簡單的區段列表,適合小量區段,但限制了文件的擴展;另一種是B+樹擴展塊列表,用於處理大文件的區段映射,通過B+樹的結構優化查找和管理數千個區段。B+樹的根節點位於inode,葉節點存儲擴展塊,通過層級結構實現高效管理。