在 CentOS 上快速配置 Overlay(overlayfs),通常分为 临时挂载 和 开机自动挂载 两种场景。下面以 CentOS 7 / 8 / Stream 为例,给出最常用、最简洁的方法。
lsmod | grep overlay
如果没有输出,手动加载:
modprobe overlay
确认内核支持(CentOS 7+ 基本都支持):
uname -r
cat /proc/filesystems | grep overlay
mkdir -p /mnt/overlay/{lower,upper,work,merged}
说明:
| 目录 | 作用 |
|---|---|
| lower | 只读层 |
| upper | 可写层 |
| work | overlay 工作目录(必须为空) |
| merged | 最终挂载点 |
mount -t overlay overlay \
-o lowerdir=/mnt/overlay/lower,\
upperdir=/mnt/overlay/upper,\
workdir=/mnt/overlay/work \
/mnt/overlay/merged
✅ 成功后:
df -h | grep overlay
echo "read-only" > /mnt/overlay/lower/test.txt
echo "write" > /mnt/overlay/merged/test.txt
lower/test.txt 只读merged/test.txt 写入发生在 upper//etc/fstabvim /etc/fstab
添加:
overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0
mount -a
df -h | grep overlay
如果你是为了 Docker 使用 overlay2:
cat /etc/docker/daemon.json
示例:
{
"storage-driver": "overlay2"
}
重启 Docker:
systemctl restart docker
✅ CentOS 7/8 默认内核都满足 overlay2 要求。
overlayfs: workdir is in-use
✅ 解决:
rm -rf /mnt/overlay/work/*
mount: wrong fs type, bad option
✅ 确保 lowerdir 存在:
mkdir -p /mnt/overlay/lower
mkdir -p /mnt/overlay/{lower,upper,work,merged} && \
mount -t overlay overlay -o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work /mnt/overlay/merged
如果你有 具体用途(Docker、LiveCD、只读根目录、容器根fs、k8s),我可以给你 针对性的 Overlay 配置方案。