Linux 的 OverlayFS(overlay) 常用于容器(Docker、Kubernetes)、Live CD、只读根文件系统等场景。下面按常见错误类型 + 原因 + 解决办法来梳理。
mount: wrong fs type, bad option, bad superblock原因
排查
cat /proc/filesystems | grep overlay
没有输出说明内核不支持。
解决
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
workdir and upperdir must be on same filesystem原因
解决
df -h /upper /work
确保二者同盘同文件系统。
lowerdir is not a directory / upperdir must be empty原因
解决
mkdir -p /upper /work /lower
upperdir 和 workdir 必须为空目录。
Permission denied常见原因
解决
chmod 700 /upper /work
SELinux:
setenforce 0
# 或加 context
semanage fcontext -a -e /var/lib/docker /upper
overlay2: the backing xfs filesystem is formatted without d_type support原因
ftype=1检查
xfs_info /var/lib/docker | grep ftype
应为 ftype=1
解决
mkfs.xfs -n ftype=1 /dev/sdX
could not find any free loop device原因
解决
losetup -a
减少 loop 使用或调整 Docker storage driver。
overlay2: no such file or directory原因
解决
systemctl stop docker
rm -rf /var/lib/docker/overlay2
systemctl start docker
(会丢失容器数据)
原因
解决
mount | grep overlay
原因
whiteout 文件说明 这是正常行为,不是错误。
表现
解决
mkdir -p /lower /upper /work /merged
mount -t overlay overlay \
-o lowerdir=/lower,upperdir=/upper,workdir=/work \
/merged
uname -r
cat /proc/filesystems | grep overlay
mount | grep overlay
df -h
xfs_info /var/lib/docker | grep ftype
如果你愿意,可以告诉我:
我可以直接帮你定位到具体原因。