找出谁正在使用什么磁盘组

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

幸运的是,您正在使用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)); }' 

find哪些磁盘忙碌:

 zpool iostat -v 2 

你必须自己解释这些数据,但是使用前两个命令可以看到哪些进程正在使用大量的I / O。 使用第三个查看哪些文件经常打开,从而查看包含它们的zpool。 将其与zpool iostat相关联,以查看它们在哪个vdevs上。

通过一些技巧和练习,你可以创build一个dtrace脚本,一次完成。