docker存储驱动graphdriver中的overlay2 fuse-overlayfs btrfs zfs devicemapper aufs vfs的区别

0    305    2

Tags:

👉 本文共约1951个字,系统预计阅读时间或需8分钟。

简介

在Docker中,graphdriver 是负责管理和存储容器镜像、容器文件系统以及相关数据的组件。不同的graphdriver 可以提供不同的文件系统和存储方式。以下是关于 Docker 中几种常见的 graphdriver 的区别:

  1. overlay2: Overlay2 是一个用于存储 Docker 镜像和容器文件系统的图层存储驱动。它基于 Linux 内核的 OverlayFS 文件系统,使用联合挂载技术将多个文件系统层叠在一起。它支持多层镜像构建,而且效率较高,因为只有变更的内容才会占用额外的磁盘空间。
  2. fuse-overlayfs: fuse-overlayfs 也是基于 OverlayFS 的一种图层存储驱动,不同的是它使用 FUSE(文件系统在用户空间)来实现,而不是直接依赖 Linux 内核的 OverlayFS。这意味着它可以在不同的 Linux 内核版本中使用,但相对而言可能会有一些性能损失,因为涉及到用户空间和内核空间之间的通信。
  3. btrfs: Btrfs(B-tree文件系统)是一个现代的复制文件系统,具有许多高级特性,如快照、克隆、压缩和RAID支持。Docker 可以使用 Btrfs 作为图层存储驱动,但由于其复杂性和一些稳定性问题,一般情况下不建议在生产环境中使用。
  4. zfs: ZFS 是一个高级的文件系统和逻辑卷管理器,支持快照、数据完整性校验和多种级别的数据冗余。与 Btrfs 类似,Docker 也可以使用 ZFS 作为图层存储驱动。ZFS 在数据保护方面非常强大,但也可能在某些方面对性能造成影响。
  5. devicemapper: Devicemapper 是一个 Linux 内核的块设备映射驱动,它可以被用作 Docker 的图层存储驱动。它支持基于块设备的数据存储,并且在某些情况下可以与 LVM(逻辑卷管理器)一起使用。然而,它相对复杂,性能可能不如 OverlayFS。
  6. vfs: VFS(Virtual File System)是一种简单的文件系统,是 Linux 内核的一部分。在 Docker 中,VFS 图层存储驱动只是将容器的文件直接映射到主机文件系统,而不会使用层叠的方式来构建镜像,因此效率较低,并且在性能和存储方面不适用于生产环境。
  7. aufs:在Ubuntu 14.04(内核3.13)上运行的Docker 18.06及更早版本的首选存储驱动程序。

选择适当的 graphdriver 取决于你的应用场景、性能需求、文件系统特性以及操作系统的支持情况。在生产环境中,通常会选择 Overlay2 或 fuse-overlayfs,因为它们在大多数情况下提供了良好的性能和稳定性。

1)overlay存储驱动程序已在Docker Engine-Enterprise 18.09中弃用,并将在以后的版本中删除。建议用户将overlay存储驱动程序迁移到overlay2。

2)devicemapper存储驱动程序已在Docker Engine 18.09中弃用,并将在以后的版本中删除。建议用户将devicemapper存储驱动程序迁移到overlay2。

3)如果可能,建议使用overlay2存储驱动程序。首次安装Docker时,默认使用overlay2存储驱动。

配套的后端文件系统

对于Docker来说,对应的文件系统为docker的根目录。一些存储驱动程序仅适用于特定的后端文件系统。具体对应关系请参考下表:

所以,对于docker中嵌套docker的graphdriver 只能选用vfs存储驱动。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复