Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > NFS优化篇
【标  题】:NFS优化篇
【关键字】:NFS
【来  源】:http://www.cublog.cn/u/6901/showart.php?id=102329

NFS优化篇

Your Ad Here 1.设置块大小

mount命令的risizewsize指定了server端和client端的传输的块大小。如果没有指定,那么,系统根据nfs的版本来设置缺省的risizewsize大小。大多数情况是4K4096bytes),对于nfs v2,最大是8K,对于v3,在server端设置risizewsize的限制,最大块大小在kernel的常量NFSSVC_MAXBLKSIZE,该常量在usr/src/linux2.4/include/linux/nfsd/const.h.所有的2.4的的client都支持最大32K的传输块。系统缺省的块可能会太大或者太小,这主要取决于你的kernel和你的网卡,太大或者太小都有可能导致nfs速度很慢。具体的可以使用BonnieBonnie++iozonebenchmark来测试不同risizewsizenfs的速度。当然,也可以使用dd来测试。

  time dd if=/dev/zero of=/testfs/testfile bs=8k count=1024这是来测试nfs

  time dd if=/testfs/testfile of=/dev/null bs=8k 这是测试nfs

测试时文件的大小至少时系统RAM的两倍,每次测试都使用umount mount/testfs进行挂载,通过比较不同的块大小,得到优化的块大小。

2.网络传输包的大小

网络在包传输过程,对包要进行拆分和重组,过大或者过小都不能很好的利用网络的带宽,所以对网络要进行测试和调优。可以使用ping -s 2048 -f hostname进行flood ping,尝试不同的package size,这样可以看到包的丢失情

况。同时,可以使用nfsstat o net 测试nfs使用udp传输时丢包的多少。输出可能如下:

# nfsstat -o net

Server packet stats:

packets    udp        tcp        tcpconn

3068648    3068648    0          0      

Client packet stats:

packets    udp        tcp        tcpconn

0          0          0          0  

因为统计不能清零,所以要先运行此命令记住该值,然后可以再次运行统计。如果,经过上面的统计丢包很多。那么可以看看网络传输包的大小。使用下面的命令:

#tracepatch nodename/portnumber

输出如下:

1?: [LOCALHOST]     pmtu 16436

 1:  node4 (10.10.9.54)                                   0.087ms reached

     Resume: pmtu 16436 hops 1 back 1

#ifconfig eth0

比较网卡的mtu和刚刚的pmtu,使用#ifconfig eth0 mtu 16436设置网卡的mtu和测试的一致。

 

当然如果risizewsizemtu的值大,那么的话,server端的包传到client端就要进行重组,这是要消耗client端的cpu资源。此外,包重组可能导致网络的不可信和丢包,任何的丢包都会是的rpc请求重新传输,rpc请求的重传有会导致超时,严重降低nfs的性能。可以通过查看/proc/sys/net/ipv4/ipfrag_high_thresh/proc/sys/net/ipv4/ipfrag_low_thresh了解系统可以处理的包的数目,如果网络包到达了ipfrag_high_thresh,那么系统就会开始丢包,直到包的数目到达ipfrag_low_thresh

3nfs挂载的优化

 

timeo:如果超时,客户端等待的时间,以十分之一秒计算。

retrans:超时尝试的次数。

bg:后台挂载,很有用

hard:如果server端没有响应,那么客户端一直尝试挂载。

wsize:写块大小

rsize:读块大小

intr:可以中断不成功的挂载

noatime:不更新文件的inode访问时间,可以提高速度。

async:异步读写。

4nfsd的个数

缺省的系统在启动时,有8nfsd进程。

#ps -efl|grep nfsd

通过查看/proc/net/rpc/nfsd文件的th行,第一个是nfsd的个数,后十个是线程是用的时间数,第二个到第四个值如果很大,那么就需要增加nfsd的个数。

具体如下:

#vi /etc/init.d/nfs

找到RPCNFSDCOUNT,修改该值,一般和client端数目一致。

然后,重启服务。

#service nfs restart

#mount -a

5nfsd的队列长度

对于8nfsd进程,系统的nfsd队列长度是64k大小,如果是多于8个,就要相应的增加相应的队列大小,具体的在/proc/sys/net/core/rwmem_default/proc/sys/net/core/rwmem_max。队列的长度最好是每一个nfsd8k的大小。这样,server端就可以对client的请求作排队处理。如果要永久更改此值

#vi /etc/sysctl.conf

加入

net.core.rwmem_max=数目

net.core.rwmem_default=数目

#service nfs restart

 

Redhat共享 window打印机:【上一篇】
通过chroot 构建Linux操作系统概要:【下一篇】
【相关文章】
  • 用实验快速配置Nfs
  • Solaris下NFS使用手册
  • 这两天做的solution-配置NFS和Samba
  • Linux NFS服务器性能优化
  • Kickstart+NFS+DHCP+TFTP+PXElinux实现REDFLAG DT 5.0自动
  • NFS资料/LFS资料
  • 非常全面的NFS文档(FOR LINUX)
  • Solaris下NFS使用手册(转载自unix中文宝库)
  • nfs配置
  • NFS for Gentoo 安装成功
  • 【随机文章】
  • Typesafe dynamic callbacks in C++(signal slot sys)
  • 利用路由功能解决两个网段互访问题
  • 整合Apache+Tomcat
  • 通过jfreechart输出仪表盘图到本地
  • 用Tomcat插件搭建可跟踪调试的J2EE WEB开发环境
  • [转载] 何勇教授印象(刘克峰教授)
  • 编译linux内核时i2c.h错误以及解决方法
  • 想把网络(校园网、多媒体教室)的管理与维护记录下来,供大家交流,也为自己积累文字资料。
  • 分页形如 >>
  • js浮动广告
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.