linux下如何获取文件系统触发的整个磁盘活动?

linux下如何获取文件系统触发的整个磁盘活动?

我想记录操作系统调用的磁盘访问活动。我要记录的这些数据是磁盘从操作系统接收的,包括磁盘扇区号、请求长度、到达时间、读或写。

具体来说,操作系统是linux,内核是3.xxx,磁盘文件系统是ext4。也许我需要修改 ext4 驱动程序来记录此类磁盘访问活动。

操作系统是 Intel i686 上的 Ubuntu 15.04 32 位。我正在做一项研究,想要获取桌面的 I/O 跟踪。

答案1

我不确定您是否可以从ext4驱动程序中获取所有这些信息,因为它不负责磁盘扇区和其他磁盘几何结构,而是负责 Linux 内核中的块设备层子系统。我没有看到一种方法来获取您感兴趣的所有信息,因为据我所知,您对低级内容以及高级读/写操作都很感兴趣,但是看看块跟踪实用程序。

答案2

你的问题不清楚。如果您想要原始磁盘 I/O 分析(那么文件系统是无关紧要的,并且您还想测量交换磁盘 IO),您可能必须配置或修补内核(我不知道如何)。也许通过虚拟机管理程序(如xen)运行 Linux 可能会有所帮助。也看看oprofile

另一方面,如果您对文件系统活动感兴趣,您可以使用inotify(7)。请注意,感谢页面缓存,文件系统活动与原始磁盘活动不同。

答案3

您需要内核级跟踪来实现这一点。

有大量的工具可以实现这一点,这些工具具有不同级别的功能、可用性和稳定性,包括sysdig,ftrace,perf,dtrace4linux,ktap,systemtap和别的。

你可能会从t点基于ftrace,不需要安装任何东西(在脚本本身之外),例如:

# tpoint -H ext4:ext4_da_write_end

为了更进一步,我建议使用 进行调查systemtap

相关内容