关于构建生产 140 磁盘 (420 TB) ZFS zpool 的建议

关于构建生产 140 磁盘 (420 TB) ZFS zpool 的建议

我的任务是为数据记录系统构建一个大型 zpool。在 CentOS 6.5 上的 Linux (0.6.4.2) 上使用 ZFS。

硬件规格:

  • DL380 Gen8
  • 80 GB 内存
  • 2 个 HP HBA H221
  • 2 台 HP D6000,每台配备 70 个 3TB SAS 磁盘

有一些特殊情况:

  • 镜像是不可能的,我们会缺少存储空间。所需的总 TB 数量基本已确定。添加 D6000 单元不是一种选择。
  • 数据中心将有 2 个这样的 zpool,使用应用程序级冗余。因此,整个池的丢失会带来问题,但并不严重。所有数据也将备份到磁带上。
  • 目前无法使用 HP 加速卡(太贵了)
  • 由于内核限制为 2.6.32,因此无法使用 PCIe NVMe 卡。

性能要求:

  • 写入性能并不重要,基本上有一个稳定的写入流,大约为 4 MB/秒。
  • 读取性能很有用,但实际上没有任何热数据集,根据需要可以读取或将读取哪些数据是非常随机的。
  • 索引非常重要。zpool 完全加载后将有大约 150 万个文件,获取这些文件的列表应该尽可能快。ARC 在这方面有帮助吗?很多 RAM?

我的计划是按如下方式构建 zpool:

  • 10 个磁盘的 14 VDEV,RaidZ2。
  • 压缩
  • 自动替换
  • 休息时间

对于 SLOG 和 L2ARC,我实在没有好的选择。使用 HP SSD 并不是一个真正的选择,因为它们需要在硬件 Raid0 上作为单个设备运行。从我在这个网站上读到的内容来看,这是自找麻烦。

我的问题:

  1. 当然,如果有更多的 RAM 就更好了,但我真的需要它吗?
  2. 一旦 zpool 加载了 95% 以上的数据,我是否应该预料到会出现重大问题。较低的性能是可以接受的,正如所述,性能要求相当低。
  3. 建议使用任何其他 vdev 布局,而不会降低可用存储空间。
  4. 我应该考虑进行任何特殊的 ZFS 调整吗?我至少在考虑增加存储在 ARC 中的元数据份额。为了提高索引速度,有意义吗?
  5. 在使用 L2ARC 和 SLOG 设备时我是否应该考虑任何问题?
  6. 若有任何其他可使上述工作顺利进行的提示,我们将不胜感激!

答案1

更多 RAM 可能是一个不错的选择。如果读取性能并不重要,但元数据操作很重要:我建议将文件系统的“primarycache”设置为“metadata”。如果您有用于 L2ARC 的 SSD,您还可以选择使用内存 (ARC) 来缓存“全部”,并使用 secondarycache (L2ARC) 作为“metadata”。请注意,反过来不行(L2ARC 由 ARC 填充)。

一旦 zpool 加载了 95% 以上的数据,我是否应该预料到会出现重大问题

是也不是。这取决于平台/版本。旧版本在容量达到 80% 时速度会大幅下降。要解决此问题:100% 确保您的 slabtables 存储在内存中!(Solaris:metaslab_debug=1)。默认情况下,旧版本仅在内存中为每个磁盘存储 2 个 slab。这会降低性能。我认为 FreeBSD 和较新版本默认这样做。但是您需要一些内存(尤其是在有那么多磁盘的情况下)。

无论如何,我建议使用 SLOG (ZIL) 设备。这将确保您的写入立即得到确认,但每隔 x 秒写入慢速磁盘。这很有用,因为您只需在盘片上运行 1 次即可进行多次写入。这样可以为读取等留出更多的磁盘时间。

对于如此大的环境,我不建议在 Linux 上使用 ZFS。内存分配系统仍不是 100% 完善,导致 ZFS 和 Linux 争夺内存。

相关内容