mount.nfs:在 Ubuntu 机器上安装时服务器拒绝访问?

ars*_*nal 75 linux ubuntu nfs mount

我有三台机器在生产 -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183
Run Code Online (Sandbox Code Playgroud)

所有这些机器都安装了 Ubuntu 12.04,我对所有这三台机器都有 root 访问权限。

现在我应该在上面的机器上做下面的事情 -

Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
 sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/
Run Code Online (Sandbox Code Playgroud)

/opt/exhibitor/conf如上所述,我已经在所有这三台机器中创建了目录。

现在我正在尝试创建一个挂载点。所以我遵循了以下过程 -

以上三台机器都安装NFS支持文件和NFS内核服务器

$ sudo apt-get install nfs-common nfs-kernel-server
Run Code Online (Sandbox Code Playgroud)

在以上三台机器上创建共享目录

$ mkdir /opt/exhibitor/conf/
Run Code Online (Sandbox Code Playgroud)

/etc/exports在以上三台机器中编辑并添加了这样的条目 -

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/     10.66.136.129(rw)
/opt/exhibitor/conf/     10.66.138.181(rw)
/opt/exhibitor/conf/     10.66.138.183(rw)
Run Code Online (Sandbox Code Playgroud)

我已经尝试从 machineB 和 machineC 安装在 machineA 上,如下所示,它给了我这个错误 -

root@machineB:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

root@machineC:/# sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf
Run Code Online (Sandbox Code Playgroud)

我的/etc/exports文件看起来不错吗?我很确定,我弄乱了我的exports文件。因为我在导出文件中的所有三台机器中都有相同的内容。

知道我在这里做错了什么吗?/exports这里的正确文件是什么?

slm*_*slm 85

导出文件

/etc/exports服务器上创建文件时,您需要确保将其导出。通常你会想要运行这个命令:

$ exportfs -a
Run Code Online (Sandbox Code Playgroud)

这将导出导出文件中的所有条目。

展示架

我经常做的另一件事是在其他机器上使用showmount命令检查任何将 NFS 共享导出到网络的机器。

$ showmount -e <NFS server name>
Run Code Online (Sandbox Code Playgroud)

例子

比如说我登录了 scully。

$ showmount -e mulder
Export list for mulder:
/export/raid1/isos     192.168.1.0/24
/export/raid1/proj     192.168.1.0/24
/export/raid1/data     192.168.1.0/24
/export/raid1/home     192.168.1.0/24
/export/raid1/packages 192.168.1.0/24
Run Code Online (Sandbox Code Playgroud)

要在启动时挂载这些,您需要将此行添加到想要使用 NFS 挂载的客户端计算机。

server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr
Run Code Online (Sandbox Code Playgroud)

自动挂载

如果您要重新启动这些服务器,那么我强烈建议您考虑设置自动挂载 ( autofs) 而不是将这些条目添加到/etc/fstab. 这需要更多的工作,但值得付出努力。

这样做将允许您更独立地重新启动服务器,并且只会在实际需要和/或使用时才创建 NFS 安装。当它闲置时,它将被卸载。

参考

  • @TechGeeky - 不是真的。`exportfs -rv` 只是重新导出 + 是冗长的。`-a` 将导出所有内容。至于`showmount -e` 是的,您可以从这些机器或为共享服务的机器上运行它。 (2认同)

小智 45

我看到了相同的错误 ( mount.nfs: access denied by server while mounting...),问题已通过-o v3选项修复,如下所示:

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
Run Code Online (Sandbox Code Playgroud)
  • 服务器是 Ubuntu 14.04 64 位 LTS。
  • 客户端是 CentOS 6.5 64 位。

  • 其余的都没有帮助,就我而言,这是解决方案。 (2认同)
  • 我试过这个,得到了 `mount.nfs: Connection timed out`。(客户端是 Ubuntu 14.04 LTS 64 位。服务器是 QNAP NFS,QTS 4.0.2 2016/01/09。) (2认同)
  • 小心这一点。NFSv3 是古老而过时的;它真的不应该再使用了(甚至在写这篇文章时也是如此)。 (2认同)

小智 7

在我的情况下使用 nfs4 工作:

$ sudo mount -t nfs4 server-name://path/to/mount

/etc/export服务器上的文件中

/Path/to/export 192.168.1.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)
Run Code Online (Sandbox Code Playgroud)

fsid=0/Path/to/export挂载共享时使根目录。

crossmnt,因为我也想访问导出的文件系统中的其他一些驱动器。

no_root_squash,因为我想从客户端以 root 用户 (su) 身份访问。我很确定我是本地网络中唯一可以做到这一点的人。

服务器和客户端是 Ubuntu 14.04 64 位。

如果您想使用 nfs3,@fumisky-wells 的答案也适用于我。


小智 6

我收到相同的错误消息,结果证明我的问题是由于客户端机器有两个网络接口连接到同一个 LAN。服务器已配置为期望特定 IP 地址,并且流量在具有 dhcp IP 地址的第二个接口上流出。所以我只是将第二个接口配置为具有静态 IP 地址,并将第二个静态 IP 地址添加到服务器配置中。


Dal*_*son 5

在与同样的错误消息进行了数小时的斗争之后,我发现我的问题并不比 NFS 主机上的老式 Linux 文件权限更复杂。

我尝试共享的文件夹 ( /home/foo/app/share) 具有正确的权限,但由于用户的主目录 ( /home/foo) 具有0750模式,因此 NFS 无法遍历它来访问共享目录。

一旦我将用户的主目录设置为 mode 0751,NFS 服务就能够遍历到该目录,并且我能够从客户端计算机挂载共享。