我的基于 Linux 的系统显示 NFS 挂载文件系统的统计信息,如下所示:
Remote Path Mounted-on Stats
server1:/some/path/name /path1 100 GB free
server2:/other/path/name /path2 100 GB free
Total: 200 GB free
这很好用。问题是当 NFS 服务器上的相同文件系统在我的客户端上安装了两次时:
Remote Path Mounted-on Stats
server1:/some/path/name /path1 100 GB free
server1:/some/path/name2 /path2 100 GB free
Total: 200 GB free
server1
和实际上在同一个文件系统上,有 100 GB 可用空间,但我错误地将它们加起来并报告 200 GB 可用空间/some/path/name
。/some/path/name2
有什么方法可以检测到它们在同一个分区上吗?
不起作用的方法:
- “使用
statfs()
”:statfs()
返回一个struct statfs
,其中有一个“文件系统 ID”字段,f_fsid
。不幸的是,它是未定义的,并且在 NFS 上被归零。 - “不要多次挂载同一个分区。” 这是我无法控制的。
- “使用基于可用空间的启发式方法。” 该方法必须确定有效。此外,
statfs()
缓存其输出,因此在面对大量数据移动时很难做到这一点。
如果没有解决方案,我将不得不在服务器端的每个潜在挂载点生成一个配置文件,但如果有一些干净的方法可以避免这种情况,那就更好了。
谢谢!