我的基于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
的{{1}}和/some/path/name
实际上位于同一个文件系统上,它有100 GB可用空间,但我错误地将它们添加起来并报告200 GB免费。
有没有办法检测到它们在同一个分区上?
不起作用的方法:
/some/path/name2
”:statfs()
返回statfs()
,其中包含“文件系统ID”字段struct statfs
。不幸的是,它未定义并通过NFS归零。f_fsid
会缓存其输出,因此面对大数据移动很难做到这一点。如果没有解决方案,我将不得不在服务器端的每个潜在挂载点生成一个配置文件,但如果有的话会更好 一些干净的方法来避免这种情况。
谢谢!
答案 0 :(得分:0)
我想如果“stat -c%d / mountpoint”做你想要的(我现在无法测试)?
答案 1 :(得分:0)
您可能希望阅读远程系统的共享文件系统 - 使用:
showmount -e server
这将为您提供正在共享的真实路径。从远程系统步行安装时,将它们从远程系统修剪到公共根,并使用它来确定安装点是否来自同一个基础文件系统。
如果文件系统是从同一个基础文件系统单独共享的话,这对您没有帮助。
您可以添加一个启发式检查整个文件系统大小和可用空间,并假设它们是相同的,并且来自同一个远程服务器,它位于同一个分区上,映射到最短的公共路径装载设备。
如果您从环回安装的文件系统中共享,这些文件系统在形式上与其他文件系统完全不同,则这些文件系统都无法提供帮助。
对于可以使用不同名称和地址进行寻址的服务器,它无法帮助您。