CentOS Overlay 配置测试指南
一 环境检查
- 检查内核是否支持 OverlayFS:执行命令查看内核是否内置 overlay 模块,命令为:cat /proc/filesystems | grep overlay。若输出包含 overlay,表示内核支持。该检查用于确认系统具备运行 OverlayFS 的基础条件。
- 检查底层文件系统与 d_type:Overlay(尤其是 Docker 的 overlay2)要求底层文件系统支持 d_type。对 XFS 可使用 xfs_info 检查 ftype 是否为 1;如未启用,需以 ftype=1 重新格式化。示例:mkfs.xfs -n ftype=1 /dev/path/to/device。
- 如要在用户态挂载或容器构建场景使用,可安装 fuse-overlayfs:sudo yum install -y fuse-overlayfs fuse。该包提供用户态的 OverlayFS 实现,便于在不依赖内核模块的场景测试。
二 最小化手工挂载测试步骤
- 创建目录结构:mkdir -p /mnt/overlay/{lower,upper,work,merged}。其中 lower 为只读层、upper 为可写层、work 为工作目录、merged 为合并视图。
- 准备测试文件:echo “This is a test file in the lower directory” > /mnt/overlay/lower/testfile.txt。用于验证合并视图与上层覆盖效果。
- 挂载 Overlay:sudo mount -t overlay overlay -o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work /mnt/overlay/merged。注意 lowerdir 可指定多个只读层(用“:”分隔),顺序从左到右优先级递增。
- 验证挂载与合并结果:
- 查看挂载点与类型:df -h /mnt/overlay/merged 或 mount | grep overlay,确认挂载成功且类型为 overlay。
- 查看合并内容:ls -l /mnt/overlay/merged,应能看到 lower 的内容;若存在同名文件,upper 的内容应覆盖 lower。
- 验证写时复制与删除行为:
- 新建文件:echo “Hello, Overlay!” > /mnt/overlay/merged/newfile,随后检查该文件是否只出现在 upper 中(ls /mnt/overlay/upper)。
- 修改文件:echo “Modified in upper” > /mnt/overlay/merged/testfile,检查 merged 与 upper 中文件内容变化,lower 应保持不变。
- 删除文件:rm -f /mnt/overlay/merged/testfile,merged 中不可见,upper 中应出现“whiteout”占位(可通过 ls -l 观察到特殊条目),lower 中文件仍存在。
- 卸载与清理:sudo umount /mnt/overlay/merged;测试完成后可执行 rm -rf /mnt/overlay 清理环境。
三 Docker 场景的 Overlay 存储驱动测试
- 检查当前存储驱动:docker info | grep -i “storage driver”。期望输出为 overlay2。如不是,需调整 Docker 配置。
- 配置使用 overlay2:编辑 /etc/docker/daemon.json,设置 {“storage-driver”: “overlay2”},然后重启 Docker:systemctl restart docker。
- 运行验证容器并核查:
- 启动容器:docker run --rm -it alpine sh
- 在容器内检查挂载信息:mount | grep overlay,应能看到 overlay 挂载点;ls /var/lib/docker/overlay2 可看到 layer 与 merged 目录结构。
- 退出后再次执行 docker info | grep -i “storage driver” 确认仍为 overlay2。
四 常见问题与快速排查
- 挂载失败或参数报错:确认 lowerdir、upperdir、workdir 三个目录均已存在且可访问;workdir 必须为空且与 upperdir 位于同一文件系统;lowerdir 路径正确且可读。
- 内核或模块问题:若 cat /proc/filesystems 无 overlay,需确认内核版本与配置;必要时加载模块或升级内核。
- 文件系统 d_type 不支持:XFS 未启用 ftype=1 会导致 Docker 无法使用 overlay2;使用 xfs_info 检查并用 mkfs.xfs -n ftype=1 重新格式化。
- SELinux 限制:SELinux 可能阻止挂载或容器使用 Overlay;可临时 setenforce 0 验证,再改为更细粒度的策略放行。
- 资源与日志:检查磁盘空间 df -h;查看系统日志 journalctl -u docker 或 /var/log/messages 中与 overlay 相关的错误以定位问题。