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 安装。当它闲置时,它将被卸载。
小智 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)
小智 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 地址添加到服务器配置中。
在与同样的错误消息进行了数小时的斗争之后,我发现我的问题并不比 NFS 主机上的老式 Linux 文件权限更复杂。
我尝试共享的文件夹 ( /home/foo/app/share) 具有正确的权限,但由于用户的主目录 ( /home/foo) 具有0750模式,因此 NFS 无法遍历它来访问共享目录。
一旦我将用户的主目录设置为 mode 0751,NFS 服务就能够遍历到该目录,并且我能够从客户端计算机挂载共享。