OverlayFS需要CentOS系统内核版本支持(CentOS 7内核需≥3.10.0-514)。通过以下命令检查内核版本:
uname -r
若版本低于要求,需升级内核后再使用Overlay功能。
确认overlay
内核模块已加载(OverlayFS的核心模块):
lsmod | grep overlay
若未加载,手动加载模块:
modprobe overlay
为确保开机自动加载,可创建/etc/modules-load.d/overlay.conf
文件,写入overlay
并重启系统。
使用mount
命令过滤出OverlayFS挂载信息,确认挂载参数(lowerdir
、upperdir
、workdir
)是否正确:
mount | grep overlay
输出示例:
overlay on /var/lib/docker/overlay2/... type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/lower,upperdir=/var/lib/docker/overlay2/upper,workdir=/var/lib/docker/overlay2/work)
关键检查项:lowerdir
(底层目录,存储镜像层)、upperdir
(上层目录,存储容器修改)、workdir
(工作目录,OverlayFS内部使用)必须存在且可访问。
手动检查lowerdir
、upperdir
、workdir
目录是否存在:
ls -ld /path/to/lowerdir /path/to/upperdir /path/to/workdir
确保目录权限正确(通常为755
),且磁盘空间充足:
df -h /path/to/lowerdir /path/to/upperdir
磁盘空间不足会导致OverlayFS无法写入新数据。
Docker默认使用overlay2
作为存储驱动(推荐),通过以下命令检查:
docker info | grep -i "storage driver"
若输出为overlay2
,则配置正确;若为aufs
或其他驱动,需修改Docker配置文件(/etc/docker/daemon.json
):
{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
修改后重启Docker服务:
systemctl restart docker
再次验证存储驱动是否更新。
通过以下命令检查容器运行状态(间接反映OverlayFS是否正常):
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括停止的)
若容器无法启动或报错(如overlay2
相关错误),需进一步检查日志:
docker logs <container_id>
同时,查看镜像层信息(OverlayFS存储镜像层):
docker images
若镜像无法拉取或层丢失,可能是OverlayFS挂载问题。
使用dmesg
命令过滤OverlayFS相关错误信息:
dmesg | grep -i overlay
常见错误包括:lowerdir
不存在、权限不足、磁盘空间满等,根据日志提示修复问题。
使用journalctl
查看系统日志(适用于CentOS 7+):
journalctl -u docker --no-pager | grep -i overlay
journalctl -k | grep -i overlay
日志中可能包含OverlayFS挂载失败、网络问题等详细信息。
若使用Overlay网络(如Docker Swarm、Kubernetes),需额外检查网络配置:
使用ping
测试节点间连通性:
ping <other_node_ip>
确保防火墙允许Overlay网络流量(如Docker默认使用2377/tcp
、7946/tcp/udp
、4789/udp
端口):
firewall-cmd --list-all
临时禁用防火墙测试是否为防火墙导致的问题:
systemctl stop firewalld
检查容器内路由表(进入容器):
docker exec -it <container_id> ip route
确认默认网关正确,且MTU设置与物理网络匹配(避免因MTU不匹配导致丢包):
docker exec -it <container_id> ip link show
若MTU过大,可调整容器内接口MTU:
docker exec -it <container_id> ip link set dev eth0 mtu 1400
SELinux冲突:若启用了SELinux,可能阻止OverlayFS访问目录。临时禁用SELinux测试:
setenforce 0
若问题解决,可修改/etc/sysconfig/selinux
文件,将SELINUX=enforcing
改为SELINUX=permissive
,或配置SELinux策略允许OverlayFS访问。
底层文件系统不支持d_type:XFS文件系统需支持d_type
(默认开启),若未开启,需重新格式化(注意:格式化会清除数据):
mkfs.xfs -n ftype=1 /dev/path/to/device
ext4文件系统默认支持d_type
,无需额外配置。