问题描述
nfs服务配置完成后无法被客户端正常挂载,客户端执行"showmount -e 服务端IP地址"时会阻塞住,或者执行mount命令时无法成功。
解决方法
这种问题一般是防火墙或SELINUX问题造成的,把防火墙关闭后重启nfs服务即可。
Ubuntu下关闭防火墙的命令为:
feng@ubuntu:~$ sudo ufw status
状态: 激活
feng@ubuntu:~$ sudo ufw disable
防火墙在系统启动时自动禁用
feng@ubuntu:~$ sudo /etc/init.d/rpcbind restart
[ ok ] Restarting rpcbind (via systemctl): rpcbind.service.
feng@ubuntu:~$ sudo /etc/init.d/nfs-kernel-server restart
[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.
此时客户端重新进行“showmount -e 服务端IP地址”以及挂载即可。
补充
参考:https://baike.baidu.com/item/NFS/812203?fr=aladdin
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
Ubuntu下配置nfs服务
- 安装nfs服务:
sudo apt install nfs-kernel-server
- 在本地目录下创建一个文件夹用于共享使用,例如/home/feng/workSpace/nfsShare这个文件夹;
- 修改配置文件:
sudo vim /etc/exports
,在文件后加入/home/feng/workSpace/nfsShare *(ro,sync,no_root_squash)
- 保存后重启服务:
feng@ubuntu:/$ sudo /etc/init.d/rpcbind restart
feng@ubuntu:/$ sudo /etc/init.d/nfs-kernel-server restart
修改配置文件时,括号中的内容对应给出的权限,(ro,sync,no_root_squash)
ro/rw : 只读/读写 sync:同步 no_root_squash:不降低root用户的权限
值得注意的是读写权限,开放读写权限后客户端可以直接往服务端上写入东西。
挂载
- 执行
showmount -e [服务器IP地址]
可以查看服务器开放了哪些共享目录;例如:showmount -e 192.168.1.123
- 执行挂载:
mount -t nfs -o nolock [服务器IP地址]:[共享目录路径] [本机用于挂载的路径]
;例如:mount -t nfs -o nolock 192.168.1.123:/home/zefin/nfsShare /mnt
即:挂载成功后,访问本地/mnt目录时即是访问服务端的/home/zefin/nfsShare的目录。 - 如果出现挂载失败或者“permission denied”,先检查挂载的共享目录路径是否出错,再排查其他问题。