温馨提示×

怎样优化ubuntu overlay

小樊
36
2026-09-28 00:10:36
栏目: 智能运维

在 Ubuntu 上优化 OverlayFS(overlay) 通常出现在以下场景:

  • Docker / Kubernetes 存储驱动
  • 容器运行时(containerd)
  • Live CD / 只读根文件系统
  • 自定义挂载(overlay mount)

下面按使用场景 + 优化手段系统说明。


一、通用 Overlay 优化原则

1. 使用 overlay2 而不是 overlay

Ubuntu 18.04+ 推荐:

cat /etc/docker/daemon.json

应包含:

{
  "storage-driver": "overlay2"
}

overlay(v1)已废弃,性能差、inode 占用高。


2. 底层文件系统选择(重要)

Overlay 性能强烈依赖底层 FS:

文件系统 推荐度 说明
ext4 ✅✅✅ 稳定、兼容最好
xfs ✅✅✅ 需开启 ftype=1
btrfs ⚠️ 与 overlay 有兼容问题
zfs ❌ 不推荐

XFS 必须检查:

xfs_info / | grep ftype

应为:

ftype=1

否则重建文件系统:

mkfs.xfs -n ftype=1 /dev/sdX

3. 放在 SSD / NVMe 上

Overlay 是 元数据密集型:

  • 避免 HDD
  • 避免网络存储(NFS/CIFS)
  • 优先 /var/lib/docker 在本地 SSD

二、Docker / containerd 场景优化

1. 分离 overlay 目录

mkdir -p /mnt/ssd/docker
ln -s /mnt/ssd/docker /var/lib/docker

或修改:

{
  "data-root": "/mnt/ssd/docker"
}

2. 减少层数(镜像优化)

  • 合并 RUN 指令
  • 使用 multi-stage build
  • 避免 COPY 大目录
RUN apt update && apt install -y xxx && rm -rf /var/lib/apt/lists/*

3. 禁用不必要的 copy-up

避免频繁写 overlay:

  • 日志写到 volume
  • tmp 目录挂载 tmpfs
docker run --tmpfs /tmp ...

4. 调整 mount 选项

Overlay 挂载参数:

mount -t overlay overlay \
  -o lowerdir=/a,upperdir=/b,workdir=/c \
  /merged

优化建议:

  • workdir 与 upperdir 同磁盘
  • 不要跨文件系统

三、系统级优化(Ubuntu Kernel)

1. 使用新内核

uname -a

建议:

  • Ubuntu 20.04 → 5.4+
  • Ubuntu 22.04 → 5.15+

2. 调整 inode 和 cache

sysctl vm.vfs_cache_pressure=50
sysctl vm.dirty_ratio=10

3. 关闭 atime

mount -o remount,noatime /

或 /etc/fstab:

UUID=xxx / ext4 defaults,noatime 0 1

四、Live CD / 只读根文件系统优化

1. 减少 upper 层写入

  • 将 /var/log 放到 tmpfs
  • 将 /home 放独立分区

2. 定期清理 overlay

rm -rf /overlay/upper/*

五、常见性能问题排查

# 查看 overlay 挂载
mount | grep overlay

# 查看 inode 使用
df -i

# 查看 IO 等待
iotop

六、推荐配置示例(Docker)

{
  "storage-driver": "overlay2",
  "data-root": "/ssd/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

如果你能提供:

  • 使用场景(Docker?Live?自定义?)
  • Ubuntu 版本
  • 挂载方式

我可以给你针对性优化配置。

0 踩