使用 ZFS zvols 读取 iostat 利用率

使用 ZFS zvols 读取 iostat 利用率

首先,我 5 天前在 Serverfault 上问了这个问题。我希望将它带到 Unix&Linux 堆栈不会造成什么坏处。我还在其他 3 个与 Stack 无关的网站上问过这个问题,但没有答案。如果我能得到答案,我计划用答​​案更新每个网站。开始了。

我很难理解 iostat -x 的输出(特别是 ZFS zvols)。我正在运行 Proxmox 4.4,完全更新后遇到一些普遍较差的 IO 性能。

在对缓慢的性能进行故障排除时,我查看了 iostat -x 1,并看到这种利用率几乎不断地读取。

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00   77.00  115.00   308.00   640.00     9.88     2.02   10.33    9.92   10.61   3.58  68.80
sdb               0.00     0.00   81.00  116.00   324.00   644.00     9.83     1.32    6.72    6.42    6.93   2.50  49.20
...
sde               0.00     0.00   77.00  117.00   308.00   640.00     9.77     1.16    6.25    5.25    6.91   2.35  45.60
sdf               0.00     0.00   78.00  116.00   312.00   640.00     9.81     1.25    6.45    5.64    7.00   2.47  48.00
...
zd32              0.00     0.00    0.00  197.00     0.00   788.00     8.00     1.09    5.54    0.00    5.54   5.06  99.60

我感到困惑的是,zd32(我的虚拟机的 zvol)的利用率为 100%,而底层存储的利用率约为 50%。

我的问题是:zvol 利用率不应该反映底层存储设备的利用率吗?

作为参考,该系统上还有其他虚拟机,但此故障排除是在几个小时后完成的,因此它们处于空闲状态。这台虚拟机是唯一繁忙的虚拟机,正在运行 Windows 更新。 zpool 是 7200RPM SATA 磁盘的 RAID-Z2,因此并不是专为实现令人难以置信的速度而构建的。我现在只是想知道利用率。

答案1

这里有一些提示。是的,应该如此,因为 zfs 卷是在位于存储设备上的 zpool 上创建的。如果该存储在其他资源之间共享,则它们可能会影响 zfs 池和卷。

不幸的是,我不知道 Proxmox 是什么,但 %util 通常显示设备具有正事务队列的时间。队列中的事务数量是avgqu-sz。这两个值还取决于可以支持相当大队列的存储系统类型和型号。所以,这可能是一个不好的症状,也可能不是。因此,首先最好查看:await、r/s、w/s、rkB/s、wkB/s,看看该卷是否存在真正的工作负载和性能问题。

有一个特殊的命令:zpool iostat监视 zpool 统计信息。

相关内容