如何监视特定目录中的磁盘 I/O?

l0b*_*0b0 10 linux monitoring io disk-usage

我有一些已知名称的进程,它们都写入单个目录中的文件。我想记录的数量磁盘块读取和写入一段只是文件存取)测试参数变化是否减少了I / O显著量。我目前正在使用iostat -d -p,但这仅限于整个分区。

小智 10

我意识到这听起来既简单又荒谬,但是如果您可以控制有问题的应用程序(可能在测试环境中),您只能将该目录挂载在它自己的分区上,然后iostat等等只会告诉您关于它,在那个地方没有别的。

如果涉及物理驱动器,您可以使用环回挂载 à la 来伪造它

dd if=/dev/zero of=/bigdisk/LOOPFILE bs=1024m count=1024m # 1gb loopback file
mke2fs -j /bigdisk/LOOPFILE
mkdir /tmpcopy
mount -o loop /tmpcopy /bigdisk/LOOPFILE
cp -r -p $SPECIALDIR2MONITOR /tmpcopy
umount /tmpcopy
mount -o loop $SPECIALDIR2MONITOR  /bigdisk/LOOPFILE,
Run Code Online (Sandbox Code Playgroud)

这不会完全消除所有竞争的磁盘 I/O,但我很确定iostat的输出将更符合您的需要。