Overlay 文件系統
- Overlayfs 允許通常需要讀寫的目錄樹覆蓋到另一個只讀的目錄樹上。所有的修改將作用於可寫的上層目錄。這種機制經常被用於 live CD,不過也有許多其他用途。
- 該實現與其他「聯合文件系統」實現的差異是,文件打開後的所有操作都直接作用於底層(上層或下層)的文件系統。這簡化了實現方式,並允許其能獲得原生級別的性能。
Linux 內核於 3.18 加入 overlayfs。
安裝
overlayfs 在默認內核中就已開啟,並在運行 mount 命令時會自動加載 overlay 內核模塊。
使用方法
可以使用以下 mount 選項來掛載 overlay 文件系統:
# mount -t overlay overlay -o lowerdir=/lower,upperdir=/upper,workdir=/work /merged
注意:工作目錄 (
workdir) 必須是和上層目錄處於同一文件系統中的空目錄。- 下層目錄可以是只讀目錄,也可以同樣是 overlay。
- 上層目錄一般來說是可寫的。
- 工作目錄用於準備層與層之間交換的文件。
lower 目錄可以是由 : 分隔的一系列目錄,所有在 merged 目錄中的更改會反映到 upper 目錄中。
示例:
# mount -t overlay overlay -o lowerdir=/lower1:/lower2:/lower3,upperdir=/upper,workdir=/work /merged
注意:填寫下層目錄時,最右側的目錄層級最低;上層目錄則被放在從左向右排列的下層目錄整體的左側,而不是下層目錄最右側一項的左側,儘管看起來好像是這樣的。
上述示例會產生下方的堆疊順序:
/upper /lower1 /lower2 /lower3
可以使用下面的格式添加一項 overlay 掛載到 /etc/fstab 中。
/etc/fstab
overlay /merged overlay noauto,x-systemd.automount,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0
有必要添加 noauto 和 x-systemd.automount mount 選項以避免 systemd 在掛載 overlayfs 失敗時阻塞啟動。只有當掛載的 overlayfs 被第一次訪問時,它才會被真正掛載。掛載就緒前,內核會緩衝訪問請求。另請參閱 fstab#通過 systemd 自動掛載。
只讀 overlay
有時候,您可能只是想創建多個目錄的組合只讀視圖。此時可以使用以下方式輕鬆創建視圖,而不需要指定 upper 目錄和 work 目錄:
# mount -t overlay overlay -o lowerdir=/lower1:/lower2 /merged
當 upper 目錄未指定時,overlay 文件系統將自動被掛載為只讀。