温馨提示×

centos overlay配置失败咋办

小樊
36
2026-09-24 10:39:21
栏目: 智能运维

在 CentOS 上使用 overlay(常见于 Docker overlay2、OverlayFS 挂载、Kubernetes 存储)配置失败时,可以按下面思路逐步排查。


一、先确认你用的是哪种 overlay

常见场景:

  1. Docker 的 overlay2 存储驱动
  2. 手动 mount -t overlay
  3. Kubernetes / containerd 使用 overlay

不同场景排查重点略有不同,但根因常集中在:

  • 内核不支持
  • 文件系统不支持
  • SELinux / 权限
  • 目录结构不对
  • 参数写错

二、通用排查步骤(必做)

1️⃣ 检查内核是否支持 overlay

cat /proc/filesystems | grep overlay

lsmod | grep overlay

如果没有:

modprobe overlay

仍失败说明:

  • 内核太老(CentOS 7 建议 ≥ 3.10.0-514)
  • 或用了不支持 overlay 的云镜像

2️⃣ 检查文件系统类型

overlay 不支持

  • xfs 未开启 ftype=1
  • 某些 NFS / FAT

查看:

df -T

如果是 XFS:

xfs_info /var/lib/docker | grep ftype

必须是:

ftype=1

CentOS 7 常见坑:
默认 XFS 没开 ftype=1 → overlay2 必失败


3️⃣ 手动测试 overlay 是否能挂载

mkdir -p /tmp/overlay/{lower,upper,work,merged}
mount -t overlay overlay \
  -o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work \
  /tmp/overlay/merged

失败看报错:

dmesg | tail
journalctl -xe

三、Docker overlay2 配置失败常见原因

1️⃣ Docker 启动报错

failed to start daemon: error initializing graphdriver

✅ 解决:

cat /etc/docker/daemon.json

确保:

{
  "storage-driver": "overlay2"
}

然后:

systemctl restart docker

2️⃣ SELinux 导致失败

临时关闭测试:

setenforce 0

若成功:

vim /etc/sysconfig/selinux
SELINUX=permissive

或在 daemon.json:

{
  "selinux-enabled": true
}

3️⃣ /var/lib/docker 在错误分区

不要用:

  • NFS
  • 加密目录
  • 软链接目录

建议:

mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker

四、Kubernetes / containerd 场景

检查:

containerd config default > /etc/containerd/config.toml

确认:

[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  snapshotter = "overlayfs"

重启:

systemctl restart containerd

五、常见错误速查表

报错 原因
overlayfs: missing lowerdir 目录不存在
cannot mount overlay: invalid argument workdir/upperdir 同分区
overlay2 not supported 内核或 ftype
permission denied SELinux / 权限

六、如果你愿意

你可以直接贴出:

  • CentOS 版本(cat /etc/redhat-release
  • 内核版本
  • 具体报错信息

我可以 精确告诉你哪一步错了,怎么改

0