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

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

在哪里可以找到有关 IO 在 zfs 数据集之间如何分配的统计数据?(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
...

...但奇怪的十六进制 ID 号必须从/etc/mnttab(更好的想法?)中解析。

rpool/export/home/jkj /export/home/jkj zfs rw,...,dev=2d90002 1308471917

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

答案1

怎么样... 在这个例子中,我有一个 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

答案2

补充上面 slashdot 的评论:这一行代码对所有 ZFS 数据集执行相同的操作(由 mount(1M) 输出中的设备列的模式确定):

fsstat -i `mount | awk '{if($3 ~ /^[^\/:]+\//) {print $1;}}'` 1

相关内容