NFS启动会随机启动多个端口向RPC进行注册(可用“rpcinfo -p localhost”命令查看),为了更方便的设置防火墙规则或安全组,可将NFS设置为固定端口。
修改nfs配置文件,指定固定的端口
nfs的端口固定为2049
portmapper的端口固定为111
mountd、rquotad、nlockmgr的端口是随机的
vim /etc/sysconfig/nfs
增加如下信息
RQUOTAD_PORT=30001
LOCKD_TCPPORT=30002
LOCKD_UDPPORT=30002
MOUNTD_PORT=30003
STATD_PORT=30004
vim /etc/modprobe.d/lockd.conf
增加如下信息
options lockd nlm_tcpport=30002
options lockd nlm_udpport=30002
重启(注意一定要先重启rpcbind服务)
先停止
service rpcbind stop
service nfs stop
再启动
service rpcbind start
service nfs start
开放端口
开放111、2049、30001、30002、30003、30004的TCP和UDP
其他扩展信息
设置开机自动启动服务
chkconfig nfs on
chkconfig rpcbind on
配置/etc/exports文件后刷新配置立即生效
exportfs -a
查看mount目录
#此时可用showmount -e 服务端ip来查看可mount目录
showmount -e nfs服务端ip
设置开机挂载
在/etc/fstab添加一行配置即可:
192.168.1.1:/data/nfs-share /data/wtcp/upload/wtcp-file nfs rw,tcp,intr 0 1
然后服务端和客户端都要用enable设置nfs和rpcbind服务开机启动,然后才可以正常挂载。
NFS挂载时出现"access denied by server while mounting"的解决方法
1、使用了非法端口,也就是使用了大于1024的端口。
这个错误,可以通过查看日志确认:
cat /var/log/messages | grep mount
错误信息:refused mount request from 192.168.1.1 for /data/nfs-share/ (/data/nfs-share): illegal port 1689
解决办法:
修改配置文件/etc/exports,加入 insecure 选项,重启nfs服务,再尝试挂载。
/data/nfs-share/ *(insecure,rw,async,no_root_squash)
2、NFS版本问题
编辑/etc/sysconfig/nfs文件,找到下面:
#Turn off v2 and v3 protocol support
#RPCNFSDARGS="-N 2 -N 3"
#Turn off v4 protocol support
#RPCNFSDARGS="-N 4" /*把这句前面的#号去掉*/
最后保存,重启nfs服务,再尝试挂载;如果挂载不上,可尝试在后面加-o nolock参数。
3、查看客户端挂载的目录是否具备读写权限,添加相应权限即可。
4、nfs服务器上的/etc/hosts中设置了客户端机器IP对应域名,去掉即可。