在 CentOS 上 overlay(overlayfs,常见于 Docker、Kubernetes、容器存储)变慢,通常不是单一原因,而是下面几类问题叠加。我按「最常见 → 较少见」给你梳理一下,并给出排查方法。
overlay 推荐跑在:
❌ 常见坑:
ftype=1(d_type)检查 xfs 是否支持 d_type:
xfs_info /var/lib/docker | grep ftype
应该是:
ftype=1
如果是 ftype=0,Docker 会警告且性能极差。
overlay 是 联合挂载:
ls、stat、open 频繁时现象:
ls 慢✅ 优化:
docker build --squashoverlay 的写操作只发生在:
upperdirworkdir如果这些在:
就会明显变慢。
建议:
# Docker
/var/lib/docker/overlay2 → SSD
# K8s
/var/lib/containers → SSD
overlay 对 inode 极敏感。
检查:
df -i /var/lib/docker
即使磁盘空间还有,inode 满也会:
CentOS 7 默认内核:
✅ 建议:
kernel 4.x+在 CentOS 上:
判断:
getenforce
如果是 Enforcing 且性能异常:
setenforce 0
overlay 不适合:
正确做法:
/tmp 挂 tmpfsoverlay 在多容器同时:
会出现锁竞争
# 1. 文件系统类型
df -T /var/lib/docker
# 2. xfs d_type
xfs_info /var/lib/docker | grep ftype
# 3. inode
df -i
# 4. IO 等待
iostat -x 1
# 5. 挂载参数
mount | grep overlay
CentOS 上 overlay 变慢,80% 是:xfs 没开 d_type / upper 在慢盘 / inode 满 / 镜像层太深
如果你愿意,可以把下面信息发我,我可以直接帮你定位:
mount | grep overlaydf -i