在 Ubuntu 上优化 OverlayFS(overlay) 通常出现在以下场景:
下面按使用场景 + 优化手段系统说明。
overlay2 而不是 overlayUbuntu 18.04+ 推荐:
cat /etc/docker/daemon.json
应包含:
{
"storage-driver": "overlay2"
}
overlay(v1)已废弃,性能差、inode 占用高。
Overlay 性能强烈依赖底层 FS:
| 文件系统 | 推荐度 | 说明 |
|---|---|---|
| ext4 | ✅✅✅ | 稳定、兼容最好 |
| xfs | ✅✅✅ | 需开启 ftype=1 |
| btrfs | ⚠️ | 与 overlay 有兼容问题 |
| zfs | ❌ | 不推荐 |
XFS 必须检查:
xfs_info / | grep ftype
应为:
ftype=1
否则重建文件系统:
mkfs.xfs -n ftype=1 /dev/sdX
Overlay 是 元数据密集型:
/var/lib/docker 在本地 SSDmkdir -p /mnt/ssd/docker
ln -s /mnt/ssd/docker /var/lib/docker
或修改:
{
"data-root": "/mnt/ssd/docker"
}
COPY 大目录RUN apt update && apt install -y xxx && rm -rf /var/lib/apt/lists/*
避免频繁写 overlay:
docker run --tmpfs /tmp ...
Overlay 挂载参数:
mount -t overlay overlay \
-o lowerdir=/a,upperdir=/b,workdir=/c \
/merged
优化建议:
workdir 与 upperdir 同磁盘uname -a
建议:
sysctl vm.vfs_cache_pressure=50
sysctl vm.dirty_ratio=10
mount -o remount,noatime /
或 /etc/fstab:
UUID=xxx / ext4 defaults,noatime 0 1
/var/log 放到 tmpfs/home 放独立分区rm -rf /overlay/upper/*
# 查看 overlay 挂载
mount | grep overlay
# 查看 inode 使用
df -i
# 查看 IO 等待
iotop
{
"storage-driver": "overlay2",
"data-root": "/ssd/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
如果你能提供:
我可以给你针对性优化配置。