温馨提示×

ubuntu overlay配置要注意啥

小樊
34
2026-09-12 16:46:49
栏目: 智能运维

在 Ubuntu 上配置 Overlay(overlayfs),常用于容器、Live CD、只读根文件系统、系统升级等场景。下面从使用方式、内核/版本要求、常见坑几个方面说明需要注意的点。


一、基本概念

OverlayFS 需要:

  • lowerdir:只读层(可以多个,用 : 分隔)
  • upperdir:可写层(只能一个)
  • workdir:工作目录(必须和 upperdir 同文件系统)
  • merged:挂载后看到的统一目录

二、内核与版本要求

  • Ubuntu 14.04+:通常已支持 overlay(早期叫 overlayfs
  • 推荐使用 Ubuntu 16.04+
  • 检查是否支持:
cat /proc/filesystems | grep overlay
modprobe overlay

三、基本挂载示例

mount -t overlay overlay \
  -o lowerdir=/ro,upperdir=/rw/upper,workdir=/rw/work \
  /merged

目录要求:

/ro        (只读,lower)
/rw/upper  (可读写)
/rw/work   (空目录)
/merged    (挂载点)

四、常见注意事项(重点)

1️⃣ workdir 必须存在且为空

  • workdir 不能和 upperdir 相同
  • 必须提前创建
mkdir -p /rw/upper /rw/work /merged

2️⃣ upperdir 和 workdir 必须在同一文件系统

❌ 错误示例:

upperdir=/mnt/sda1/upper
workdir=/mnt/sdb1/work

✅ 正确:

upperdir=/mnt/sda1/upper
workdir=/mnt/sda1/work

3️⃣ lowerdir 可以是多个

-o lowerdir=/a:/b:/c
  • 优先级:左边优先
  • 都是只读

4️⃣ 权限问题

  • upperdir 的权限决定写入能力
  • 如果以 root 挂载,普通用户可能无权访问
  • 可加:
-o userxattr

5️⃣ SELinux / AppArmor

Ubuntu 默认用 AppArmor

  • 某些服务(docker、snap)可能限制 overlay
  • 排查:
dmesg | grep apparmor

6️⃣ Docker / Kubernetes 场景

Docker 默认就用 overlay2:

docker info | grep Storage

注意:

  • 使用 overlay2 而非旧 overlay
  • 文件系统推荐 ext4 / xfs

7️⃣ 卸载问题

必须:

umount /merged

不能直接删目录,否则可能卡死。


8️⃣ 系统重启后失效

Overlay 是临时挂载

  • 写入 /etc/fstab
overlay /merged overlay \
  lowerdir=/ro,upperdir=/rw/upper,workdir=/rw/work 0 0

五、典型使用场景

  • 只读系统 + 可写层(工控、嵌入式)
  • 系统升级(A/B 分区)
  • 容器存储
  • Live USB

六、调试建议

mount | grep overlay
dmesg | tail
strace mount ...

如果你能说下具体用途(比如 Docker、根目录只读、PXE、嵌入式),我可以给你更针对性的配置示例。

0