获取每个数据集 IO 统计信息的 ZFS(或每个导出 IO 统计信息的 NFS)

jkj*_*jkj 7 solaris zfs nfs opensolaris openindiana

在哪里可以找到有关如何在 zfs 数据集之间划分 IO 的统计信息?(zpool iostat 只告诉我一个池正在经历多少 IO。)

所有相关数据集都通过 NFS 使用,所以我也很高兴每个导出 NFS IO 统计信息。

我们目前正在运行 OpenIndiana

[编辑]

kstat中似乎有操作和字节计数器

kstat -p unix:*:vopstats_???????
...
unix:0:vopstats_2d90002:nputpage        50
unix:0:vopstats_2d90002:nread   12390785
...
unix:0:vopstats_2d90002:read_bytes      22272845340
unix:0:vopstats_2d90002:readdir_bytes   477996168
...
Run Code Online (Sandbox Code Playgroud)

...但奇怪的十六进制 ID 号必须从/etc/mnttab(更好的主意?)

rpool/export/home/jkj /export/home/jkj zfs rw,...,dev=2d90002 1308471917
Run Code Online (Sandbox Code Playgroud)

现在正在编写一个munin插件来使用数据......

sla*_*dot 3

怎么样...在本例中,我有一个 ZFS 文件系统“/volumes/lab3_pool_a/data02/alpha/”,我使用 fsstat 来获取有关它的一些基本统计数据。请注意,我正在获取 ZFS 作为一个整体以及这个文件系统的统计数据。顺便说一句,fsstat 有一些不错的选项,可能会满足您的需要。

# fsstat zfs /volumes/lab3_pool_a/data02/alpha/ 1

 new  name   name  attr  attr lookup rddir  read read  write write
 file remov  chng   get   set    ops   ops   ops bytes   ops bytes
    0     0     0    27     0     27     0     0     0     1   208 zfs
    0     0     0     0     0      0     0     0     0     0     0 /volumes/lab3_pool_a/data02/alpha
Run Code Online (Sandbox Code Playgroud)

  • 我已经做了类似的事情,但请记住 fsstat 在 VFS 层运行,因此并非您在这里看到的所有 IO 实际上都会进出您的 zpool。VFS 统计数据还将包括 RAM 缓存提供的 IO。此外,ZFS 会重新排序和合并相当多的 IO,因此当您将 fsstat 与“zpool iostat”进行比较时,您经常会看到非常不同的数字。 (3认同)