在 Ubuntu 里,“overlay” 通常有两种常见语境,需要先区分一下,否则方法完全不同:
下面我按最常见、最实用的情况来讲。
OverlayFS 本身不支持快照。
OverlayFS 的结构是:
lowerdir (只读)
upperdir (可读写)
workdir (内部用)
merged (挂载点)
要“快照”,本质是:对 upperdir 做快照。
如果你的 upperdir 在 btrfs 文件系统上:
# 假设
# lower: /ro/root
# upper: /rw/upper
# work: /rw/work
# merge: /merged
mount -t overlay overlay \
-o lowerdir=/ro/root,upperdir=/rw/upper,workdir=/rw/work \
/merged
创建快照:
btrfs subvolume snapshot /rw/upper /rw/upper_snap_$(date +%F)
恢复:
umount /merged
rm -rf /rw/upper
btrfs subvolume snapshot /rw/upper_snap_xxx /rw/upper
mount -t overlay overlay ...
✅ 优点:秒级快照
❌ 要求:upper 在 btrfs 上
lvcreate -L 1G -s -n upper_snap /dev/vg0/upper
umount /merged
lvconvert --merge /dev/vg0/upper_snap
✅ 适合生产环境
❌ 配置略复杂
Docker 本身不提供 overlay2 快照命令,但你可以:
docker commit container_id myimage:snap1
/var/lib/docker/overlay2/
⚠️ 必须在 Docker 停止时操作
如果你是:
overlayroot那么:
upperdir| 场景 | 推荐方案 |
|---|---|
| 自己用 overlay | btrfs 子卷快照 |
| 服务器 | LVM 快照 |
| Docker | docker commit |
| Live 系统 | 备份 upperdir |
如果你能告诉我:
我可以直接给你可复制的完整命令。