学习 Ubuntu 下的 Overlay(OverlayFS),建议从“概念 → 基本用法 → 实战 → 排错 → 进阶”这条路线走。下面我按这个顺序给你一个系统性的学习指南。
OverlayFS 是一种 联合文件系统(Union Filesystem),可以把多个目录“叠”在一起:
在 Ubuntu 中常用于:
uname -r
lsmod | grep overlay
如果没有:
sudo modprobe overlay
Ubuntu 16.04+ 默认支持。
mkdir -p /tmp/overlay/{lower,upper,work,merged}
echo "I am lower" | sudo tee /tmp/overlay/lower/file.txt
sudo mount -t overlay overlay \
-o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
/tmp/overlay/merged
cat /tmp/overlay/merged/file.txt
修改文件:
echo "modified" | sudo tee /tmp/overlay/merged/file.txt
你会发现:
lower/file.txt 不变upper/file.txt 被创建rm /tmp/overlay/merged/file.txt
会在 upper 创建:
upper/file.txt (whiteout)
lowerdir=/a:/b:/c
后写的层优先级更高。
Docker 默认使用 overlay2:
docker info | grep Storage
路径一般在:
/var/lib/docker/overlay2
例如:
⚠️ 这个需要 initramfs 修改,不建议新手直接做
overlay 挂载 → 测试软件 → 卸载 → 系统无痕
/etc/systemd/system/overlay.mount[Unit]
Description=Overlay Test
[Mount]
What=overlay
Where=/mnt/merged
Type=overlay
Options=lowerdir=/lower,upperdir=/upper,workdir=/work
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start overlay.mount
workdir must be on same fs as upperdir
sudo umount /tmp/overlay/merged
若 busy:
lsof +D /tmp/overlay/merged
man overlay
不要只看,一定自己 mount 一次
如果你愿意,我可以:
你现在是想“理解原理”还是“直接用到某个项目里”?