如何监控哪些文件通过 NFS 访问?

如何监控哪些文件通过 NFS 访问?

我有一个运行 CentOS 6 的 Linux 文件服务器。文件通过 NFS4 访问。

有时我会遇到磁盘 io 负载问题。我想找出导致这些问题的原因。

我可以使用 tcpdump 和 nfsiostat(在客户端上)找出导致这些问题的客户端。但我想知道访问了哪些文件或哪个进程正在进行访问。然后我就可以想出解决方案了。

我曾尝试使用 wireshark 解码访问,但当打开和读/写间隔不近或您有大量名称相似的文件时(不显示目录,仅显示目录句柄),读取起来很困难。如果您有大量活动,最好有一种按活动对文件进行排序的方法,以找出罪魁祸首。

有人知道这个问题的解决方案吗?

答案1

您可以使用 lsof 或 ftop(最后一个在 EPEL repo 上)

例如:

lsof -N /mnt/nfs/*

高血压

答案2

可以从文件中查看 NFSv4 打开的文件和租约/proc/fs/nfsd/clients/CLIENT_ID/states,例如通过运行:

grep . /proc/fs/nfsd/clients/*/states

不幸的是,NFSv3 和更旧的客户端似乎没有包括在内。

答案3

一个好的开始是使用/安装iotop,我发现它对于解决类似的问题非常有用。

相关内容