问题描述
我有三台机器正在生产-
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)