阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

AIX挂载NFS写入效率低的解决方案

133次阅读
没有评论

共计 2771 个字符,预计需要花费 7 分钟才能阅读完成。

背景: Linux 是 NFS 的 Server 端,AIX 是 NFS 的 Client 端(此外,有一个 Linux 也作为 Client 端对比测试)。

  • 1.NFS 对应的底层设备是闪存卡,本地测试 I / O 写性能可达 2GB/s;
  • 2. 服务器是千兆网卡,FTP 测试传输可达到 100MB/s;
  • 3.AIX 成功挂载 NFS,dd 测试写入速度只有 10MB/s;
  • 4.Linux 成功挂载 NFS,同样 dd 测试写入速度可达到 100MB/s;

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

具体环境:
NFS Server:RHEL 6.8
NFS Client:AIX 6.1、RHEL 6.8

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

  • Mount Options for Oracle files for RAC databases and Clusterware when used with NFS on NAS devices (文档 ID 359515.1)

根据本次实际需求,提炼一下需要配置的参数:

–MOS 建议 (AIX):
cio,rw,bg,hard,nointr,rsize=32768,
wsize=32768,proto=tcp,noac,
vers=3,timeo=600

–MOS 建议 (Linux):
rw,bg,hard,nointr,rsize=32768,
wsize=32768,tcp,actimeo=0,
vers=3,timeo=600

AIX NFS 的挂载参数:

mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts

直接挂载提示如下错误:

# mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts
mount: 1831-008 giving up on:
10.xx.xx.212:/xtts
vmount: Operation not permitted.

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

# nfso -p -o nfs_use_reserved_ports=1

再次尝试挂载成功:

mount -o cio,rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,noac,vers=3,timeo=600 10.xx.xx.212:/xtts /xtts

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

–test performance; AIX NFS
# time dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400
102400+0 records in.
102400+0 records out.

real    0m43.20s
user    0m0.79s
sys    0m5.28s
# time dd if=/xtts/test-write of=/dev/null bs=8192 count=102400
102400+0 records in.
102400+0 records out.

real    0m30.86s
user    0m0.84s
sys    0m5.88s

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

  • 尝试去掉 cio 参数测试,发现结果几乎没变化;
  • 尝试去掉 hard 参数测试,发现结果几乎没变化;
  • 尝试协议从 tcp 改为 udp 测试,发现结果几乎没变化;

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

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

time dd if=/dev/zero of=/xtts/test-write1 bs=8192 count=102400
time dd if=/dev/zero of=/xtts/test-write2 bs=8192 count=102400
time dd if=/dev/zero of=/xtts/test-write3 bs=8192 count=102400
time dd if=/dev/zero of=/xtts/test-write4 bs=8192 count=102400
time dd if=/dev/zero of=/xtts/test-write5 bs=8192 count=102400

惊喜的发现 5 个窗口都在 55s 同时完成,这相当于 800M*5=4000M,都在 55s 完成,每秒达到 72MB/s,通过这种并行的方式已满足提升效率的需求。
而且看起来只要继续尝试多开窗口测试,基本也能达到网络上限 100MB/s(千兆网卡限制)。

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

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

Linux NFS 的测试结果:

–test performance; Linux NFS
# dd if=/dev/zero of=/xtts/test-write bs=8192 count=102400
102400+0 records in
102400+0 records out
838860800 bytes (839 MB) copied, 6.02451 s, 139 MB/s
# dd if=/xtts/test-write of=/dev/null bs=8192 count=102400
102400+0 records in
102400+0 records out
838860800 bytes (839 MB) copied, 8.55925 s, 98.0 MB/s

对 AIX 不熟悉,没有进一步深究底层原理。开始解决问题过程中的主要困惑在于,为何 Linux 作为 client 时,无需并行就可以 dd 测试达到 100MB/ s 的速度,使自己陷入了固有思维中。从这件事情得到的思考是:有些时候,要跳出常规思维去思考方可有所突破。
最后把 NFS Server 端本地测试的结果也贴出来,感叹下闪存卡的 I / O 能力:

# dd if=/dev/zero of=/dev/test-write2 bs=8192 count=1024000
1024000+0 records in
1024000+0 records out
8388608000 bytes (8.4 GB) copied, 4.19912 s, 2.0 GB/s

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2771字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中