一、nfs参数说明

1、NFS服务启动的进程说明。

服务或进程名

用途说明

nfsd(rpc.nfsd) 

rpc.nfsd的主要功能是管理NFS客户端是否能够登入NFS服务端主机,其中还包含登入者的ID判别等

mountd(rpc.mountd)                                                                                                                                

rpc.mountd的主要功能则是管理NFS文件系统。当NFS客户端顺利通过rpc.nfsd登入NFS服务端主机时,在使用NFS服务器提供数据之前,它会去读NFS的配置文件/etc/exports来比对NFS客户端的权限,通过这一关之后,还会经过NFS服务端本地文件系统使用权限(就是owner、group、other权限)的认证程序。如果都通过了,NFS客户端就可以取得使用NFS服务器端文件的权限。注意,这个/etc/exports文件也是我们用来管理NFS共享目录的使用权限与安全设置的地方,特别强调,NFS本身设置的是网络共享权限,整个共享目录的权限还和目录自身的系统权限有关。

rpc.lockd(非必要)

可以来锁定文件,用于多客户端同时写入。

rpc.statd(非必要)

检查文件的一致性,与rpc.lockd有关。c、d两个服务需要客户端服务器端同时开启才可以;rpc.statd:监听来自其它主机重启的通知,并且管理本地系统重启时主机列表。

rpc.idmapd

名字映射后台进程。

 

2、NFS要共享的目录 NFS客户端地址(权限参数)

NFS共享的目录:为NFS服务端要共享的实际目录,要用绝对路径,如(/data)。注意共享目录的本地权限,如果需要读写共享,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写。 
NFS客户端地址:为NFS服务端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址,还可以用“*”来匹配所有客户端服务器,这里所谓的客户端一般来说就是前端的业务服务器,例如:Web服务,详见下表。 
权限参数集:对授权的NFS客户端的访问权限设置。

3、指定NFS客户端地址的配置详细说明

客户端地址

具体地址

说明

授权单一客户端访问NFS

192.168.56.101

一般情况下,生产环境中此配置不多

授权整个网段可访问NFS

192.168.56..0/24

其中的24等同于255.255.255.0,指定网段为生产环境中最常见的配置。配置简单、维护方便

授权整个网段可访问NFS

172.0.0.*

指定网段的另外写法(不推荐使用)

授权某个域名客户端访问

nfs.nulige.com

此方法生产环境中一般情况不常用

授权某个域名客户端访问

*nulige.com

此方法生产环境中一般情况不常用

4、NFS Client挂载参数详解

参数

参数功能

默认参数

fg、bg

当在客户端执行挂载时,可选择是前台(fg)还是在后台(bg)执行。若在前台执行,则mount会持续尝试挂载,直到成功或挂载时间超时为止,若在后台执行,则mount会在后台持续多次进行mount,而不会影响到前台的其他程序操作。如果网络联机不稳定,或是服务器常常需要开关机,建议使用bg比较妥当。

fg

soft、hard

当NFS Client以soft挂载Server时,若网络或Server出现问题,造成Client和Server无法传输资料,Client就会一直尝试,直到timeout后显示错误才停止.若使用soft mount的话,可能会在timeout出现时造成资料丢失,故一般不建议使用。 若用hard模式挂载硬盘时,刚好和soft相反,此时Client会一直尝试连线到Server,若Server有回应就继续刚才的操作,若没有回应NFS Client会一直尝试,此时无法umount或kill,所以常常会配合intr使用。这是默认值。

hard

intr

当时用hard挂载的资源timeout后,若有指定intr参数,可以在timeout后把它中断掉,者避免出问题时系统整个被NFS锁死,建议使用intr。


rsize、wsize

读出(rsize)与写入(wsize)的区块大小(block size),这个设置值可以影响客户端与服务器端传输数据的缓冲存储量,一般来说,如果在局域网内(LAN),并且客户端与服务器端都具有足够的内存,这个值可以设置大一点,比如说65535(bytes),提升缓冲区块将可提升NFS 文件系统的传输能力。但设置的值也不要太大,最好以网络能够传输的最大值为限。

Centos6 默认值: rsize=131072 wsize=131072

proto=udp

使用UDP协定来传输资料,在LAN中会有比较好的性能。若要跨越Internet的话,使用proto=udp多传输的数据会有比较好的纠错能力。

proto=udp

可通过man nfs查看上述参数信息。如果追求极致,可以使用如下挂载参数: mount -t nfs -o fg,hard,intr,rsize=131072,wsize=131072 172.16.1.31:/data/ /mnt

 

 

但是如果考虑以简单、易用为原则,可直接选择默认值就可以 mount -t nfs 172.16.1.31:/data/ /mnt

 

 

 

5、mount -o 参数对应选项

mount命令-o选项后面可以接的参数,注意,有些选项只有出现在/etc/fstab里面才有效,下面这些选项可以应用在绝大多数文件系统上,但是sync仅适合ext2、ext3、fat、vfat和ufs等文件系统。

参数

参数意义

系统默认值

suid、nosuid                                                                                            

当挂载的文件系统上有任何SUID的程序时,只要使用nosuid就能取消设置SUID的功能。

suid

rw、 ro

可以指定文件系统是只读(ro)或读写(rw)。

rw

dev、nodev

是否可以保留装置文件的特殊功能,一般来说只有/dev才会有特殊的装置,因此可以选择nodev。

dev

exec、noexec

