NFS网络文件系统原理与搭建

NFS工作流程图

步骤1:先启动RPC服务
步骤2:启动NFS服务(向RPC服务注册启动的端口)
步骤3:客户向RPC请求NFS
步骤4:RPC返回端口到客户
步骤5:拿着地址端口请求传输数据
NFS原理图.JPG

服务搭建:将服务端/data挂载到/mnt目录下

1:检查操作系统内核版本,确认是否支持

2:检查并安装NFS服务(服务端必须安装,客户端最好安装)

  2.1:检查NFS服务是否安装

   rpm -aq nfs-utils rpcbind

  2.2:如果未安装,需进行安装

  LANG=en

  yum install nfs-utils rpcbind -y

  2.3:安装完成,再次进行确认

  rpm -aq nfs-utils rpcbind

3:启动RPC及NFS服务并检查

   /etc/init.d/rpcbind start

   ps -ef | grep rpc

  /etc/init.d/rpcbind status

  rpcinfo -p localhost

  /etc/init.d/nfs start

  rpcinfo -p localhost

  检查进程情况

  ps -ef|egrep "rpc|nfs"
root       367     2  0 May04 ?        00:00:00 [rpciod]
rpc       1944     1  0 05:52 ?        00:00:00 /sbin/rpcbind -w
root      1977     1  0 05:58 ?        00:00:00 /usr/sbin/rpc.idmapd         name mapping daemon名称映射
rpcuser   1978     1  0 05:58 ?        00:00:00 /usr/sbin/rpc.statd           检查文件一致性
root      1979     1  0 05:58 ?        00:00:00 /usr/sbin/rpc.mountd        权限管理验证等(NFS mount daemon)
root      1989     2  0 05:58 ?        00:00:00 [nfsd4_callbacks]
root      1993     2  0 05:58 ?        00:00:00 [nfsd]
root      1994     2  0 05:58 ?        00:00:00 [nfsd]                                  主进程,管理登入,ID身份判别等
root      1995     2  0 05:58 ?        00:00:00 [nfsd]
root      1996     2  0 05:58 ?        00:00:00 [nfsd]
root      1997     2  0 05:58 ?        00:00:00 [nfsd]
root      1998     2  0 05:58 ?        00:00:00 [nfsd]
root      1999     2  0 05:58 ?        00:00:00 [nfsd]
root      2000     2  0 05:58 ?        00:00:00 [nfsd]
root      2007  1726  0 05:59 pts/1    00:00:00 grep -E --color=auto rpc|nfs

4:配置服务端/etc/exports(默认为空)文件

vim /etc/exports

/data 172.31.175.0/24(rw,sync)         sync指同步写入磁盘

该配置文件省略了很多配置,详细配置在/var/lib/nfs/etab

5:平滑重启NFS服务

systemctl reload nfs

6:配置客户端

   6.1:启动客户端rpcbind服务

       通过 showmount -e 服务端IP地址  检测能否正常挂载

   6.2:将/data目录挂载到客户端目录下

        mount -t nfs 172.31.175.30:/data /mnt

        df -h 检测是否挂载成功

注意:该配置采用系统默认的nfsnobody用户,请确保客户端和服务端nfsnobody用户的id相同(安装时系统默认会创建,uid和gid都是65535)

如果配置NFS不使用系统默认的nfsnobody用户,需注意以下几点

创建用户组

groupadd -g 889 zuma1

创建用户

useradd -u 889 -g 889 zuma1 -s /sbin/nologin -M

修改客户端挂载用户目录属性

chown zuma1.zuma1 -R data

修改服务端/etc/exports文件

/data1 172.16.1.0/24(rw,sync,all_squash,anonuid=889,anongid=889)

挂载,检查


NFS参数调优与安全

客户端优化

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 10.0.0.7:/data /mnt

nosuid    不允许suid   noexec挂载点不允许执行二进制文件      noatime每一次数据访问,不更新inode里面的时间戳   nodiratime每一次访问目录,不更新目录时间戳

rsize 数据传输一次可读多少数据   wsize 数据传输一次可写多少数据

async:涉及文件系统I/O的操作都是异步处理,即不会同步到磁盘,此参数会提高性能,但会降低数据安全,一般情况下,生产环境不推荐使用,除非对性能要求很高,对数据可靠性不要求的场合
sync:同步处理I/O

服务端优化(内核参数调整)

/proc/sys/net/core/rmem_default:该文件指定接收套接字缓冲区大小的默认值(以字节为单位),默认设置:124928
/proc/sys/net/core/rmem_max:该文件指定接收套接字缓冲区大小的最大值(以字节为单位),默认设置:124928
/proc/sys/net/core/wmem_default:该文件指定发送套接字缓冲区大小的默认值(以字节为单位),默认设置:124928
/proc/sys/net/core/wmem_max:该文件指定发送套接字缓冲区大小的最大值(以字节为单位),默认设置:124928

cat>>/etc/sysctl.conf<<EOF
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF
sysctl -p

NFS优缺点
局限
存在单点故障,如果NFS server宕机了,所有客户端都不能访问共享目录。
在大数据高并发的场合,NFS效率、性能有限。
客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般。
NFS数据是明文的,NFS本身不对数据完整性作验证。
多台客户机器挂载一个NFS服务器。当服务端出问题后,所有的NFS客户端都处于挂掉状态。


tips:

umount -lf  挂载点        强制卸载

猜你喜欢

转载自blog.51cto.com/9475587/2117349
今日推荐