在 CentOS 中使用 OverlayFS(overlay) 时(常见于 Docker、Kubernetes、或者手动 mount overlay),排查错误可以从 内核日志、mount 参数、文件系统状态、权限与空间 几个方向入手。下面给你一套实用的排查思路。
CentOS 中 overlay 常见场景:
Docker / Kubernetes 存储驱动
docker info | grep -i storage
overlay2手动 mount overlay
mount -t overlay overlay -o lowerdir=,upperdir=,workdir= /mnt
系统层 overlay(如 ostree、coreos)
Overlay 报错 几乎都会进内核日志。
dmesg | tail -n 50
或持续查看:
dmesg -w
常见错误示例:
overlayfs: failed to resolve lowerdiroverlayfs: workdir is not emptyoverlayfs: upper fs does not support xattroverlayfs: invalid argument确保:
示例:
ls -ld /lower /upper /work
错误示例:
mount: wrong fs type, bad option, bad superblock
rm -rf /work/*
再重新 mount。
Overlay 需要:
userxattr 或原生 xattr 支持检查:
mount | grep " / "
解决:
-o userxattr
systemctl status docker
journalctl -u docker -n 100
常见错误:
storage-driver overlay2 not supportedpermission deniedno space left on devicedf -h
du -sh /var/lib/docker
清理:
docker system prune -a
df -i
临时验证:
setenforce 0
如果好了,说明是 SELinux 策略问题:
ausearch -m avc -ts recent
修复方式(示例):
semanage fcontext -a -e /var/lib/docker /srv/docker
restorecon -Rv /srv/docker
检查:
touch /upper/testfile
# 1. 内核日志
dmesg | tail -n 50
# 2. 挂载参数
mount | grep overlay
# 3. 目录状态
ls -ld lower upper work
# 4. 空间 & inode
df -h
df -i
# 5. SELinux
getenforce
# 6. Docker(如相关)
docker info
journalctl -u docker
你可以直接贴出:
dmesg 报错mount 命令或 Docker 报错cat /etc/redhat-release)uname -a)我可以按你的实际错误逐条分析。