Extent
Extent 是「一段連續 physical blocks」的 range metadata:
start block + block count一個 file 可由多個 extents 組成;每段內部連續,段與段之間可分散。
file = extent A + extent B + extent CHow It Works
FCB / inode 保存 extent list 或 extent tree:
logical 0..99 → physical 1000, count 100
logical 100..179 → physical 8000, count 80找 logical block 時,先找所在 extent,再用 extent start + offset 得到 physical block。
Tradeoff
- 比純 D-OS-Ch14da-Contiguous_Allocation 更容易成長:file 長大時新增 extent。
- 比每 block 一個 pointer 更省 metadata:一筆 extent 可代表很多 blocks。
- 仍可能 fragmentation:extent 太多會降低 locality;extent 太大則可能浪費尾端空間。
Extent 是現代 file systems 常用折衷:metadata 小、sequential I/O 好、growth 彈性夠。