当文件系统安装在 nfs 上时,如何使用 Linux 访问该文件系统的实际块大小信息?

当文件系统安装在 nfs 上时,如何使用 Linux 访问该文件系统的实际块大小信息?

我有一台 Centos 6.5 和 Solaris 5 机器。我试图在 statvfs 的成员 f_frsize 中获取有关文件系统块大小的信息。我首先从 Centos 尝试,但是当文件系统安装在 nfs 中时,我得到一个类似 32768 或 65536 的值。我认为这个值是 nfs 数据块大小而不是块大小。

当我尝试从 Sun Solaris 获取相同 nfs 文件系统的块大小信息时,我得到一个类似于 1024 的值。

那么为什么我在从 Solaris 和 Linux 调用 statvfs 时会得到不同的块大小 (f_frsize) 呢?

有没有办法获取 nfs 文件系统的 f_frsize 信息而不是此 nfs 数据块大小?我不知道我想要的是否可能,但我想了解更多有关此的信息。

谢谢

答案1

我找到了解决我的问题的方法。这根本就是一个数学问题!不同的数字可以得出相同的结果。因此在 Linux 和 Solaris 之间,成员 f_frsize 具有不同的值。但这并不重要,因为当您使用两个操作系统中的 f_frsize 将块转换为字节时,该公式取自这里:

static unsigned long kscale(unsigned long b, unsigned long bs)
{
     return (b * (unsigned long long) bs + 1024/2) / 1024;
}

我在两个操作系统中都得到了与 df 命令相同的结果。所以没有真正的问题,只是我的想象:) 抱歉。

相关内容