如何在solaris ZFS上查找顶级io文件?

我有一个基于Solaris 10 ZFS的NFS服务器。 物理磁盘或多或less处于其最大IO速率。 性能非常糟糕 – 所以我们将添加主轴。 NFS仅用作XenServer Hypervisors的存储。

我想知道哪些VM磁盘(意味着存储上的.vhd文件)正在产生大部分的负载。 我如何查询文件系统或可能nfsd得到一个iostat或顶部像输出文件名和读取/写入。 数字可以是绝对的或相对的。

我试过iosnoop 。 这绝对是正确的方向。 不幸的是,它似乎无法获取ZFS文件系统上的文件名。 我没有dtrace的经验。 也许那里已经有一个脚本?

你需要使用dtrace来进行反思。 这里基本上是来自https://wikis.oracle.com/display/DTrace/nfsv3+Provider的nfsv3fileio.d例子,但更新到现场运行(我想,我的testing是最小的)。 同一页面还有几个例子。 你也可以谷歌'nfssvrtop'。

#!/usr/sbin/dtrace -s #pragma D option quiet dtrace:::BEGIN { trace("Tracing.. hit CTRL-C to end. Updates every 5 seconds.\n"); } nfsv3:::op-read-done { @bytes_read[args[1]->noi_curpath] = sum(args[2]->res_u.ok.data.data_len); } nfsv3:::op-write-done { @bytes_written[args[1]->noi_curpath] = sum(args[2]->res_u.ok.count); } profile:::tick-5sec { trunc(@bytes_read, 15); trunc(@bytes_written, 15); printf("\n%15s %15s %s\n", "Bytes Read/5s", "Bytes Written/5s", "Pathname"); printa("%@15d %@15d %s\n", @bytes_read, @bytes_written); trunc(@bytes_read); trunc(@bytes_written); } 

你的设置中是否有任何级别的NVRAM写caching? 在ZFS的情况下,这将是一个ZIL设备的存在? 否则,这可能是性能问题的关键。