使用 NFS 设置自动挂载的文件共享

使用 NFS 设置自动挂载的文件共享

问题是:我想在我的笔记本电脑和家里的电脑之间创建文件共享,以便我可以从两台计算机访问我的文件。是laptop服务器(因为我在移动时可能需要文件),pc是客户端。

这是我尝试的解决方案:两台机器上都有 linux (debian),我决定使用 NFS。一切都工作正常,直到我重新启动两台机器并遇到了第 22 条军规。理想情况下,我希望服务器自动挂载 NFS,所以我在/etc/fstab.虽然,重新启动服务器后,我注意到我必须重新运行exportfs -a才能重新加载我的/etc/exports,如下所示:

/nfs     pc(rw,sync,no_subtree_check)

但是,为了做到这一点,pc必须可以访问,否则我会收到此错误

exportfs: failed to resolve pc

因此,如果pc必须在打开之前就可以到达,那么它就违背了forlaptop的意义,除非我预计很少会重新启动,但这不是我的情况。/etc/fstabpclaptop

简而言之:pc希望laptop能够通过 fstab 自动挂载 NFS,同时laptop希望pc能够在导出中分配正确的权限。有没有一种方法可以exportfs -a在启动时运行laptop而不需要pc打开?

答案1

服务器不应该关心客户端是否可达。它只是使共享可用......无论它是否被使用。

您收到的错误“exportfs:无法解析电脑”并不是说它无法“到达”电脑。它说它无法“解析”电脑。问题在于您通过主机名引用特定客户端,但系统无法将主机名解析为 IP 地址。

显然,这是 exportfs 工作方式中的一个已知错误。我没有太深入地研究它,但在我看到的情况下(只需谷歌搜索错误消息),这是 nfs 启动和 dns 服务可用之间的计时问题。还存在 DHCP 定义的客户端和 DNS 更新速度不够快的问题。

无论如何,您的问题是名称解析问题。如果“pc”有静态 IP 地址,您可以使用 /etc/exports 中的地址,或将“pc”添加到 /etc/hosts 文件中。如果任一主机都是 DHCP,那么您可能就不那么幸运了。

在客户端(“pc”),您可能需要考虑使用自动挂载程序(autofs)来挂载远程文件系统,而不是使用 /etc/fstab。自动挂载程序只会在您需要时挂载文件系统,因此如果 NFS 服务器不可用,它不太可能在系统启动时挂起。

有关 exportfs 和名称解析问题的一些参考: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860264 https://forums.centos.org/viewtopic.php?t=69981 还有更多显示类似的问题。

答案2

我遇到了同样的问题,并尝试使用 nfs-server.service 单元解决它,但没有成功。
所以我最终把一个脚本放入 crontab 中,比如

#crontab -e
@reboot /usr/local/bin/exportNFS

#cat /usr/local/bin/exportNFS
sleep 5
/usr/sbin/exportfs -r

相关内容