我有一个存放ZFS快照的服务器,通过NFS将它们导出到正在备份的服务器上,这样您就可以通过内部编写的自定义应用程序进行恢复。 问题如下:
注:我没有使用ZFS内置的NFS的原因,所以请不要告诉我使用!
这是所有NFS v4
主机运行CentOS 6.2客户机运行CentOS 5.7
我在主机上默认启动了8个nfs服务器。
在保存NFS共享的备份服务器上,我可以根据需要遍历目录结构,并查看所有预期的文件。
在客户端上,我可以遍历文件系统,但是有时候,它确实是随机的,当我深入到两个或更多的目录时,我最终看到来自另一个服务器的文件。
这里是一个例子:
[NFSSERVER /nfs/share]# ls -l total 60 drwx--x--x 30 root root 4096 Feb 25 00:15 20120225 drwx--x--x 30 root root 4096 Feb 26 00:05 20120226 drwx--x--x 30 root root 4096 Feb 27 00:06 20120227 .....
等等
[NFSCLIENT /app/backups]# ls -l total 60 drwx--x--x 30 nobody nobody 4096 Mar 2 00:25 20120225/ drwx--x--x 30 nobody nobody 4096 Mar 2 00:25 20120226/ drwx--x--x 30 nobody nobody 4096 Mar 2 00:25 20120227/ ......
等等
你可以看到他们应该是相同的。
这是问题的起点。 如果我进入:
[NFSCLIENT /app/backups/20120225/home] # ls -l
当我在客户端运行这个ls -l时, 有时我会看到正确的文件,有时我会看到另一台服务器的主目录。
如果我得到[NFSSERVER /nfs/share/20120225/home]# ls -l
当我运行这个LS – 我看到正确的文件。 如果我删除/ nfs / share /中的文件夹,我可以立即在客户端看到结果。 只有当我更深入地看到这些“交叉安装”的文件系统。
这是我的/ etc / exports(主机名已更改)的一部分
/nfs *.domain.com(fsid=0,ro,nohide,no_root_squash) /nfs/server1/20120308 *.domain.com(ro,nohide,no_root_squash) /nfs/server1/20120309 *.domain.com(ro,nohide,no_root_squash) /nfs/server1/20120310 *.domain.com(ro,nohide,no_root_squash) /nfs/server1/20120311 *.domain.com(ro,nohide,no_root_squash) /nfs/server2/20120308 *.domain.com(ro,nohide,no_root_squash) /nfs/server2/20120309 *.domain.com(ro,nohide,no_root_squash) /nfs/server2/20120310 *.domain.com(ro,nohide,no_root_squash) /nfs/server2/20120311 *.domain.com(ro,nohide,no_root_squash) /nfs/server3/20120204 *.domain.com(ro,nohide,no_root_squash) /nfs/server3/20120205 *.domain.com(ro,nohide,no_root_squash) /nfs/server3/20120206 *.domain.com(ro,nohide,no_root_squash) /nfs/server3/20120207 *.domaincom(ro,nohide,no_root_squash)
如果我从etc export中除去所有行,除了交叉装载之外,然后重新载入exports文件(即只在/ etc / exports中留下一个入口),它会显示客户端机器上所有正确的目录。
那么,过时的NFS处理? 更多的NFS服务器默认运行? 别的东西? 有任何想法吗? 我已经在这个一个星期几个礼拜了。
UPDATE
这是脚本运行的代码行,它设置了正在导出的目录:
mount -t ext4 -o noload,ro /dev/zvol/backups/$HOST@$DATE"-00" /nfs/$HOST/$DATE
/ nfs / $ HOST / $ DATE文件夹是正在导出的文件夹(如您在上面的导出文件中看到的那样)
所以它似乎是通配符导出,如果你阅读手册页,不build议。 我之前读过,但由于某种原因没有解决它。 我仍然认为这是一个“错误”,它应该在理论上工作,但在实践中,事实并非如此。
希望这可以帮助别人。
我的新导出文件的例子:
/nfs server1.a2hosting.com(fsid=0,ro,nohide,no_root_squash) /nfs/server1/20120320 server1.a2hosting.com(ro,nohide,no_root_squash)