2.NFS文件共享

NFS文件共享

1 NFS概述

NFS即网络文件系统,由SUN公司开发的一种通过网络方式共享文件系统的通用共享解决方案。
目前NFS有三个版本:NFSv2、NFSv3、NFSv4
各版本优点:
  NFSv2:兼容性是所有版本中最好的
  NFSv3:更快的速度,更大的单个文件大小,更多便于排错的错误及成功信息,对TCP协议的支持等
  NFSv4:提供有状态的连接,更容易追踪连接状态,增强安全特性
NFS监听端口为:TCP 2049

2 NFS安装

由于NFS比较简单,所以直接用yum安装

2.1 NFS服务器配置

配置规则
  空白行将被忽略
  以#号开头的内容为注释
  配置文件可以通过\符号转移换行
  每个共享的文件系统需要独立一行条目
  客户端主机列标需要使用空格隔开
  配置文件中支持通配符

NFS选项功能描述NFS选项功能描述
ro只读共享rw可读可写共享
sync同步写操作async异步写操作
wdeay延迟写操作root_squash屏蔽远程root权限
no_root_squash不屏蔽远程root用户all_squash屏蔽所有的远程用户权限
2.2 添加epel源
[root@localhost ~]#  rpm -ivh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
[root@localhost ~]# makecache  # 更新源
[root@localhost ~]# yum repolist   #展示目前的yum源
2.3 安装NFS
[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# rpm -qa |grep nfs-utils
nfs-utils-1.3.0-0.61.el7.x86_64
[root@localhost ~]# rpm -qa |grep rpcbind
rpcbind-0.2.0-47.el7.x86_64
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
2.4 创建用户账号并配置访问权限
[root@localhost ~]# useradd -u 1003 jerry
[root@localhost ~]# mkdir /var/{web,cloud}
[root@localhost ~]# chmod a+w /var/web/
[root@localhost ~]# cat /etc/exports
/var/web/ 10.0.51.163(rw,async,no_root_squash)
/var/cloud/ *(ro,sync)
2.5 客户端访问NFS共享
挂载web:
[root@localhost ~]# showmount -e 10.0.51.163 # 挂载NFS
Export list for 10.0.51.163:
/var/cloud *
/var/web   10.0.51.163
[root@localhost ~]# mkdir /var/web
[root@localhost ~]# useradd -u 1003 jerry
[root@localhost ~]# mount 10.0.51.163:/var/web /var/web/ # 手动挂载
mount.nfs: access denied by server while mounting 10.0.51.163:/var/web
[root@localhost ~]# echo "10.0.51.163:/var/web /var/web nfs defaults 0 0" >> /etc/fstab # 设置开机自动挂载
[root@localhost ~]# chmod a+w /var/web/ # 给所有的用户可写权限
[root@localhost ~]# cd /var/web/
[root@localhost web]# touch a.txt
[root@localhost web]# ll /var/web/
total 0
-rw-r--r--. 1 root root 0 Jun 11 20:59 a.txt
[root@localhost web]# su - jerry
[jerry@localhost ~]$ cd /var/web/
[jerry@localhost web]$ touch jerry.txt
[jerry@localhost web]$ ls -l
total 0
-rw-r--r--. 1 root  root  0 Jun 11 20:59 a.txt
-rw-rw-r--. 1 jerry jerry 0 Jun 11 20:59 jerry.txt

挂载cloud:
[root@localhost ~]# mkdir /var/cloud
[root@localhost ~]# useradd -u 1003 jerry # 账号在前面已经创建了的话,可以忽略
[root@localhost ~]# mount 10.0.51.163:/var/cloud /var/cloud/ # 手动挂载
[root@localhost ~]# echo "10.0.51.163:/var/cloud /var/cloud nfs defaults 0 0" >> /etc/fstab # 设置开机自动挂载
[root@localhost ~]# cd /var/cloud/
[root@localhost cloud]# touch root.txt
touch: cannot touch 'root.txt': Read-only file system #提示该文件系统只读

3 NFS高级设置

  1. nfs:NFS服务器主程序
  2. nfslock:为NFS文件系统提供锁机制
  3. rpcbind:提供地址与端口注册服务
  4. rpc.mountd:该进程被NFS服务用来处理NFSv2与NFSv3的mount请求
  5. rpc.nfsd:动态处理客户端请求
  6. lockd:lockd是内核线程,在服务器与客户端运行,用来实现NLM网络协议,允许NFSv2与NFSv3客户端对文件枷锁
  7. rpc.statd:该进程实现网络状态监控(NSM)协议
  8. rpc.rquotad:该进程提供用户配额信息
  9. rpc.idmapd:提供NFSv4名称映射,/etc/idmapd/conf必须被配置

4 NFS客户端配置

若想要客户端主机可以访问并使用服务器所提供的共享目录,可通过mount命令挂载NFS共享,格式如下:

# mount -t nfs -o 选项 服务主机:/服务器共享目录 /本地挂载目录

具体挂载选项如下:

  1. Intr:当服务器宕机时允许中断NFS请求
  2. nfsvers=version:指定使用哪个版本的NFS协议,version可以是2、3或4
  3. noacl:关闭ACL,仅与老版本操作系统兼容时使用
  4. nolock:关闭文件锁机制,仅用来连接老版本NFS服务器
  5. noexec:在挂载的文件系统中屏蔽可执行的二进制数据程序
  6. port=num:指定NFS服务器端口号,默认num为0,此时如果远程NFS进程没有在rpcbind注册端口信息,则使用标准NFS端口号(TCP 2049端口)
  7. rsize=num:设置最大数据块大小调整NFS读取数据的速度,num单位为字节
  8. wsize=num:设置最大数据块大小调整NFS写入数据的速度,num单位为字节
  9. tcp:使用TCP协议挂载
  10. udp:使用UDP协议挂载

5 使用NFS命令工具

5.1 exportfs命令

  概述:当nfs服务启动时,/usr/sbin/exportfs命令会自动启动并读取/etc/exports文件,通过控制rpc.mountd(如果使用NFSv2或NFSv3)处理怪哉请求,然后rpc.nfsd使文件系统对远程主机可见,手动运行exportfs命令允许root在不重启NFS服务的情况下选择共享或取消部分共享目录。


选项:

参数解释
-r重新读取/etc/exports文件
-a全部共享或全部取消共享
-u取消共享,与-a一起使用可以取消全部共享文件系统
-v显示详细信息
5.2 nfsstat命令

  概述:查看NFS共享状态


选项:

参数解释
-s不使用该参数时,默认显示服务器端与客户端状态,使用该参数后将仅显示服务器端状态
-c,–clinet仅显示客户端状态
-n,–nfs仅显示NFS状态,默认显示NFS与RPC信息
-nn为数字2、3或4,仅显示NFS版本为n的状态信息
-m显示挂载信息
-l以列表形式显示信息
5.3 rpcinfo命令

  概述:生成PRC信息报表


选项:

参数解释
-m显示指定主机rpcbind操作信息表
-p显示指定主机RPC注册信息
-s显示指定主机所有注册RPC的信息程序,不指定主机时默认显示本机信息

示例:
  # rpcinfo
  # rpcinfo -p 127.0.0.1
  # rpcinfo -m 127.0.0.1
  # rpcinfo -s

6 在防火墙后端运行NFS

  1. MOUNTD_PORT=端口号:设置mountd程序端口号
  2. LOCKD_TCPPORT=端口号:设置tcp的lockd程序端口号
  3. LOCKD_UDPPORT= 端口号:设置udp的lockd程序端口号
  4. STATD_PORT=端口号:设置rpc.statd程序端口号

注:配置完固定的端口号之后,还需要对防火墙进行设置,需要为防火墙编写策略允许所有端口的数据通信。此外,还需要为NFS开启TCP与UDP的2049端口,以及TCP与UDP的111端口,111端口被rpcbind所使用。

7 常见问题分析

  1. The rpcbind failure error
故障现象:
nfs mount: server1:: RPC: Rpcbind failure
RPC: Timed Out
nfs mount: retrying: /mntpoint

故障原因:

第一,可能因为客户机的hosts文件中存在错误的ip地址、主机名或节点名组合;
第二,服务器因为过载而暂时停止服务。
  1. The server not responding error
故障现象:
NFS server server2 not responding, still trying

故障原因:
第一,网络不通,用ping命令检测一下。
第二,服务器关机。
  1. The NFS client fails a reboot error
故障现象:
启动客户机后停住了,不断显示如下提示信息:
Setting default interface for multicast: add net 224.0.0.0: gateway:
client_node_name.

故障原因:
在etc/vfstab的mount选项中使用了fg而又无法成功mount服务器上的资源,改成bg或将该行注释掉,直到服务器可用为止。
  1. The service not responding error
故障现象:
nfs mount: dbserver: NFS: Service not responding
nfs mount: retrying: /mntpoint

故障原因:
第一,当前级别不是级别3,用who -r查看,用init 3切换。
第二,NFS Server守护进程不存在,用ps -ef | grep nfs检查,用/etc/init.d/nfs start启动。
  1. The program not registered error
故障现象:
nfs mount: dbserver: RPC: Program not registered
nfs mount: retrying: /mntpoint

故障原因:
第一,当前级别不是级别3。
第二,mountd守护进程没有启动,用/etc/init.d/nfs脚本启动NFS守护进程。
第三,看/etc/dfs/dfstab中的条目是否正常。
  1. The stale file handle error
故障现象:
stale NFS file handle

故障原因:
服务器上的共享资源移动位置了,在客户端使用umount和mount重新挂接就可以了。
  1. The unknown host error
故障现象:
nfs mount: sserver1:: RPC: Unknown host

故障原因:
hosts文件中的内容不正确。
  1. The mount point error
故障现象:
mount: mount-point /DS9 does not exist.

故障原因:
该挂接点在客户机上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。
  1. The no such file error
故障现象:
No such file or directory.

故障原因:
该挂接点在服务器上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。
  1. No route to host
故障现象:
# mount 192.168.115.120:/opt/data /data -t nfs -o rw
mount: mount to NFS server ‘192.168.115.120’ failed: System Error: No route to host.

故障原因:
防火墙被打开,关闭防火墙。
这个原因很多人都忽视了,如果开启了防火墙(包括iptables和硬件防火墙),NFS默认使用111端口,我们先要检测是否打开了这个端口,还要检查TCP_Wrappers的设定。
  1. Not owner
故障现象:
# mount -F nfs -o rw 192.168.115.120:/mnt/data /data
nfs mount: mount: /data: Not owner

故障原因:
这是Solaris 10版本挂载较低版本nfs时报的错误。

解决:
需要用-o vers=3参数
示例:
# mount -F nfs -o vers=3 192.168.115.120:/mnt/data /data
  1. RPC: Program not registered & retrying
故障现象:
nfs mount: 192.168.115.120: : RPC: Program not registered
nfs mount: retrying: /data

故障原因:
没有启动NFS共享端服务。

解决:需要重新启动share端的NFS服务,
Linux:
mount: RPC: Program not registered
# /etc/init.d/nfs restart
Solaris:
mount: RPC: Program not registered
# /etc/rc.d/init.d/nfs restart
  1. can’t contact portmapper: RPC: Remote system error – Connection refused
故障现象:
# exportfs -a
can’t contact portmapper: RPC: Remote system error – Connection refused

故障原因:
出现这个错误信息是由于server端的portmap没有启动。

解决:
# /etc/init.d/portmap start
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值