如何监视用户的NFS负载?

道歉,如果我不使用正确的术语(虽然我是一个长期的Linux用户,我不是pipe理员),或者如果这是一个常见问题(尽pipesearchSE有很多点击,我没有看到任何东西这个问题):

我是一个科学群体的用户(由PBS / Torquepipe理,RHEL5,FWIW)。 我即将开始我的第一个真正的大工作,所以我问了pipe理员一些configuration问题,以避免愚蠢的错误。 我大部分都是正确的,但是他补充了一些build议,“确保你不是用太多的I / O敲击磁盘服务器”,后续的步骤是“使用top来查看nfs是否正在运行。

怎么做? 这是一个集群,所以很多“幕后”对我来说是透明的。 另外我有没有特权。 我也仅限于通过SSH的CLI,但这是我的问题最less。 从好的一面来看,我似乎能够将任何计算节点都包含在内,包括那些连接磁盘的计算节点。

所以我想知道,如何最好的监测用户的NFS? 我知道一些关于top和NFS,所以我知道我可以做到

 top -p$(pgrep nfsd -d ',') 

获取NFS进程的列表(不是?)。 但是我真的很想知道 – 作为一个用户(我既没有sudo也没有root)在RHEL5上(是的,我们仍在运行) – 是

  1. 一个或几个,在所有NFS进程中聚合NFS负载的统计信息。 这是我可以从top或其他工具获得的东西,而不需要输出和做自己的math吗? 而且我应该监视nfsd以外的nfsd吗?
  2. 关于量化“NFS疯狂”的build议 如果我能得到一个/几个综合统计数字,我可以想象得到一个事前基线,但是这还没有告诉我“多高太高”。

注: top似乎不是这个任务使用的工具,但至less它是可用于我。 不可用的工具列表包括

  1. 使用nfsstat
  2. iostat的
  3. iotop

看最高的输出是完全错误的。 这是关于IOPS。 要查看NFS统计信息,请使用nfsstat

 Server rpc stats: calls badcalls badauth badclnt xdrcall 40833255 0 0 0 0 Server nfs v3: null getattr setattr lookup access readlink 0 0% 1411374 3% 107 0% 43169 0% 747514 1% 790 0% read write create mkdir symlink mknod 38138706 93% 0 0% 0 0% 0 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 0 0% 0 0% 0 0% 0 0% 0 0% 491559 1% fsstat fsinfo pathconf commit 6 0% 12 0% 6 0% 0 0% 

如果你有一个监控程序(例如,Zabbix),你可以添加一个UserParameter来观看它们:

 # NFS stats UserParameter=nfs.v3.server[*],nfsstat -s -l | awk 'BEGIN {FS=": *"}/v3 server.*$1:/ {print $$2}' 

并制作漂亮的图表: 在这里输入图像说明

有多高? 这完全取决于你的工作量:

nfs图

您需要观察文件系统和磁盘延迟,以确定是否过载了磁盘。