获取 ext3 和其他文件系统的类似 nfsstat 的统计信息

Posted

技术标签:

【中文标题】获取 ext3 和其他文件系统的类似 nfsstat 的统计信息【英文标题】:Getting nfsstat-like statistics for ext3 and other filesystems 【发布时间】:2011-05-08 10:43:40 【问题描述】:

对于那些不熟悉 nfsstat 的人:它基本上只是计算对特定函数的调用次数。通过这种方式可以获得有关 NFS I/O 操作的统计信息,从而使用它们来分析性能。

我想以更一般的方式做类似的事情。我想以某种方式计算例如的数量。 “统计”电话。如果可能的话,每个挂载点的计数。但是,我不确定从哪里开始。我有足够的 C 语言对 libc 库的编程技能,但缺乏 Linux 内核的知识。

我觉得这应该通过可加载的内核模块来完成,但我不确定内核 API 是否提供了挂钩这些类型的系统调用的可能性。或者我应该为此使用 inotify(不监控 stat 调用)?

从哪里开始?

【问题讨论】:

【参考方案1】:

要监视系统上发生的所有系统调用,您可以使用Linux audit subsystem 监视特定的系统调用。您可以设置过滤器,例如将监视限制在目录树中。文档相当稀疏;从auditctl man page 或this tutorial 开始。最近的发行版提供了一个auditd 包。安装它并确保auditd 守护进程正在运行,然后执行

auditctl -A exit,always -F dir=/mount/point -S stat

并观察电话登录/var/log/audit/audit.log(或您的发行版设置的任何位置)。

在另一个极端,如果您只对特定进程(以及它的子进程)进行的系统调用感兴趣,请使用strace。

strace -s9999 -estrace -f mycommand

在这两者之间,如果你想观察一些程序对文件系统的访问,让他们通过loggedfs访问你关心的文件。这是一个可堆叠的文件系统:它提供了现有目录树的替代视图。它可以记录每一个操作,有丰富的过滤器和合理的文档。

【讨论】:

谢谢,这会让我上路!

以上是关于获取 ext3 和其他文件系统的类似 nfsstat 的统计信息的主要内容,如果未能解决你的问题,请参考以下文章

Ext3的三种日志记录方式

文件系统EXT3,EXT4和XFS的区别

EXT3文件系统误删除导致文件系统中的邮件丢失恢复方法

文件系统及分区和raid

linux的文件系统及节点表

什么是 ext3 中的孤儿列表?