今天总结下NFS配置之后的服务端/客户端挂载的一些优化知识点:
讲挂载优化之前,我对上次永久挂载方法总结两种方法:
第一种办法: 将挂在命令放置到rc.loacl里面去:
优点:不会影响系统的启动,因为其中启动时磁盘的加载是优先于网络的。
缺点:偶尔开机挂载不上。所以工作中除了开机自启动配置之外,我们还需要对挂载点监控。
第二种办法: 修改/etc/fstab。
缺点:1.NFS网络文件系统不要放到fstab.(fstab优先于网络启动)
2.即使是本地文件系统,也要注意挂载问题,其中fstab里最后两列要设置成0 0 。否则会导致无法启动服务器的问题。
因此,在企业生产环境中的挂载建议为:
1.把NFS rpc 服务的启动命令和挂载命令均放入/etc/rc.local.然后在通过nagios之类的监控软件监控开机后的挂载情况,举例为/etc/rc.local里的内容,这里我只是将挂载命令放进去了。
注意的是在企业生产环境中不要把网络文件系统挂载放到 fstab里。本地文件系统可以放,但是要设置 0 0 。
NFS服务端启动:rpcbind -------> nfs
在企业生产环境中为什么要把所有的开机启动服务放到rc.local 呢?
答案是:规范、统一开机启动的位置。相当于吧/etc/rc.local当做服务器的档案,所有服务器启动配置都放到档案里。最好的就是写好启动脚本都用chkconfig管理。
下面我来看下 Mount -o后面的一些参数:(客户端挂载的参数,和服务端挂载的参数有些类似。)
我找这个命令参数的源头 : man mount
async:异步的一个挂载方式,所涉及到文件系统I/0的操作系统都是异步处理,即不会同步写到磁盘,此参数会提高性能,但会降低数据安全,一般生产环境中是不推荐使用的。
这里我先讲解下这些参数的意思,随后我要对这些参数进行试验的论证对比。
atime : 在每一次数据访问时,同步更新每次访问的inode时间,是默认选项,在高并发的情况下,建议通过加上noatime,来取消这个默认项,以提升I/O性能,优化I/O的目的。(讲一下高并发的优化选项:对于文件访问来说,更新访问时间是没有必要的!但是对系统是有影响,因为它会占用I/O性能的一次操作!如果加上Noatime ,指的是用户访问文件系统不更新文件时间戳,从而优化i/o性能的目的。)
auto:相当于mount -a 的一个参数。
defaults :它和/etc/fstab里面的defaults 是很类似,它包含rw.suid.dev.exec.auto.nouser.and.async............
因此我们可以知道/etc/fstba里的defaults的意思了。
nodiratime:不更新文件同上的directory inode 访问时间,使用该选项高并发环境下优化系统IO性能。
noexec:挂载文件系统,是否允许挂载程序。(推荐关掉,因为在企业生产环境中,NFS是用来存放文件不是用来存放程序,以免产生安全问题。)
在NFS服务优化中还有两个参数比较重要:
rsize:读出(rsize)与写入(wrsize)的区块大小(block size),这个值可以影响客户端与服务器端传输数据的缓冲存储量,一般来说,如果在局域网内,并且客户端与服务器端都具有足够的内存,这个值可以设置的大一点,(在centos6.5系统中,rsize=131072 wsize=131072,) 我们可以设置成32768,但是不要设置的过于大,最好是实现网络传输的最大值为限。
我可以用命令查看挂载的默认参数:
再来分享一个文件系统只读故障的一个解决思路:
当你在fstab里面讲最后两列的最后一位改为1,你改为1就代表系统给你备份了,系统重启时无法进入系统界面,(因为他要检查系统磁盘。)
用目录还原密码进入到系统后,你想进入到文件修改都无法修改,权限变为了只读,所以要用:mount -o rw,rmount 来重新挂载可读可写。
之前大概讲了些NFS服务端的优化参数,下面来看下服务端挂载的一些优化参数:
例如:noexec这个参数我做一个实验:
为了测试更准群,我先客户端之前挂载的取消掉:
如果你在卸载挂载时出现这样的情况:解决办法就是退出当前目录,因为你现在是在挂载目录里
当然也有强制卸载挂载的命令:
然后我再次挂载时加上参数:
-O:代表加上参数,我这里的noexec代表挂载文件系统,不允许允许挂载程序。
现在,我在客户端创建一个.sh执行文件。
然后我将no.sh这个文件权限给至最高!改完权限后,我试着去执行,依旧执行不了:
但是,如果在客户端本地创建一个执行文件,权限给足的话,是可以执行的!
在客户端的优化参数中,生产环境下还是主要关注如图:
rsize和wsize.
协议号越高性能越高!!
接下来,我来改一下rsize和wsize的数值为1024.
修改完看一眼是否配置对。:
由于我们把这两个参数改小了,现在就要用测试:
测试文件系统dd命令:
time:查看运行时间。
dd : 把这个设备接入到挂载点上去,然后回车、
等一会过后,我们可以看到文件写入的时间。
然后紧接着去比较客户端挂载点为默认时的情况:卸载掉重新默认挂载,什么也不加。(注意,如果短时间重复写入会有缓存,会有数据上的偏差,建议这里将文件名改的不同,我这里testfile1024并没有改。)
从两者数据对比不难发现:后者rsize wsize参数修改后,后者不变的情况下,很明显的后者速度快于前者。
因为后者的wsize rsize 参数远远大于1024
nodiratime这个参数的论证:不更新文件同上的directory inode 访问时间,使用该选项高并发环境下优化系统IO性能。
既然nodiratime我带上这个参数来看看和刚才默认情况下有什么读取文件数据时间的差异性。
我先将之前的挂载点给卸载掉,然后带上nodiratime这个参数:
接下来我就开始测试:
还是用dd 测试文件,然后观察数据:
这是默认情况的数据,看看有什么对比没@!
明显的看出比默认情况还要快呢!!!
时间关系,下次再说。