我的基于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
的/some/path/name
和/some/path/name2
实际上在同一个文件系统上,该文件系统有100 GB的可用空间,但我错误地将它们加起来并报告了200 GB的可用空间。
有没有办法检测它们是否在同一个分区中?
不起作用的方法:
- “使用
statfs()
”:statfs()
返回一个struct statfs
,其中有一个“文件系统ID”字段f_fsid
。不幸的是,它未定义并且在NFS上被清零。 - “不要多次挂载同一部分。”这超出了我的控制范围。
- “基于可用空间的启发式方法。”该方法必须明确地起作用。此外,
statfs()
会缓存其输出,因此在面对大量数据移动时很难正确地实现。
如果没有解决方案,我将不得不在服务器端的每个潜在挂载点生成配置文件,但如果有一些干净的方法可以避免这种情况,那将会更好。
谢谢!