温馨提示×

centos overlay和devicemapper区别

小樊
35
2026-09-12 02:32:17
栏目: 智能运维

在 CentOS(以及一般的 Linux Docker 环境)中,overlaydevicemapper 都是 Docker 的存储驱动(storage driver),用来管理镜像和容器的文件系统层级。它们的原理、性能和适用场景有明显区别。

下面从几个关键维度对比说明。


一、基本概念

1. overlay / overlay2(OverlayFS)

  • 基于 OverlayFS(Linux 内核原生联合文件系统)
  • 将多个目录“叠加”成一个统一视图
  • Docker 推荐使用的现代存储驱动

核心组成:

  • lowerdir:只读层(镜像层)
  • upperdir:可写层(容器层)
  • workdir:临时工作目录
  • merged:最终挂载视图

2. devicemapper

  • 基于 Device Mapper(Linux 内核的块设备映射机制)
  • 使用瘦供给(thin provisioning)
  • 早期 Docker 在 CentOS/RHEL 上的默认驱动

核心组成:

  • 每个镜像/容器对应一个块设备
  • 通过快照(snapshot)实现分层

二、主要区别对比

对比项 overlay / overlay2 devicemapper
所属类型 文件系统级 块设备级
内核依赖 OverlayFS(3.10+ 支持) Device Mapper
性能 ✅ 较好 ❌ 相对较差
稳定性 ✅ 高 ⚠️ 配置复杂
空间利用 ✅ 高效 ⚠️ 易碎片化
配置难度 ✅ 简单 ❌ 复杂
CentOS 默认 ❌(旧版默认 devicemapper) ✅(CentOS 7 早期)
Docker 推荐 ✅ 强烈推荐 ❌ 已不推荐

三、性能与使用体验

overlay2(推荐)

  • 启动容器快
  • 文件读写延迟低
  • 磁盘占用清晰
  • 适合生产环境

devicemapper

  • 写时复制(CoW)在块级别,开销大
  • 容易出现:
    • 空间耗尽
    • 元数据膨胀
  • 需要手动配置 direct-lvm,否则默认 loop-lvm 性能极差

四、CentOS 中的实际情况

CentOS 7

  • 早期版本:Docker 默认 devicemapper
  • 新版本 / 生产环境:建议改为 overlay2

CentOS 8 / Stream

  • overlay2 是默认且推荐驱动
  • devicemapper 已基本被弃用

五、如何查看当前存储驱动

docker info | grep -i storage

或:

docker storage driver

六、如何切换为 overlay2(简要)

  1. 停止 Docker
systemctl stop docker
  1. 备份并清空 /var/lib/docker

  2. 修改 /etc/docker/daemon.json

{
  "storage-driver": "overlay2"
}
  1. 启动 Docker
systemctl start docker

⚠️ 注意:切换存储驱动会删除已有容器和镜像


七、总结一句话

overlay2 是现代、高效、推荐的 Docker 存储驱动;devicemapper 是 CentOS 早期的历史方案,性能差、配置复杂,已不推荐使用。

如果你愿意,我可以:

  • 帮你判断当前系统该用哪个驱动
  • 给你一套 CentOS 生产环境 Docker 存储优化方案
  • 对比 overlay2 和 btrfs / zfs

0