温馨提示×

Linux overlay怎么挂载

小樊
36
2026-07-21 19:45:36
栏目: 智能运维

在 Linux 中,overlay 文件系统(Overlay Filesystem)可以把多个目录合并成一个统一的挂载点,常用于容器(如 Docker)、Live CD、只读根文件系统等场景。下面按常见用法 → 实战示例 → 常见问题来说明。


一、overlay 是什么?

overlay 是一种联合文件系统(union filesystem)

  • 多个目录(lowerdir)和一个可写目录(upperdir)
  • 在上层目录(upperdir)中修改文件
  • 下层目录(lowerdir)保持只读
  • 用户看到的是“合并后的目录”

二、overlay 挂载的基本结构

mount -t overlay overlay \
  -o lowerdir=<lower>,upperdir=<upper>,workdir=<work> \
  <挂载点>

目录说明

目录 作用
lowerdir 只读层(可以多个)
upperdir 可写层
workdir 工作目录(必须为空)
挂载点 最终看到的目录

⚠️ workdir 不能与 upperdir / lowerdir 相同


三、最简单示例(单层 lower)

1️⃣ 创建目录

mkdir -p /tmp/overlay/{lower,upper,work,merged}

2️⃣ 在 lower 中放点文件

echo "hello from lower" > /tmp/overlay/lower/file.txt

3️⃣ 挂载 overlay

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

4️⃣ 查看效果

cat /tmp/overlay/merged/file.txt
# hello from lower

修改文件:

echo "modified" >> /tmp/overlay/merged/file.txt
cat /tmp/overlay/upper/file.txt

✅ 修改只发生在 upperdir


四、多层 lowerdir(常见)

mount -t overlay overlay \
  -o lowerdir=/lower1:/lower2:/lower3,upperdir=/upper,workdir=/work \
  /merged

规则:

  • 左边的优先级更高
  • 同名文件以最左层为准

五、fstab 中挂载 overlay

overlay /mnt/merged overlay
  lowerdir=/lower,upperdir=/upper,workdir=/work
  0 0

或完整写法:

overlay /mnt/merged overlay defaults,lowerdir=/lower,upperdir=/upper,workdir=/work 0 0

六、Docker / 容器中的 overlay

Docker 通常使用:

  • overlay2
  • 多层 lower
  • /var/lib/docker/overlay2

查看示例:

mount | grep overlay

七、卸载 overlay

umount /tmp/overlay/merged

⚠️ 如果提示 busy:

fuser -m /tmp/overlay/merged

八、常见错误

❌ workdir 不为空

overlay: workdir is in-use

✅ 解决:清空 workdir


❌ upperdir / workdir 在同一文件系统

有时需要同一文件系统(ext4/xfs)


❌ lowerdir 不存在

mount: No such file or directory

九、典型使用场景

  • Docker / Podman
  • Live CD / Live USB
  • 只读根文件系统 + 可写层
  • 系统恢复环境
  • 嵌入式系统

如果你愿意,可以告诉我:

  • ✅ 是 Docker / 容器
  • 系统根目录
  • 嵌入式 / 只读系统
  • 具体报错信息

我可以直接给你针对场景的完整挂载方案

0