温馨提示×

ubuntu overlay如何做快照

小樊
34
2026-10-03 20:00:01
栏目: 智能运维

在 Ubuntu 里,“overlay” 通常有两种常见语境,需要先区分一下,否则方法完全不同:

  1. OverlayFS(overlay 文件系统) —— 用于容器、Live CD、只读根文件系统等
  2. LVM 的 thin provisioning / snapshot —— 有时也被叫做 overlay 类存储
  3. Docker 的 overlay2 存储驱动

下面我按最常见、最实用的情况来讲。


一、OverlayFS 本身怎么做“快照”

重要结论先说

OverlayFS 本身不支持快照。

OverlayFS 的结构是:

lowerdir (只读)
upperdir (可读写)
workdir  (内部用)
merged   (挂载点)

要“快照”,本质是:对 upperdir 做快照。


二、推荐做法:用 btrfs / LVM 给 upperdir 做快照

方案 1:btrfs 子卷快照(最简单,推荐)

如果你的 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 上


方案 2:LVM 快照(最通用)

  1. 把 upperdir 放在 LVM 逻辑卷上
  2. 创建快照:
lvcreate -L 1G -s -n upper_snap /dev/vg0/upper
  1. 恢复:
umount /merged
lvconvert --merge /dev/vg0/upper_snap

✅ 适合生产环境
❌ 配置略复杂


三、Docker overlay2 的“快照”怎么做

Docker 本身不提供 overlay2 快照命令,但你可以:

方法 1:docker commit(应用级快照)

docker commit container_id myimage:snap1

方法 2:备份 overlay2 目录(不推荐但可行)

/var/lib/docker/overlay2/

⚠️ 必须在 Docker 停止时操作


四、Ubuntu Live / 系统 overlay 的快照思路

如果你是:

  • Ubuntu Live USB
  • overlayroot

那么:

  • 不能对 running overlay 做快照
  • 只能:
    • 备份 upperdir
    • 或导出整个改动目录

五、总结建议

场景 推荐方案
自己用 overlay btrfs 子卷快照
服务器 LVM 快照
Docker docker commit
Live 系统 备份 upperdir

如果你能告诉我:

  • 是用 overlay 做什么(容器 / 系统 / 自定义)
  • upperdir 在哪个文件系统

我可以直接给你可复制的完整命令。

0 踩