NFS基础优化

Posted suffergtf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NFS基础优化相关的知识,希望对你有一定的参考价值。

一、环境

环境接上篇 https://www.cnblogs.com/suffergtf/p/9486250.html

二、参数详解

1、nfsserver端配置参数详解

[[email protected] ~]# cat /var/lib/nfs/etab 
/Share    192.168.127.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,
secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,no_all_squash)

1:访问权限控制选项

rw    可读写

ro     只读

2:用户映射类选项

all_squash:将远程访问的所有普通用户及所属组,都映射为匿名用户及所属组(nfsnobody)

no_all_squash:与all_squash相反,没有映射为匿名用户的普通用户,没有权限(默认设置);

root_squash:将root用户及所属组都映射为匿名用户与用户组(默认设置)

no_root_squash:与root_squash相反

anonuid=xxx:将远程访问的所有用户都映射为指定用户,UID=xxx,Server端和Client端必须存在这个指定的用户;

anongid=xxx:将远程访问的所有用户组都映射为指定用户组,GID=xxx;

 

3:其他选项

sercure    限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认配置)

inserure   允许客户从大于1024的端口连接

sync          将数据同步写入内存缓冲区与磁盘中,效率低,但可以保持数据一致性

async        异步,先写入缓存,需要时写入磁盘

wdelay     检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认配置)

no_wdelay  若有写操作则立即执行,应与sync配合使用;

subtree    若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree    即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

2、nfsclient挂载参数

[[email protected] mnt]# cat /proc/mounts |grep nfs
192.168.127.100:/Share /mnt nfs4 rw,relatime,vers=4.1,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp,
port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.127.101,local_lock=none,addr=192.168.127.100 0 0

三、基础优化

1、nfsserver端

/etc/exports       NFS主配置文件中添加all_squash,root_squash参数,将所有普通用户和root用户都映射为nfsnobody;
/etc/exports        NFS主配置文件中添加async参数,将数据存入缓存中,必要时写入磁盘,可提高性能,但是数据丢失可能性较大
[[email protected] ~]# vim /etc/exports

#######shared for test by suffergtf at 2018-8-16######
/Share  192.168.127.0/24(rw,async,all_squash,root_squash)
[[email protected] ~]# systemctl restart nfs
[[email protected] ~]# cat /var/lib/nfs/etab
/Share    192.168.127.0/24(rw,async,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,
secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,all_squash)

cat >>/etc/sysctl.conf<<EOF

> net.core.wmem_default = 8388608

> net.core.rmem_default = 8388608

> net.core.rmem_max = 16777216

> net.core.wmem_max = 16777216

> EOF

2、nfsclient端

a:async异步同步,此参数是将数据先写入到缓存,必要时写入磁盘,可提高I/0性能,同时也会降低数据安装(除非是对性能要求极高,对数据可靠性不要求的场合,一般生产环境,不推荐使用)
b:noatime取消更新文件系统上的inode访问时间,提高I/O性能,推荐使用
c:nodiratime取消更新文件系统上的directory inode访问时间,高并发环境,推荐使用,提高系统性能
d:noexec挂载在这个文件系统内的程序,可不可以执行(安全选项)
e:nosuid挂载的这个文件系统内的文件,是否可以设置SUID
f:rsize/wsize读取/写入的区块大小,这个设置值可以影响客户端与服务端传输数据的缓冲存储量。一般来说,如果在局域网内,并且客户端与服务端都具有足够的内存,这个值可以设置大一点,
提升缓冲区块可以提升NFS文件系统的传输能力,但设置的值也不要太大,最好是实现网络能够传输的最大值
[[email protected] /]# mount -t nfs -o async,noatime,nodiratime,noexec,nosuid,rsize=262144,wsize=262144 192.168.127.100:/Share /mnt















以上是关于NFS基础优化的主要内容,如果未能解决你的问题,请参考以下文章

优化 C# 代码片段、ObservableCollection 和 AddRange

使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化

NFS优化

如何优化C ++代码的以下片段 - 卷中的零交叉

nfs部署和优化

Linux中nfsiscsi共享服务的部署及安全优化详解