iostat中rMB_nor / s,rMB_dir / s和rMB_svr / s有什么区别?

我试图解释运行以下命令的结果

iostat -mnhyc 

它产生以下

 Filesystem: rMB_nor/s wMB_nor/s rMB_dir/s wMB_dir/s rMB_svr/s wMB_svr/s ops/s rops/s wops/s /NFS_mount_path/ 376.46 0.00 0.00 0.00 0.98 0.00 132.80 129.60 0.00 

实际上从我的NFS挂载中读取了多less数据? 我应该考虑rMB_nor / s还是rMB_svr / s? iostat的手册页中,rMB_nor / s是应用程序通过read(2)调用读取的MB数,rMB_svr / s是NFS客户机通过NFS READ请求从服务器读取的MB数。 但是,我不明白他们究竟有什么不同。 NFS READ和read(2)有什么区别? 不应该所有的读取到NFS挂载NFS读取? 我不应该期望rMB_svr / s大于或等于rMB_nor / s吗?

如果数据在文件系统caching中可用,则“读取”系统调用将获取数据,但不会有读取请求发送到NFS服务器。 当应用程序多次读取相同的块或用户多次打开相同的文件时,可能会发生这种情况。 您可以刷新文件系统caching并再次观察iostat的结果:

 # echo 3 > /proc/sys/vm/drop_caches