NFS详解

一 服务端的配置 
首先安装 nfs-utils 和 rpcbind 
1)启动 rpcbind 服务 
service rpcbind status ,service rpcbind start 
2)启动NFS 服务 
service nfs status , service nfs start 
3)将 rpcbind和nfs 服务加入开机自启动 
vim /etc/rc.local , 输入 service rpcbind start service nfs start 
4)修改NFS服务端的配置文件 
vim /etc/exports ,输入 /data 192.168.200.0/24( rw,sync,all_squash) {注意,0/24与小括号之间没有空格} 
5)修改配置文件以后,重启nfs服务 
service nfs reload 
6)给共享目录更改属主属组为nfsnobody 
chown -R nfsnobody.nfsnobody /data 
注意:必须先开启rpcbind服务,再开启nfs服务 
测试: 
进行本地挂载测试 
mount 192.168.200.128:/data /mnt 
二 客户端设置 
1)首先确认 nfs-utils软件是否安装 
rpm -qa nfs-utils 
2)检查远端的showmount 
Showmount -e 192.168.200.128 
3)客户端挂载 
Mount 192.168.200.128:/data /mnt 
4)进行文件的读写及同步测试 
Touch , ssh root@192.128.200.128 “ls /data”(远程查看服务端的共享目录) 
5)配置开机自动挂载 
echo “mount 192.168.200.128:/data /mnt” >> /etc /rc.local

1.7 NFS配置权限设置常用参数说明 
rw Read-write,表示可读写权限 
ro Read-only,表示只读权限 
sync (同步,实时)请求或吸入数据时,数据同步写入到NFS Server的硬盘后才返回 
async (异步)写入时数据会先写到内存缓冲区,只到硬盘有空档才会写入磁盘,这样可以提升写入速率!风险为若服务器挂掉或不正常关机,会损失缓冲区中未写入磁盘的数据 
no_root_squash 访问NFS Server共享目录的用户如果是root,它对该共享目录具有root权限。 
root_squash 如果访问目录的是root,则它的权限将被压缩成匿名用户。 
all_squash 不管访问共享目录的用户身份如何,它的权限都被压缩成匿名用户。 
anonuid 指定共享文件夹里文件所有者的uid号:例如:(rw,squash,anonuid=12306,anongid=12306) 
anongid 指定共享文件夹里文件所有者的gid号:例如:(rw,squash,anonuid=12306,anongid=12306)

1.10 exports配置文件相关参数应用领域的详细解释 (NFS精华重点) 
1)(rw,sync) :可读可写,同步传输 
2)(ro,async):只读,异步传输。 
详细说明: 
rw或者ro,主要控制的是所有客户端用户(包含root)的读写权限。如果设置成ro,就算root也只有读权限。它是NFS权限设置的第一道总闸阀门。 
sync:同步传输,实时进行。 
async:异步传输:攒一会在传输。 
3)root_squash:将root账户在共享目录里的身份降低为匿名者(默认nfsnobody)身份 
4)no_root_squash:不降低root账户在共享目录的身份,身份还是root 
5)all_squash:将所有访问用户在共享目录里的身份都降低为匿名者(默认nfsnobody)身份

2.1 NFS配置文件优化 
-NFS客户端挂载后,往共享目录写入数据时卡住了 
-NFS服务端,重启restart服务,客户端如果写入数据卡住了。 
解答: 
1,nfs服务端重启之后,共享文件夹进入grace time(无敌时间) 
2,客户端在服务端重启后写入数据大概要等90秒 
3,nfs配置文件:/etc/sysconfig/nfs 
NFSD_V4_GRACE=90 <===>/proc/fs/nfsd/nfsv4gracetime 
NFSD_V4_LEASE=90 <===>/proc/fs/nfsd/nfsv4leasetime 
NLM_GRACE_PERIOD=90 <===>/proc/fs/nfsd/nfsv4recoverydir 
这三条是控制无敌时间的,去掉#直接修改时间即可,改后别忘了重启服务。一旦启用了这三条,/proc临时目录下便会生成对应的临时文件

2.3.2 mount挂载性能优化参数选项 
下面介绍几个在企业生产环境下,NFS性能优化挂载的例子。 
1)禁止更新目录及文件时间戳挂载,命令如下: 
mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt 
2)安全加优化的挂载方式如下: 
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt 
3)默认的挂载方式如下: 
mount -t nfs 172.16.1.31:/data /mnt 
如果是本地文件系统,使用如下命令: 
mount /dev/sdb1 /mnt -o defaults,async,noatime,data=writeback,barrier=0 
注意: 
如果本地文件系统挂载时,如果加入nodiratime会报错

2.4 NFS系统应用的优缺点说明 
NFS服务可以让不同的客户端挂载使用同一个共享目录,也就是将其作为共享存储使用,这样可以保证不同节点客户端数据的一致性,在集群架构环境中经常会用到。如果是windows和Linux混合环境的集群系统,可以用samba来实现。 
优点: 
1.简单,容易上手,容易掌握 
2.NFS 文件系统内数据是在文件系统之上的,即数据是能看得见的。 
3.部署快速,维护简单方便,且可控,满足需求的就是最好的。 
4.可靠,从软件层面上看,数据可靠性高,经久耐用。数据是在文件系统之上的。 
5.服务非常稳定 
局限: 
1.存在单点故障,如果NFS Server宕机了,所有客户端都不能访问共享目录。这个需要负载均衡及高可用来弥补。 
2.在大数据高并发的场合,NFS效率,性能有限(2千万/日以下PV(pageview)的网站不是瓶颈,除非网站架构设计太差。) 
3.客户端认证是基于IP和主机名的,权限要根据ID识别,安全性一般(用于内网则问题不大)。 
4.NFS数据是明文的,NFS本身不对数据完整性做验证。 
5.多台客户机器挂载一个NFS服务器时,连接管理维护麻烦(耦合度高)。尤其NFS服务端出问题后,所有NFS客户端都处于挂掉状态(测试环境可使用autofs自动挂载解决,正式环境可修复NFS服务或强制卸载) 
涉及了同步(实时等待)和异步(解耦)的概念,NFS服务端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变得更好。

原文地址:https://www.cnblogs.com/666boke/p/9933081.html