跳至內容

Overlay 文件系統

出自 Arch Linux 中文维基

引入 overlayfs 的內核 commit有云:

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 文件系統將自動被掛載為只讀。

參考資料