我有一台 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 命令相同的结果。所以没有真正的问题,只是我的想象:) 抱歉。