温馨提示×

如何挂载linux overlay

小樊
47
2026-09-09 13:13:54
栏目: 智能运维

在 Linux 中,OverlayFS(overlay) 常用于容器、Live CD、只读根文件系统等场景。下面从原理 → 手动挂载 → 常用参数 → 示例 → 排错逐步说明。


一、OverlayFS 基本原理

Overlay 把多个目录“叠”在一起:

  • lowerdir:只读层(可以多层,用 : 分隔)
  • upperdir:可读写层(只能一层)
  • workdir:临时工作目录(必须和 upperdir 同文件系统)
  • merged:最终挂载点(你看到的内容)
merged = lowerdir ∪ upperdir(upper 优先)

二、手动挂载 overlay

1️⃣ 准备目录

mkdir -p /lower /upper /work /merged

写入测试文件:

echo "lower" > /lower/file.txt
echo "upper" > /upper/file.txt

2️⃣ 挂载 overlay

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

3️⃣ 查看结果

ls /merged
cat /merged/file.txt

输出是 upper 的内容(upper 覆盖 lower)


三、多 lowerdir(只读层叠加)

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

⚠ 注意:

  • 从左到右,右边优先级更高
  • lower 层必须是只读的

四、fstab 中挂载(开机自动)

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

五、Docker / 容器中的 overlay

Docker 默认使用:

  • overlay2(推荐)
  • overlay

查看:

docker info | grep Storage

创建容器时自动使用 overlay,无需手动挂载。


六、常见用途示例

✅ 只读系统 + 可写层

mount -t overlay overlay \
  -o lowerdir=/ro_root,upperdir=/rw/upper,workdir=/rw/work \
  /new_root

适合:

  • 嵌入式
  • Live Linux
  • 安全环境

七、常见问题 & 排错

❌ workdir 和 upperdir 不在同一文件系统

mount: wrong fs type, bad option, workdir and upperdir must be same fs

✅ 解决:

mkdir -p /data/upper /data/work

❌ 内核不支持 overlay

cat /proc/filesystems | grep overlay

若无输出:

  • 升级内核(≥ 3.18,推荐 ≥ 4.15)

❌ SELinux 阻止

setenforce 0
# 或加 mount 参数
-o context="system_u:object_r:container_file_t:s0"

八、卸载

umount /merged

如果你有具体使用场景(比如 容器、嵌入式、根目录 overlay、Docker 存储优化),可以告诉我,我可以给你更精确的配置方案。

0