+ -
当前位置:首页 → 问答吧 → zfs+nfs读写小文件奇慢,何故?

zfs+nfs读写小文件奇慢,何故?

时间:2010-06-24

来源:互联网

本帖最后由 zsgd 于 2010-06-24 23:40 编辑

请大侠帮忙分析,谢谢!!!

一台nfs server 在open solaris 的zfs上,共享的目录为scratch_qa, 当在客户端读写一个大文件216M时间大约6秒以内,是正常的,但把这个文件展开,大小约218M,文件个数是898个,这时在客户端的读写时间大概在180s~~450秒之间,相差太大,同样的操作在另外一个同样的环境下,需要的时间基本在12~~15秒之间,测试如下。在nfs服务器上进行读写,就是不出网络是正常的,但网络的工作是正常的,cp一个大文件可以到25m/s-35m/s,网络是没有问题的。

1, 一个文件夹IT,大小为218M,文件个数是898个;一个由IT文件夹做的tar包,大小216M,
[root@sgzhang tmp]# du -sh IT*
218M        IT
216M        IT.tar

[root@sgzhang IT]# find  * |wc -l
898

2, 下面的scratch/qa是从有问题的server mount过来的,cp IT目录用的时间基本在180s~~450秒之间,时间太长,因为文件个数较多,需要花费时间生成inode,但时间也太长了,属于不正常的。
[root@sgzhang tmp]# time cp -r IT/ /scratch/qa/

real        3m39.462s
user        0m0.030s
sys        0m0.432s

3, cp IT.tar文件需要的时间基本都在6秒以内,属正常。
[root@sgzhang tmp]# time cp -rp IT.tar  /scratch/qa/

real        0m5.696s
user        0m0.018s
sys        0m0.298s


4,下面是客户端mount有问题的nfs server时的一些参数,有一点要注意是noacl,因为acl有可能会影响到读写,这里是noacl,现在看到的通讯协议是udp,tcp也测试过,同样有问题。

[root@sgzhang IT]# mount |grep  scratch_qa
cnxass03:/data/export/scratch_qa on /scratch/qa type nfs (rw,intr,udp,noacl,hard,rsize=8192,wsize=8192,timeo=1000000,addr=172.17.192.23)


5, 下面是客户端mount 正常nfs服务器的一些参数。
[root@sgzhang tmp]# mount |grep pcc_qa
cnxafs02:/data/export/pcc_qa on /pcc/qa type nfs (rw,intr,noacl,udp,hard,rsize=8192,wsize=8192,timeo=1000000,addr=172.17.192.3

6, 下面是cp那个文件夹到正常服务器所用的时间。
[root@sgzhang tmp]# time cp -rp IT /pcc/qa/IT/

real        0m11.890s
user        0m0.017s
sys        0m0.453s

作者: zsgd   发布时间: 2010-06-24

看dmesg有报错没有?

作者: bj161109   发布时间: 2010-06-25