我正在为 GitLab CI 作业构建新服务器。
目前我们已经有一个自制的了。
它使用经典的 HDD + SSD 进行缓存,因此我选择了性能不佳的 ZFS 存储驱动程序。
新服务器将仅包含两个 NVMe SSD,因此我不需要任何类型的缓存。
我想对根分区和 docker 卷分区使用镜像。
我想对图像和容器分区使用剥离功能,因为它可以提高速度并使容量翻倍。无论如何,所有容器和图像都是短暂的。
我阅读了大量关于 Docker 存储性能的研究,每项研究都显示了不同的结果。
大多数研究都使用 overlay2,但我必须使用 mdadm,并且没有快照的可能性。
我对 devicemapper 非常感兴趣,因此我可以使用 lvm,这样我就可以使用快照和精简配置。大多数研究都测量了 devicemapper 驱动程序的低性能,因此这可能不再是一个选择。也许我可以将 overlay2 与 lvm 卷一起使用?
最后一个选项是 ZFS,但对于此服务器来说,它没有任何优势,因为只有两个 NVMe 驱动器。此外,一些研究测量了高性能,而一些则测量了低性能,所以我不知道该怎么想。
还有一个问题。我可以使用多个存储驱动程序(相同的驱动程序,但使用不同的分区/卷),对吗?一个用于剥离卷,一个用于镜像卷。
谢谢您的回答!
答案1
如果您使用的是 CentOS/RHEL,请坚持使用 overlayfs + XFS,这是唯一受支持的配置。请注意,您能在此配置中使用快照:你只需要在精简 LVM 卷上使用 XFS(但你必须监控它以避免出现空间不足的情况)。为了获得更好的薄卷性能,请记住禁用清零并使用适当的块大小(512KB+ 是一个很好的基准,除非您非常关心快照空间效率)。
最后,当然使用选项创建 XFS 文件系统-n ftype=1
(最近的 mkfs.xfs 应该会自动执行此操作,但请仔细检查)。从RH 文档:
必须使用 -n ftype=1 选项创建 XFS 文件系统才能将其用作覆盖。