NFS部署搭建

NFS概念介绍

NFSNetwork File System的缩写,中文意思是网络文件系统,
它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录

NFS软件只能在linux上使用,如果想让windowslinux之间实现数据共享,建议使用(FTP/samba
socket条目是由5元组组成:协议 目标IP地址 目标端口 IP地址 源端口

RPC服务介绍:

  相当于租房中的中介
   NFS服务启动会产生多个进程和多个端口,不便于客户端进行连接访问
   通过RPC服务接收NFS端口信息的注册,并通过开启RPC服务生成111端口,提供客户端进行访问

部署过程(我在这里用里程碑的形式说明)

第一个里程碑:检查nfs和rpc服务软件有没有安装

rpm -qa nfs-utils rpcbind
yum install nfs-utils rpcbind -y

 rpcbind软件重要信息

/etc/rc.d/init.d/rpcbind
/usr/sbin/rpcinfo

 nfs-utils软件重要信息

/etc/rc.d/init.d/nfs
/usr/sbin/showmount

第二里程碑:启动网络文件系统服务

/etc/init.d/rpcbind start
rpcinfo -172.16.1.31
/etc/init.d/nfs start
rpcinfo -172.16.1.31

第三里程碑:配置nfs服务配置文件

cat >>/etc/exports<<EOF 
/data 172.16.1.0/24(rw,sync)
EOF

 第四里程碑:创建共享目录

mkdir /data -p
id nfsnobody
chown -R nfsnobody.nfsnobody /data
ll /data/ -d

 第五里程碑:重启nfs服务 

/etc/init.d/nfs reload  平滑重启
/etc/init.d/nfs restart 强硬重启

第六个里程碑:检查共享目录是否创建成功

rpcinfo -p localhost      ---检查房源信息是否存在(检查nfs服务有注册端口信息)
showmount -172.16.1.31  ---检查共享目录列表信息
mount -t nfs 172.16.1.31:/data /mnt

至此nfs服务端配置完毕

 nfs的客户端的部署过程

第一个里程碑:检查nfs和rpc服务软件有没有安装

rpm -qa nfs-utils rpcbind
yum install nfs-utils rpcbind -y

疑问:是不是可以不安装nfs-utils软件

01. 如果不安装nfs软件就没有showmount命令,无法检查共享目录信息
02. 如果不安装nfs软件就无法识别nfs文件系统类型,无法进行挂载操作
# mount -t nfs 172.16.1.31:/data 
mount: wrong fs type, bad option, bad superblock on 172.16.1.31:/data,
       missing codepage or helper program, or other error
       (for several filesystems (e.g. nfs, cifs) you might
       need a /sbin/mount.<type> helper program)
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

第二个里程碑:进行nfs共享目录挂载

mount -t nfs 172.16.1.31:/data /mnt
卸载共享目录:
01. 退出共享目录,再进行卸载
    umount /mnt
02. 不退出共享目录,强制进行卸载
    umount -lf /mnt
-l     Lazy  unmount  ---懒惰的卸载
-f     Force unmount  ---强制的卸载

 修改匿名用户信息实践

 第一个里程:创建指定匿名用户

注意:服务端与客户端的匿名用户gid uid信息必须一致
useradd www -888
id www
uid=888(www) gid=888(www) groups=888(www)

第二个里程:修改nfs配置文件

/data 172.16.1.0/24(rw,sync,all_squash,anonuid=888,anongid=888)

第三个里程:重新授权共享目录

chown -R www.www /data

 第四个里程:重启nfs服务

/etc/init.d/nfs reload

第五个里程:客户端挂载目录,测试用户映射

mount -t nfs 172.16.1.31:/data /mnt
df -h
touch alex.txt
touch jeson.txt
ll
total 0
-rw-r--r-- 1 nobody nobody 0 2017-08-19 14:36 alex.txt
-rw-r--r-- 1 nobody nobody 0 2017-08-19 14:37 jeson.txt
说明:在服务端,用户信息已经完成了映射,都映射成了默认www的匿名用户
      在客户端,用户创建数据信息,在共享目录的挂载点上,权限都变为nobody
  因为当默认匿名用户变化时,服务端与客户端的匿名用户gid uid信息必须一致
  如果不一致,就会出现nobody用户权限的信息

例子测试  

共享不同的两个目录,分别赋予读和写权限
服务端上面要求:
nfs服务器172.16.1.31,共享下面两个目录:
/data/w要求的权限可读写,同步数据,所有用户都压缩为匿名用户
/data/r要求的权限为只读,同步数据,所有用户都压缩为匿名用户
客户端上面要求:
backup服务器把NFS服务器的/data/挂载到/data/r
web01服务器把NFS服务器的/data/挂载到/data/w

验收信息:配置信息参考

[root@nfs01 r]# vim /etc/exports 
#/data 172.16.1.0/24(rw,sync,all_squash)
/data/172.16.1.8/32(rw,sync,all_squash)
/data/172.16.1.41/32(ro,sync,all_squash)
说明:在配置共享目录时,需要要注意共享目录的权限也受上一级目录权限的影响,有继承关系

   nfs常见问题拍错

ls: cannot open directory .: Stale file handle

   nfs共享目录权限相关因素

①. 配置文件中的权限指定
②. 共享目录本身的权限,有w权限
③. 共享目录本身的所属用户与所属组的权限指定

NFS客户端挂载排错思路

 客户端排查三部曲

①. 检查服务端房源信息是否还在
    rpcinfo -172.16.1.31
②. 检查服务端共享目录信息是否存在
    showmount -172.16.1.31
③. 直接进行目录挂载测试
    mount -t nfs 172.16.1.31:/data /mnt


服务端排查三部曲

①. 检查服务端房源信息是否还在
    rpcinfo -p localhost
如果没有注册的房源信息了,会是什么情况?
①. nfs服务没有启动
②. nfs服务于rpc服务启动顺序不正确
②. 检查服务端共享目录信息是否存在
    showmount -e localhost
①. nfs配置文件编写错误
③. 直接进行目录挂载测试
    mount -t nfs 172.16.1.31:/data /mnt

实现nfs客户端开机自动挂载方式

①. 将挂在命令追加到/etc/rc.local开机自启动文件中
②. 编写fstab文件,并且需要配合netfs服务使用,实现开机自动挂载		

 nfs常见问题拍错

示例1:客户端挂载报错“No such file or directory
[root@nfs-client ~]# showmount -172.16.1.31
Export list for 172.16.1.31:
/data    172.16.1.0/24
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mount.nfs: mounting 172.16.1.31:/data failed, reason given by server: No such file or directory
解答:原因是NFS服务器端没有共享目录/data,创建即可。命令如下:
[root@nfs-server ~]# mkdir /data
示例2NFS服务器端启动失败,如下:
[root@nfs-server ~]# /etc/init.d/nfs start
Starting NFS services:[  OK  ]
Starting NFS quotas: Cannot register service: RPC: Unable to receive; errno = Connection refused
rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
     [FAILED]
Starting NFS mountd:[FAILED]
Starting NFS daemon: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
rpc.nfsd: unable to set any sockets for nfsd
     [FAILED]
解答:这是因为RPC服务没有在NFS前面启动,需要先启动RPC服务再启动NFS,解决方法为,按顺序启动rpcbindNFS,命令如下:
[root@nfs-server ~]# /etc/init.d/rpcbind restart
[root@nfs-server ~]# /etc/init.d/nfs restart
示例3:注册RPC服务失败,出现failedRPC ErrorProgram not registered错误。
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mount.nfs: requested NFS version or transport protocol is not supported
[root@nfs-client ~]# showmount -172.16.1.31
clnt_create: RPC: Program not registered
解答:服务器端的NFS没有启动,客户端没有收到服务器端发来的随机端口信息。
解决方法如下:
[root@nfs-server ~]# /etc/init.d/rpcbind restart
[root@nfs-server ~]# /etc/init.d/nfs restart
示例4:卸载挂载设备时显示device is busy
[root@nfs-client mnt]# umount /mnt
umount.nfs: /mnt: device is busy
umount.nfs: /mnt: device is busy
解答:有可能是当前目录就是挂载的NFS目录(/mnt),也有可能是NFS Server挂了。对于第一种情况,解决办法为退出挂载目录/mnt,再执行umount /mnt卸载。对于第二种情况,NFS Server挂了,NFS Client就会出现问题(df -h窗口会死掉),这时只能强制卸载,方法为:
umount -lf /mnt 其中的参数-f为强制卸载,参数-l为懒惰的卸载。
示例5CentOS 6.6客户端NFS挂载时遇到问题。
[root@nfs-client ~]# mount -t nfs 172.16.1.31:/data /mnt
mountwrong fs typebad optionbad optionbad superblock on 10.0.0.7:/data,
   missing codepage or helper programor other error
   (for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount.<type> helper program )
In some cases useful info is found in syslog - try
meg | tail or so
排查思路:同样的机器,NFS服务器本地可以挂载,但是客户端挂载时wrong fs type,因此尝试所有客户端安装nfs-utilsCentOS6.5及以前的NFS没有遇到这个问题。
解决方法:执行yum install nfs-utils -y,客户端安装NFS软件,但不启动服务。
示例六:共享目录挂载很卡
mount -t nfs 172.16.1.31:/data /mnt
cd /mnt
time touch test.txt
原因分析:
NFS服务端重启之后。立刻进行挂载会出现此问题,因为NFS自身重启的时候,拥有无敌的时间,默认是90秒;在无敌时间内,是不能对共享目录进行更改的操作;
在系统配置中/etc/sysconfig/nfs中指定了无敌时间的配置参数
NFSD_V4_GRACE=90
NFSD_V4_LEASE=90
NLM_GRACE_PERI0D=90
find /proc -name | grep - NLM_GRACE_PERIOD
find /proc -iname  NLM_GRACE_PERIOD
重启NFS服务没有按照顺序进行重启,一旦NFS重启了,需要确认rpcbind服务有没有接收,即rpcinfo -p localhost;先启动rpcbind服务再启动nfs服务
示例七:ls: cannot open directory .: Stale file handle
Stale file handle
客户端报错
mount -t nfs 172.16.1.31:/data  /mnt
mount.nfs: Stale file handle
服务端挂载报错
[root@nfs01 data]# mount -t nfs 172.16.1.31:/
data /mnt/
mount.nfs: access denied by server while mounting 172.16.1.31:/data
查看配置文件发现
[root@nfs01 data]# cat /etc/exports
#share /data  by lidao  at 20160913
/data 173.16.1.0/24(rw,sync)
原因分析:
/proc/mounts客户端挂载文件中已经存在了相应的挂载记录,没有正确卸载掉,就再次进行挂载,就会出现以上错误。


打赏 支付宝打赏 微信打赏

最后编辑于:2017/11/14作者: 富华运维空间

相关推荐

发表评论

提示:滑动解锁才能发表评论

动态鼠标蜘蛛网特效