Overlay文件系統通過聯合掛載將多個目錄層(lowerdir、upperdir等)合并為統一視圖,核心工作流程如下:
-
組成結構
- lowerdir:只讀層,存儲基礎文件(如容器鏡像層)。
- upperdir:可寫層,保存用戶修改的數據。
- merged:最終呈現的合并視圖,用戶直接訪問。
- workdir:臨時工作目錄,確保操作原子性(如刪除時創建whiteout文件)。
-
關鍵操作邏輯
- 文件讀取:
- 先在upperdir查找,存在則直接讀取。
- 不存在則到lowerdir查找,支持多層lowerdir疊加。
- 文件修改:
- 若修改upperdir已有文件,直接寫入upperdir。
- 若修改lowerdir文件,觸發寫時復制(CoW):將文件從lowerdir復制到upperdir,再在上層修改。
- 文件刪除:
- 刪除lowerdir文件時,在upperdir創建whiteout文件(隱藏lower層文件)。
- 刪除upperdir文件時,標記為opaque(直接刪除)。
-
特性與優勢
- 節省空間:僅存儲差異數據,避免重復拷貝基礎層。
- 性能優化:多數操作在upperdir完成,減少磁盤IO。
- 原子性操作:通過workdir確保修改的完整性。
典型應用:Docker容器存儲、Live CD/USB、軟件測試環境等。
掛載命令示例:
mount -t overlay overlay -o lowerdir=/lower1:/lower2,upperdir=/upper,workdir=/work /merged