nfs 文件访问统计

nfs 文件访问统计

对于 Linux NFSv3 服务器,有没有办法查看实际文件访问?换句话说,我想查看读取或写入的每个文件的带有时间戳的日志。

动机:我有几台 NFS 服务器,计划用某种“大型”存储系统替换它们。在我的特定情况下,NFS 客户端负载几乎全部大文件(平均约 700 MB)。一家供应商的解决方案使用大型 RAM 磁盘作为缓存,以提供我所需的大量随机读取吞吐量。

我想要的是一种研究 NFS 文件访问模式的方法,以便我可以“正确调整”缓存的大小。

答案1

我整天都在思考这个问题,却找不到解决办法。

  1. 你可以打开调试的 NFS 服务器,但是这并没有提供太多细节(如果该示例准确的话)并且可能会主导繁忙的 NFS 服务器的磁盘,除了裸文件名之外还记录了无用的负担。

  2. 另一个解决方案是向 auditd/auditctl 添加规则以记录对 NFS 目录的所有读取或写入,但这对我们的 Centos 6.X 机器不起作用,原因我还不太清楚。在客户端机器上的 /etc/audit/audit.rules 中:

    # First rule - delete all
    -D
    
    # Increase the buffers to survive stress events.
    # Make this bigger for busy systems
    -b 8192
    
    # Feel free to add below this line. See auditctl man page
    -w /auto/ -p r -k read -k home
    -w /auto/ -p w -k write -k home
    -w /auto/ -p xa -k other -k home
    

...我为读取、写入和执行/更改属性指定了单独的密钥。我的客户端自动挂载了几个不同的 NFS 目录,包括它们的主目录,并/auto/使用软链接将客户端计算机指向/home/users//auto/我记录了很多东西,但似乎没有用户自己修改的文件。

例如,使用 搜索审计日志ausearch -k read | aureport -f。搜索 .ODT 或 .PDF 不会返回任何结果,唯一的结果是 metacity 的配置、Chrome 的垃圾等等。

当然,在指向真实的服务器上启用审计/home/users/XYZ只会显示直接与服务器交互的事物(邮件客户端)或通过 SSH 进入服务器的用户的访问。

如果您能找到正确的审计方法或专用解决方案,请分享!您会认为这个问题早在 1993 年就解决了。

答案2

看看 nfstracehttps://github.com/epam/nfstrace。它捕获网络流量并执行深度数据包检查。它查找 NFSv3/v4 程序(READ、WRITE 等)并跟踪其统计数据。此外,您还可以为 nfstrace 开发新的可插入模块。

答案3

看看 nfsstat。它可以为 NFS 客户端和服务器生成统计信息。它是 Ubuntu Linux 上 nfs-common 的一部分。您还可以查看服务器端的 iotop,但它会报告所有磁盘 I/O,而不仅仅是 NFS。

相关内容