NFS常见问题及参数

一、nfs客户端服务端部署
省略

二、nfs工作原理
1、

NFS:Network File System 网络文件系统,基于内核的文件系统。通过使用
NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol
远程过程调用)实现

2、

因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。PRC最主要的功能就是指定每个NFS功能所对应的port
number,并且通知客户端,记客户端可以连接到正常端口上去。

在启动NFS SERVER之前,首先要启动RPC服务(即portmap或rpcbind服务,下同)否则NFS
SERVER就无法向RPC服务区注册,另外,如果RPC服务重新启动,原来已经注册好的NFS端口数据就会全部丢失。因此此时RPC服务管理的NFS程序也要重新启动以重新向RPC注册。一般修改NFS配置文档后,是不需要重启NFS的,直接在命令执行/etc/init.d/nfs
reload或exportfs –rv即可使修改的/etc/exports生效。

三、常见参数

 ro:默认选项,以只读的方式共享。

       rw:以读写的方式共享。

       root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户为NFS的匿名用户(nfsnobody)。

       no_root_squash:将客户端使用的是root用户时,则映射到NFS服务器的用户依然为root用户。

       all_squash:默认选项,将所有访问NFS服务器的客户端的用户都映射为匿名用户,不管客户端使用的是什么用户。

       anonuid:设置映射到本地的匿名用户的UID

       anongid:设置映射到本地的匿名用户的GID

       sync:默认选项,保持数据同步,数据同步写入到内存和硬盘。

       async:异步,先将数据写入到内存,在将数据写入到硬盘。

       secure: 限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

       insecure:允许客户端从大于1024的tcp/ip端口连接服务器
       subtree_check   如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认) 
 no_subtree_check   和上面相对,不检查父目录权限
 wdelay            如果多个用户要写入NFS目录,则归组写入(默认) 
 no_wdelay      如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。 
 Hide                在NFS共享目录中不共享其子目录 
 no_hide           共享NFS目录的子目录 

四、常见命令
1、检查共享目录信息

showmount -e nfs服务端IP地址

2、查看挂载目录

df  -h

3、nfs服务端查看端口映射情况

rpcinfo -p localhost

4、开机自动挂载写法


[root@web01 test]$ cat /etc/fstab 
# 添加如下信息
10.0.0.1:/data                        /mnt   nfs   defaults   0 0

5、手动挂载命令

mount -t nfs ip:/data /data

6、重新加载配置文件

systemctl reload nfs-server
或者
exportfs -avr

7、查看挂载是报错的具体信息

mount -t nfs -vvvv server.example.com:/share /mnt

五、常见故障分析
1、排查nfs和客户端防火墙安全组配置

ufw ipables firewalld

2、看nfs服务端的ip能否ping通长长访问
3、查看客户端是否正常启动
4、showmount -e nfs服务端ip查看是否能够查看nfs服务端信息
5、使用mount -t nfs -vvvv server.example.com:/share /mnt查看挂载报错的具体问题

5、nfs服务端未开放相关服务组件访问端口

查看服务端rpc状态信息,其中mountd 和nlockmgr
服务启动端口不固定(可通过重启rpcbind和nfs-server服务前后对比打印信息)

[root@iZ8vb1o2lqhuz4bjn2ton6Z ~]# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100005    1   udp  20048  mountd
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100005    2   tcp  20048  mountd
    100005    3   udp  20048  mountd
    100005    3   tcp  20048  mountd
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    3   tcp   2049  nfs_acl
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    3   udp   2049  nfs_acl
    100021    1   udp  40286  nlockmgr
    100021    3   udp  40286  nlockmgr
    100021    4   udp  40286  nlockmgr
    100021    1   tcp  33983  nlockmgr
    100021    3   tcp  33983  nlockmgr
    100021    4   tcp  33983  nlockmgr

对比nfs的端口使用情况

服务名 端口号 协议 说明
nfs 2049 tcp/udp 固定端口
portmapper 111 tcp/udp 固定端口
mountd 20048 tcp/udp 端口可以修改
nlockmgr 42315 tcp/udp 端口可以修改

更改相关端口为固定端口mountd和nlockmgr

更改mountd 服务端口为20048
echo “mountd 20048/tcp” >> /etc/services
echo “mountd 20048/udp” >> /etc/services

更改nlockmgr 服务端口为42315
echo “fs.nfs.nlm_udpport=42315” >> /etc/sysctl.conf
echo “fs.nfs.nlm_tcpport=42315” >> /etc/sysctl.conf
sysctl -p

方通端口2049 、111 、20048 、42315

6、案例:在云上部署nfs服务端然后使用云上的服务端可以正常访问;但是使用idc线下服务器挂载云上的nfs服务端却始终失败,nfs服务端已放开所有端口ip访问

具体报错如下:

[root@node-01 ~]#  mount -t nfs -vvvv  112.43.5.67:/data /data
mount.nfs: timeout set for Sat May  7 22:52:28 2020
mount.nfs: trying text-based options 'vers=4.1,addr=112.43.5.67,clientaddr=10.0.0.94'
mount.nfs: mount(2): Operation not permitted
mount.nfs: trying text-based options 'addr=112.43.5.67'
mount.nfs: prog 100003, trying vers=3, prot=6
mount.nfs: trying 8.142.149.27 prog 100003 vers 3 prot TCP port 2049
mount.nfs: prog 100005, trying vers=3, prot=17
mount.nfs: trying 8.142.149.27 prog 100005 vers 3 prot UDP port 20048
mount.nfs: mount(2): Permission denied
mount.nfs: Operation not permitted

分析原因:

由于nfs默认的客户端访问是secure只能允许客户端通过小于1024的特权端口连接服务端导致的权限拒绝

解决办法:

在服务端配置文件/etc/exports中配置insecure
允许客户端使用大于1024端口访问服务端
测试可以正常访问

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值