温馨提示×

ubuntu overlay为何不生效

小樊
42
2026-10-15 12:51:59
栏目: 智能运维

你问的“Ubuntu overlay 不生效”通常指 OverlayFS(overlay / overlay2)挂载后内容没按预期合并,或者 Docker 的 overlay2 存储驱动没起作用。下面按最常见原因给你排查清单。


一、先明确你说的是哪种 overlay

  1. 手动 mount -t overlay(系统层 overlayfs)
  2. Docker 使用的 overlay2 存储驱动
  3. initramfs / livecd 中的 overlay(如持久化 Ubuntu Live)

如果是 Docker,请直接看第三节。


二、手动 overlay 不生效的常见原因

1️⃣ lowerdir / upperdir / workdir 路径错误

overlay 要求:

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

❌ 常见错误:

  • workdir 和 upperdir 在同一文件系统但不是空目录
  • workdir 放在 lowerdir 里
  • 路径写错但 mount 没报错(实际没挂载成功)

✅ 检查:

mount | grep overlay
ls /merged

2️⃣ upperdir 或 workdir 不是可写文件系统

  • 在 只读根文件系统(如 Live CD)
  • 在 NFS / 某些 FUSE
  • 在 tmpfs 但空间为 0

✅ 测试:

touch /upper/test

3️⃣ lowerdir 有多个但顺序写错

lowerdir=/a:/b

⚠️ 左边优先级更高
写反会导致“文件被覆盖但不生效”


4️⃣ 内核不支持 overlay

Ubuntu 一般没问题,但:

  • 老内核(< 3.18)
  • 某些云厂商定制内核

✅ 检查:

cat /proc/filesystems | grep overlay
lsmod | grep overlay

5️⃣ AppArmor / SELinux 限制

特别是 Docker 或 snap 环境:

✅ 临时测试:

sudo apparmor_parser -R /etc/apparmor.d/*

三、Docker overlay2 不生效(非常常见)

1️⃣ Docker 没用 overlay2

docker info | grep Storage

如果不是 overlay2:

sudo nano /etc/docker/daemon.json
{
  "storage-driver": "overlay2"
}
sudo systemctl restart docker

2️⃣ 文件系统不支持

overlay2 要求:

  • ext4 ✅
  • xfs ✅(需 ftype=1)
  • btrfs ❌(不推荐)

✅ 检查 xfs:

xfs_info / | grep ftype

如果是 ftype=0,overlay2 会 fallback 或失败。


3️⃣ /var/lib/docker 在错误位置

例如:

  • 在 NTFS
  • 在 NFS
  • 在加密 home

✅ 建议:

sudo mv /var/lib/docker /data/docker
sudo ln -s /data/docker /var/lib/docker

四、Ubuntu Live + overlay 持久化不生效

常见于:

persistent

但:

  • U 盘格式不对
  • casper-rw 没创建
  • 内核参数写错

✅ 正确示例:

boot=casper persistent

五、快速自检命令(复制即可用)

mount | grep overlay
docker info | grep -i storage
cat /proc/filesystems | grep overlay
ls -ld /upper /work /lower /merged

六、如果你愿意,我可以更精准帮你

请告诉我:

  1. Ubuntu 版本(lsb_release -a)
  2. 你是 手动 overlay 还是 Docker
  3. 具体现象(文件看不到?写不进?挂载失败?)
  4. 报错信息(如果有)

我可以直接帮你写一条能用的 mount 命令或 Docker 配置。

0 踩