Overlay 文件系统是 Linux 内核提供的一种联合文件系统(Union Filesystem),它在容器技术中扮演着至关重要的角色,特别是在 Docker 和 Kubernetes 等容器平台中。
OverlayFS 通过将多个目录(层)合并成一个统一的视图来工作,主要包含以下概念:
容器镜像采用分层结构,每个 Dockerfile 指令都会创建一个新的层:
当容器启动时,OverlayFS 的工作方式:
overlay /var/lib/docker/overlay2/<id>/merged
overlay
lowerdir=/var/lib/docker/overlay2/l/<layer1>:...:/var/lib/docker/overlay2/l/<layerN>,
upperdir=/var/lib/docker/overlay2/<id>/diff,
workdir=/var/lib/docker/overlay2/<id>/work
# 创建必要的目录
mkdir -p /tmp/overlay/{lower,upper,work,merged}
# 挂载 OverlayFS
mount -t overlay overlay -o lowerdir=/tmp/overlay/lower,upperdir=/tmp/overlay/upper,workdir=/tmp/overlay/work /tmp/overlay/merged
在 Docker 中,默认使用 overlay2 存储驱动:
# 查看当前存储驱动
docker info | grep "Storage Driver"
# 如果未使用 overlay2,可以配置 Docker 使用它
# 编辑 /etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
"no space left on device" 但磁盘空间充足:
df -i
性能问题:
xfs_info
或 tune2fs -l
检查文件系统特性兼容性问题:
--data-dir
到 volumeOverlayFS 为容器技术提供了高效、灵活的文件系统解决方案,是现代容器基础设施的重要组成部分。