一 服务端的配置
首先安装 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服务端和客户端相对来说就是耦合度有些高。网站程序也是一样,尽量不要耦合度太高,系统及程序架构师的重要职责就是为程序及架构解耦,让网站的扩展性变得更好。