OverlayFS需要较新的内核支持,CentOS 7系统内核版本需≥3.10.0-514(支持overlay2存储驱动)。通过uname -r命令查看内核版本,若版本过低,需升级内核(如使用yum update kernel)并重启系统。
OverlayFS要求底层文件系统支持d_type(目录项类型),若使用XFS文件系统,需确认ftype=1(支持d_type)。通过xfs_info /path/to/device(如/dev/sda1)检查ftype值,若为0,需重新格式化文件系统(注意:格式化会清除数据!):
mkfs.xfs -n ftype=1 /dev/sda1
对于ext4文件系统,d_type默认启用,无需额外配置。
若使用Docker,需确保存储驱动为overlay2(推荐)。通过docker info | grep -i storage查看当前驱动,若不是overlay2,修改/etc/docker/daemon.json文件:
{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
修改后重启Docker服务:systemctl restart docker。
SELinux可能阻止OverlayFS正常工作,临时禁用SELinux测试:setenforce 0,然后重启Docker服务。若问题解决,可修改/etc/selinux/config文件(将SELINUX=enforcing改为SELinux=permissive)或通过semanage命令调整策略(如允许Docker访问overlay目录)。
OverlayFS需要足够的磁盘空间存储数据,使用df -h命令检查底层文件系统的可用空间(重点关注/var/lib/docker等Docker默认存储路径),若空间不足,清理无用文件(如docker system prune -a清理Docker镜像、容器)。
OverlayFS的挂载参数(lowerdir、upperdir、workdir)必须正确,且目录需存在、可访问。通过mount | grep overlay查看当前挂载参数,确认:
lowerdir:只读底层目录(如/var/lib/docker/overlay2/lower);upperdir:可写上层目录(如/var/lib/docker/overlay2/upper);workdir:工作目录(如/var/lib/docker/overlay2/work)。upperdir需rw权限)。通过journalctl或/var/log/syslog查看与OverlayFS相关的错误信息(如overlayfs: failed to mount),日志会提示具体原因(如权限不足、目录不存在、内核模块未加载)。例如:
journalctl -u docker --no-pager -n 50 # 查看Docker相关日志
grep -i overlay /var/log/syslog # 查找OverlayFS错误
若修复了底层文件系统错误或调整了挂载参数,需重新挂载OverlayFS。首先卸载现有挂载(umount /mnt/overlay),然后重新挂载:
mount -t overlay overlay -o lowerdir=/path/to/lower,upperdir=/path/to/upper,workdir=/path/to/work /mnt/overlay
若需永久生效,可将挂载信息添加到/etc/fstab文件。
确保overlay内核模块已加载,通过lsmod | grep overlay查看。若未加载,手动加载:modprobe overlay,并为系统启动时自动加载创建脚本(/etc/sysconfig/modules/overlayfs.modules):
#!/bin/sh
/sbin/modinfo -F filename overlayfs /dev/null
if [ $? -eq 0 ]; then
/sbin/modprobe overlayfs
fi
赋予执行权限:chmod +x /etc/sysconfig/modules/overlayfs.modules。
若为Overlay网络故障(如Docker Swarm),需检查:
ip link show,确保接口UP);firewall-cmd --list-all,开放8472/udp端口,Overlay网络依赖该端口);ip route,确保默认网关正确)。