build设生产build议140盘(420 TB)ZFS zpool

我一直负责为数据logging系统构build一个大的zpool。 在Linux(0.6.4.2)上使用ZFS,在CentOS 6.5上使用。

硬件规格:

  • DL380 Gen8
  • 80 GB RAM
  • 2个HP HBA H221
  • 2台HP D6000,每台配有70x 3TB SAS磁盘

有一些特殊情况:

  • 镜像是不存在的,我们将缺乏存储。 所需的总需要的结核病数量非常多。 添加D6000设备不是一个选项。
  • 数据中心中将有2个zpool,使用应用程序级冗余。 因此,整个池的损失是有问题的,但不是关键的。 所有的数据将被备份到磁带。
  • 使用HP加速卡现在不是一个选项(太昂贵了)
  • 由于受到2.6.32内核的限制,使用PCIe NVMe卡不是一种select。

性能要求:

  • 写作performance并不重要,基本上有一个稳定的写作stream程,大概是4 MB /秒。
  • 阅读的performance是有用的,但没有真正的热点数据集,非常随机的数据可以或将被阅读,根据需要。
  • 索引是非常重要的。 一旦zpool完全加载,将会有大约150万个文件,得到这些文件的列表应该尽可能快。 ARC在这里帮助很多RAM吗?

我的计划是如下构buildzpool:

  • RaidZ2 10个磁盘的14个VDEV。
  • 压缩
  • 自动更换
  • 一段时间了

我真的没有什么好的SLOG和L2ARC的select。 使用惠普固态硬盘不是一个真正的select,因为他们需要在硬件Raid0上作为单一设备运行。 从我在这个网站上看到的,这是在惹麻烦。

我的问题:

  1. 更多的内存将是很好,当然,但我真的需要它吗?
  2. 一旦zpool加载了95%以上的数据,我是否应该期待重大的问题。 如上所述,较低的性能是可以的,性能要求相当低。
  3. 推荐任何其他vdev布局,而不会降低可用的存储空间。
  4. 我应该考虑什么特殊的ZFS调整? 我至less考虑增加存储在ARC中的元数据的份额。 为了帮助索引速度,有意义吗?
  5. 我是否应该期望使用L2ARC和SLOG设备的问题?
  6. 任何其他技巧,使上述工作,非常感谢!

更多的RAM可能是一个不错的select。 如果读取性能不重要,但元数据操作是:我build议将“primarycache”设置为文件系统的“元数据”。 如果您有用于L2ARC的SSD,则还可以select使用内存(ARC)将“全部”和二级caching(L2ARC)caching为“元数据”。 请注意,其他方式不起作用(L2ARC从ARC填充)。

一旦zpool加载了95%以上的数据,我是否应该期待重大的问题

是和不是。 这将取决于平台/版本。 旧版本的速度在80%的情况下会大幅下降。 为了解决这个问题:100%确保你的slabtables存储在内存中! (Solaris:metaslab_debug = 1)。 默认情况下,旧版本只在内存中存储每个磁盘2块板。 这会杀死性能。 我认为FreeBSD和更新的版本默认是这样做的。 但是你需要一些内存(尤其是那些很多的磁盘)。

我会推荐使用SLOG(ZIL)设备。 这将确保您的写入立即得到确认,但是每x秒写入一次速度较慢的磁盘。 这是有用的,因为你只需要在盘片上运行多次写入。 这为读取等留下了更多的磁盘空间。

我不build议在Linux环境下使用ZFS。 内存分配系统仍然不是100%完美,导致ZFS和Linux争夺内存。