在 Ubuntu(以及一般的 Linux)里,OverlayFS 本身是支持“多层”叠加的,只是“多层”有两种常见理解,下面分开说,并给出用法示例。
OverlayFS 的 lowerdir 可以是一个冒号分隔的目录列表,从右到左优先级递减。
mount -t overlay overlay \
-o lowerdir=/lower1:/lower2:/lower3,upperdir=/upper,workdir=/work \
/merged
优先级规则:
/lower1 最优先(最上层 lower)/lower3 最低优先upperdir 优先级最高(可读写)mkdir -p /lower1 /lower2 /lower3 /upper /work /merged
mount -t overlay overlay \
-o lowerdir=/lower1:/lower2:/lower3,upperdir=/upper,workdir=/work \
/merged
这样 /merged 就是多层只读 + 一层可写。
如果你说的“多层级”是指:
在一个 overlay 的 merged 目录上,再 mount 一个新的 overlay
这是支持的,但有一些限制。
/merged1 (overlay A)
↑
/lowerX (overlay B 的 lowerdir 指向 /merged1)
# 第一层 overlay
mount -t overlay overlay \
-o lowerdir=/l1:/l2,upperdir=/u1,workdir=/w1 \
/merged1
# 第二层 overlay(嵌套)
mount -t overlay overlay \
-o lowerdir=/merged1:/l3,upperdir=/u2,workdir=/w2 \
/merged2
⚠️ 注意:
/merged1 必须是已挂载的 overlayworkdir 和 upperdir 不能共用如果你是用 systemd-mount 或容器(Docker / containerd):
Docker 镜像本身就是:
layer N
layer N-1
...
layer 1
通过 overlay2 存储驱动实现。
查看:
docker info | grep Storage
upperdir 挂两次如果你能具体说一下:
我可以直接给你一套可复制的命令或 fstab 配置。