在 CentOS 上使用 overlay / overlay2(常见于 Docker、Kubernetes、或者手动 mount overlay 文件系统)时,报错原因很多。下面按常见场景 + 对应解决办法给你一个实战清单。
overlay: mount failed: invalid argument典型原因
解决
# 查看内核是否支持
cat /proc/filesystems | grep overlay
# 查看 overlay 模块
lsmod | grep overlay
modprobe overlay
确保:
upperdir 和 workdir 在同一文件系统lowerdir 可多个,但必须是只读目录cannot mount overlay, workdir and upperdir must be on same fs原因
解决
df -h /path/upper /path/work
改成:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/data/upper,workdir=/data/work \
/mnt
overlay2: the backing xfs filesystem is formatted without d_type support原因
ftype=1检查
xfs_info / | grep ftype
如果是 ftype=0:
✅ 只能重做文件系统
mkfs.xfs -n ftype=1 /dev/sdX
⚠️ Docker 官方推荐:
permission denied 或 operation not permitted原因
解决
# 临时关闭测试
setenforce 0
或加 SELinux 标签:
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/mnt
chcon -Rt svirt_sandbox_file_t /upper /work
overlay2 driver not supported解决 编辑:
/etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
然后:
systemctl restart docker
确认:
docker info | grep Storage
| CentOS | 推荐 |
|---|---|
| 7 | overlay2(需 3.10+) |
| 8 | overlay2(默认) |
| 6 | ❌ 不推荐(用 devicemapper) |
uname -r
cat /proc/filesystems | grep overlay
docker info
dmesg | tail
journalctl -xe
你可以直接贴出:
docker info 或 mount 输出我可以一步一步帮你定位 ✅