当前位置: 首页>>技术教程>>正文


linux – mount.nfs:在Ubuntu机器上挂载时服务器拒绝访问?

, , ,

问题描述

我有三台机器正在生产-

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

并且所有这些计算机都安装了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/

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

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

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

$ sudo apt-get install nfs-common nfs-kernel-server

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

$ mkdir /opt/exhibitor/conf/

编辑了/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)

我尝试从机器B和机器C如下安装在机器A上,这给了我这个错误-

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

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

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

最佳办法

exportfs

在服务器上创建/etc/exports文件时,需要确保将其导出。通常,您将需要运行以下命令:

$ exportfs -a

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

showmount

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

$ showmount -e <NFS server name>

例子

举例来说,我已经登录了。

$ 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

fstab

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

server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr

automounting

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

这样一来,您可以更独立地重新引导服务器,并且仅在实际需要和/或使用NFS挂载时创建NFS挂载。闲置时,它将被卸载。

参考

次佳办法

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

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • 服务器是Ubuntu 14.04 64位LTS。

  • 客户端是CentOS 6.5 64位。

第三种办法

就我而言,使用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)

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

crossmnt,因为我在导出的文件系统中还有其他一些要访问的驱动器。

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

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

如果要使用nfs3,则@ fumisky-wells的答案也对我有用。

第四种办法

我收到了相同的错误消息,结果却是由于客户端计算机将两个网络接口连接到同一LAN而导致的。已将服务器配置为期望使用特定的IP地址,并且流量在具有dhcp IP地址的第二个接口上流出。因此,我仅将第二个接口配置为具有静态IP地址,并将第二个静态IP地址添加到服务器配置中。

第五种办法

如您声明的那样,需要在NFS服务器计算机(而不是客户端)上编辑/etc/exports,因为当客户端请求访问共享时,该文件由NFS服务器检查。

如果将以下内容放在NFS服务器上的/etc/exports中,它将正常工作:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8505.html,未经允许,请勿转载。