ZFS 清理负载平均值高得离谱

ZFS 清理负载平均值高得离谱

我这里有一个相对较新的机器,在 18 个磁盘阵列上运行带有 ZFS-on-Linux 的 Ubuntu。前几次我做了zpool scrub,似乎一切都运行良好,但最后几次我尝试时,它完全破坏了系统 - 当我可以让它做任何事情时,它报告的平均负载为 20-50,而且大多数时候它只是没有响应。

这不是预期的行为,对吧?我可以更改一些配置来减少这种情况吗?

更新:

  • 硬件配置基本http://www.45drives.com/products/storage/s45-lite.php
  • 18 个 6TB 磁盘通过 HighPoint R750 HBA 连接。
  • Ubuntu 14.04 LTS,Linux 3.19 内核。
  • 游泳池目前已满 50% 左右。
  • 无重复数据删除。
  • [更新 2]:磁盘排列在 2 个 RAIDZ(单奇偶校验)vdev 中,每个 vdev 有 9 个磁盘。

答案1

最后在 ZFS-on-Linux 邮件列表上询问,最终发现我的问题是 ZFS ARC 使用了太多的系统 RAM(或者更具体地说,没有留下足够的空闲空间)。这导致其他内核任务和 ZFS 之间争用内存,结果系统(非 ZFS)磁盘上有大量 I/O,速度变得非常缓慢。有趣的是,系统没有报告任何交换使用情况,所有正在进行的页面调度都是从磁盘读取静态页面(可能是库等),这就是为什么我通常的“它正在交换,所以会很慢”警报没有响起的原因。

我减少了 ARC 缓存的大小,留下 3-4GB 的可用 RAM,现在运行起来好多了!

答案2

您必须调整 ZFS 安装。ZoL 上的默认设置并不适合您的用例。

请提供有关您的硬件设置和 ZFS 配置的详细信息。

  • 您的游泳池是否已满 80% 以上?
  • 您是否启用了重复数据删除功能?
  • 您使用哪种类型的磁盘和控制器?

一般来说,您可以在zfs.conf模块配置文件中修改以下内容。

options zfs zfs_vdev_scrub_min_active=48
options zfs zfs_vdev_scrub_max_active=128

相关内容