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 文件系统将自动被挂载为只读。