Linux Overlay(通常指 OverlayFS,以及容器场景中常用的 overlay2 存储驱动)性能优化,通常围绕 减少层级、提升底层文件系统效率、合理使用缓存和 IO 调度 来进行。下面按“原理 → 常见瓶颈 → 优化手段”来说明。
OverlayFS 是联合挂载文件系统:
lowerdir:只读层(可多层)upperdir:可写层workdir:临时工作目录性能关键点:
multi-stage build# 不推荐
lowerdir=/a:/b:/c:/d
# 推荐
提前合并静态内容
推荐:
检查 d_type(容器必看):
docker info | grep -i warn
XFS 挂载示例:
mkfs.xfs /dev/sdX
mount -o noatime /dev/sdX /var/lib/docker
Overlay 挂载参数优化:
mount -t overlay overlay \
-o lowerdir=...,upperdir=...,workdir=...,index=off,redirect_dir=off \
/merged
常用优化项:
noatime(避免访问时间写盘)index=off(某些场景更快,但影响硬链接)redirect_dir=off(减少 rename 开销)推荐结构:
/var/lib/docker/
├── overlay2 (SSD)
└── image (可 HDD)
docker run --tmpfs /tmp
# daemon.json
{
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
log-driver=json-file 并限制大小docker system prune -a
sysctl -w vm.dirty_ratio=10
sysctl -w vm.dirty_background_ratio=5
# 查看 overlay 挂载
mount | grep overlay
# 查看 IO
iostat -x 1
# 查看文件是否在 upper
ls -l /var/lib/docker/overlay2/xxx/diff
Overlay 性能优化 = 少层 + 快盘 + 少写 + 对文件系统友好
如果你能说明具体场景(物理机 / Docker / K8s / 构建镜像 / 高并发写),我可以给更针对性的方案。