在 CentOS 上使用 overlay(OverlayFS,常用于 Docker、Kubernetes、容器存储、或使用 overlay 做根文件系统)时,有几个关键点和常见坑需要注意。下面按使用场景和通用注意项说明。
OverlayFS 需要 内核 ≥ 3.18(生产推荐 ≥ 4.x)
elrepo 的 kernel-ml 或 kernel-lt)uname -r
cat /proc/filesystems | grep overlay
overlay2,不要用 overlayoverlay:旧实现,问题多overlay2:稳定、性能好docker info | grep Storage
✅ 支持:
xfsext4❌ 不支持:
btrfs(Docker 不推荐)overlay 上再叠 overlayXFS 必须开启 d_type
xfs_info / | grep ftype
ftype=1 ✅ftype=0 ❌(Docker 会警告或失败)修复方法:重新格式化并加参数
mkfs.xfs -n ftype=1 /dev/sdX
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
注意:
workdir 必须和 upperdir 同文件系统workdir 不能是挂载点lowerdir 可以是多个(冒号分隔)lowerdir=/a:/b:/c
常见错误:
临时
setenforce 0
永久(不推荐生产)
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
正确做法
container-selinuxsemanage fcontext -a -e /var/lib/docker /your/path
restorecon -Rv /your/path
Docker 场景:
userns-remap注意:
No space left on devicedf -i
# 查看是否支持
lsmod | grep overlay
cat /proc/filesystems
# Docker
docker info
journalctl -u docker
# 手动挂载测试
mount -t overlay overlay -o lowerdir=,upperdir=,workdir= /mnt
✅ 使用 CentOS 8 / Stream
✅ 使用 overlay2
✅ XFS + ftype=1
✅ SELinux 正确配置
✅ upper/work 同文件系统
❌ 不要在 overlay 上再叠 overlay
❌ 不要用 btrfs
如果你能说明是 Docker / K8s / 手动 overlay / 根文件系统读写分离,我可以给你更针对性的配置示例。