找出谁在使用哪个磁盘组

找出谁在使用哪个磁盘组

我想找出哪些数据库/进程正在使用哪个磁盘组。我收到通知说我们的磁盘 I/O 开始变得相当高。我在运行 Solaris 10 的 Solaris 机器(Sun - Fire 15000)上。

答案1

幸运的是,您使用的是 Solaris,因此可以使用dtrace。几行代码就能得到一些不错的数据,这些数据可能接近您想要的结果。希望您也使用 ZFS(如果不是,那为什么不呢?)。

显示进程读取的字节数:

dtrace -n 'sysinfo:::readch { @bytes[execname] = sum(arg0); }'

显示进程写入的字节数:

dtrace -n 'sysinfo:::writech { @bytes[execname] = sum(arg0); }'

显示进程打开的文件:

dtrace -n 'syscall::open*:entry { printf("%s %s",execname,copyinstr(arg0)); }'

查找哪些磁盘处于繁忙状态:

zpool iostat -v 2

您必须自己对数据进行一些解释,但使用前两个命令,您可以看到哪些进程正在使用大量 I/O。使用第三个命令查看哪些文件被频繁打开,从而查看包含这些文件的 zpool。将其与它们所在的 vdev 相关联,以zpool iostat查看它们位于哪些 vdev 上。

凭借一些技巧和练习,您可以创建一个dtrace可以一次性完成此操作的脚本。

相关内容