如何解决AIX挂载NFS写入效率低效的问题

  介绍

小编给大家分享一下如何解决AIX挂载NFS写入效率低效的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强> NFS提供的服务

山:通过在服务端启用/usr/sbin/rpc。mountd伺服进程,在客户端使用山命令,安装伺服进程是一个RPC来回应客户端的请求

远程文件访问:通过在服务端启用/usr/sbin/nfsd和在客户端启用/usr/sbin/生气,来出来客户端对文件的请求。但客户端一个用户要来读或写一个在服务器端的文件时,biod伺服进程发送这个请求到服务端。

启动参数:通过在服务端启用/usr/sbin/RPC。bootparamd伺服进程来提供无盘SunOS客户端的启动参数。

电脑认证:通过在服务端启动/usr/sbin/rpc。pcnfsd来提供PC-NFS的用户认证服务

一个NFS服务是无状态的(无状态的),也就是说,NFS的传输是原子级的,一个单一的NFS传输对应了一个单一完整的文件操作。

<强>背景:

Linux是NFS的服务器端,AIX NFS的是客户端(此外,有一个Linux也作为客户端对比测试)。

1. NFS对应的底层设备是闪存卡,本地测试的I/O写性能可达2 gb/s;

2。服务器是千兆网卡,FTP测试传输可达到100 mb/s。

3. AIX成功挂载NFS, dd测试写入速度只有10 mb/s;

4. Linux成功挂载NFS,同样dd测试写入速度可达到100 mb/s。

说明:以上速度主要是体现数量级的差异,实际测试会有少许偏差。

<强>具体环境:

<李>

NFS服务器:RHEL 6.8

<李>

NFS客户机:AIX 6.1中,RHEL 6.8

挂载参数均依据MOS文档配置:

Oracle RAC数据库的文件和修改挂载选项时使用NFS> #, mount  -o  cio, rw, bg,硬,nointr, rsize=32768, wsize=32768,原型=tcp noac,更=3,timeo=600, 10. xx.xx.212:/xtts /xtts   山:1831 - 008,giving  up :   10. xx.xx.212:/xtts   vmount: Operation  not 允许的。

查资料确认AIX需要额外设置网络参数:

#, nfso  -p  -o  nfs_use_reserved_ports=1

再次尝试挂载成功:

mount  -o  cio, rw, bg,硬,nointr, rsize=32768, wsize=32768,原型=tcp noac,更=3,timeo=600, 10. xx.xx.212:/xtts /xtts

可dd测试的速度非常不理想,只有10 mb/s:

——test 性能;AIX  NFS   #,time  dd 如果=/dev/zero =/xtts/test-write  b=8192,数=102400   102400 + 0 records 在。   102400 + 0,records 。      real  0 m43.20s   user  0 m0.79s   sys  0 m5.28s   #,time  dd 如果=/xtts/test-write =/dev/null  b=8192,数=102400   102400 + 0 records 在。   102400 + 0,records 。      real  0 m30.86s   user  0 m0.84s   sys , 0 m5.88s

所有参数都是根据实际需求,按照MOS的建议设置的。有什么问题吗?

<李>

尝试去掉cio参数测试,发现结果几乎没变化;

<李>

尝试去掉硬参数测试,发现结果几乎没变化;

<李>

尝试协议从tcp改为udp测试,发现结果几乎没变化;

几乎能试的参数都试了,结果都不理想,马上都准备协调资源找主机工程师定位了。

此时,灵感乍现,突然想到一个可能性。有没有可能AIX上的NFS限制了单个进程的I/O吞吐能力?带着这个猜测,进行并行测试:

开5个窗口同时开始dd:

time  dd 如果=/dev/zero =/xtts/test-write1  b=8192,数=102400   time  dd 如果=/dev/zero =/xtts/test-write2  b=8192,数=102400   time  dd 如果=/dev/zero =/xtts/test-write3  b=8192,数=102400   time  dd 如果=/dev/zero =/xtts/test-write4  b=8192,数=102400   time  dd 如果=/dev/zero =/xtts/test-write5  b=8192,数=102400

惊喜的发现5个窗口都在55年代同时完成,这相当于800 * 5=4000,都在55年代完成,每秒达到72 mb/s,通过这种并行的方式已满足提升效率的需求。

而且看起来只要继续尝试多开窗口测试,基本也能达到网络上限100 mb/s(千兆网卡限制)。

附:测试同样的NFS挂载到另一台Linux服务器上,无需并行,dd写入速度就可达100 mb/s,这也是之前影响自己思考的因素。
Linux NFS的挂载参数:

#, mount  -o  rw, bg,硬,nointr, rsize=32768, wsize=32768, tcp、actimeo=0,更=3,timeo=600, 10. xx.xx.212:/xtts /xtts

如何解决AIX挂载NFS写入效率低效的问题