Linux 如何判断两个NFS装载是否在同一个远程文件系统上?
我的基于Linux的系统显示NFS安装的文件系统的统计信息,如下所示:Linux 如何判断两个NFS装载是否在同一个远程文件系统上?,linux,unix,nfs,Linux,Unix,Nfs,我的基于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 那很好。问题在于,NF
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的可用空间
有没有办法检测到它们在同一个分区上
不起作用的方法:
- “Use
”:statfs()
返回一个statfs()
,其中有一个“文件系统ID”字段,struct statfs
。不幸的是,它是未定义的,在NFS上被归零f\u fsid
- “不要多次挂载同一个分区。”这超出了我的控制范围
- “使用基于可用空间的启发式方法。”该方法必须明确有效。另外,
缓存其输出,因此在面对大数据移动时很难做到这一点statfs()
谢谢 我猜如果“stat-c%d/mountpoint”执行您想要的操作(我现在无法测试)?您可能想要读取远程系统的共享文件系统-使用:
showmount -e server
这将为您提供共享的真实路径。当从远程系统遍历装载时,将它们从远程系统修剪到公共根目录,并使用该目录确定装载点是否来自相同的底层文件系统
如果文件系统与同一个底层文件系统分开共享,这对您没有帮助
您可以添加一种启发式方法,检查总体文件系统大小和可用空间,并假设它们相同,并且来自同一远程服务器,它位于映射到装载设备的最短公共路径的同一分区上
如果您从一个环回挂载的文件系统共享数据,而该文件系统在形式上与其他文件系统完全不同,那么这些都没有帮助
对于可以用不同名称和地址寻址的服务器,这对您没有帮助。给定示例数据,您可以
排序-u
(唯一)+0.0-0.N
(通过远程路径的前N个字符),或者假设server1:中的“:”是您的“字段sep”排序-t:“-u+0-1