是否具有执行文件的权限,如果想要挂载的仅是普通资源数据区(如:图片、附件),那么可以选择noexec。

exec

user、nuser

是否允许用户进行文件的挂载与卸载功能,如果要保护文件系统,最好不要提供用户进行挂载与卸载。

nouser

auto、noauto

这个auto指的是“mount -a”时会不会被挂载的项目,如果不需要这个分区随时被挂载,可以设置为noauto

auto

async

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

 

sync

该参数和async相反。有I/O操作时,都会同步处理I/O,即把数据同步写入吸盘,此参数会牺牲一点I/O性能,但是,换来的是掉电后数据的安全性。

 

atime

在每一次数据访问时,会同步更新访问文件的inode时间戳,是默认选项。 在高并发的情况下,建议通过明确加上noatime,来取消这个默认选项,以达到提升I/O性能,优化I/O的目的。

atime

defaults

这个是fstab里的默认值,包括rw、suid、dev、exec、auto、nouser、and async,默认情况大部分都是默认值。

 

nodirname

不更新文件系统上的directory inode时间戳,高并发环境,推荐显示应用该选项,可以提高系统I/O性能。

 

remount

尝试重新挂载一个已经挂载了的文件系统,这通常被用来改变一个文件系统的挂载标志,从而使得一个只读文件系统变的可写,这个动作不会改变设备或者挂载点。当系统故障时进入single或rescue模式修复系统时,会发现根文件系统经常会变成只读文件系统,不允许修改,此时该命令就派上用场了。具体命令为:“mount -o remount,rw /”表示将根文件系统重新挂载使得可写。single或rescue模式修复系统时这个命令十分重要。

 

dirsync

目录更新时间同步写入磁盘

 

6、NFS配置权限设置常用参数说明

参数名称

参数用途

rw

读写权限

ro

只读权限

sync

请求或写入数据时,数据同步写入到NFS Server的硬盘后才返回。优点:数据安全不会丢;缺点:性能比不启动该参数要差

async

写入时数据会先写入到内存缓冲区,直到硬盘有空档才会再写入磁盘,这样可以提升写入效率!风险为若服务器宕机或不正常关机,不会缓冲未写入磁盘的数据(解决办法:服务器主板电池或UPS不间断电源)

no_root_squash

访问NFS Server共享目录的用户如果是root的话,它对该共享目录具有root权限。这个配置原本是为无盘客户端准备的。用户应避免使用。

root_squash

如果访问NFS Server共享目录的用户时root,则它的权限将被压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份。

all_squash

不管访问NFS Server共享目录的用户身份如何,它的权限都将被压缩成匿名用户,同时它的UID和GID都会变成nfsnobody帐号身份。在早期多个NFS 客户端同时读写NFS Server数据时,这个参数很有用。 在生产中配置NFS 的重要技巧: l)确保所有客户端服务器对NFS共享目录具备相同的用户访问权限 a.all_squash 把所有客户端都压缩成固定的匿名用户(UID相同) b.就是anonuid,anongid 指定的UID和GID的用户。 2)所有的客户端和服务端都需要有一个相同的UID和GID的用户,即nfsnobody(UID必须相同)。

anonuid

参数以anon*开头即指anonymous匿名用户,这个用户的UID设置值通常为nfsnobody的UID值,当然也可以自行设置这个UID值。但是,UID必须存在于/etc/passwd 中。在多NFS Clients时,如多台Web Server共享一个NFS目录,通过这个参数可以使得不同的NFS Clients写入的数据对所有NFS Clients保持同样的用户权限,即为配置的匿名UID对应用户权限,这个参数很有用,一般默认即可。

anongid

同anonuid,区别就是把uid(用户id)换成gid(组id)。

带底纹标记的表示为常用参数,更多可以参考man exports                                            

 

7、NFS服务文件或命令的说明

NFS常用路径

说明

/etc/exports

NFS服务主配置文件,配置NFS具体共享服务的站点,默认内容为空。以单行为单位。 [root@nfs01 ~]# cat /etc/exports # share /data by rsq for everyone at 20180127 /data 172.16.1.0/24(rw,sync)

/usr/sbin/exportfs

NFS服务的管理命令。例如:可以加载NFS配置生效,还可以直接配置NFS共享目录,即无需配置/etc/exports实现共享. [root\@nfs01 \~]# /usr/sbin/exportfs -rv \<==加载配置生效,等价优雅重启/etc/init.d/nfs reload exporting 172.16.1.0/24:/data 这里有一个服务平滑重启的概念,即超市、银行到了关门时间了,但还是会继续提供服务给已经在门里的人,但是新来的就会被挡在门外了。网站服务平滑重启,是提升用户体验必须要考虑的。 exportfs不但可以加载配置生效,也可以通过命令直接共享目录。越过/etc/exportfs,但是重启失效。

/usr/sbin/showmount

常用在客户端,查看NFS配置及挂载结果的命令。 show mount information for an NFS server 配置nfsserver,分贝在服务器及客户端查看挂载情况。

/var/lib/nfs/etab

NFS配置文件的完整参数设定的文件(有很多没有配置但是默认就有的NFS参数)。

/proc/mounts

客户端挂载参数 [root@web01 ~]# grep “mnt” /proc/mounts 172.16.1.31:/data/ /mnt nfs4 rw,relatime,vers=4,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.8,minorversion=0,local_lock=none,addr=172.16.1.31 0 0

/var/lib/nfs/rmtab                                                                                                                        

客户端访问服务器exports的信息列表