nfs优化3

设置块大小


mount
命令的 risize wsize 指定了 server 端和 client 端的传输的块大小。如果没有指定,那么,系统根据 nfs 的版本来设置缺省的 risize wsize 大小。大多数情况是 4K 4096bytes ),对于 nfs v2 ,最大是 8K ,对于 v3 ,在 server 端设置 risize wsize 的限制,最大块大小在 kernel 的常量 NFSSVC_MAXBLKSIZE, 该常量在 usr/src/linux2.4/include/linux/nfsd/const.h. 所有的 2.4 的的 client 都支持最大 32K 的传输块。系统缺省的块可能会太大或者太小,这主要取决于你的 kernel 和你的网卡,太大或者太小都有可能导致 nfs 速度很慢。具体的可以使用 Bonnie Bonnie++ iozone benchmark 来测试不同 risize wsize nfs 的速度。当然,也可以使用 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 进行挂载,通过比较不同的块大小,得到优化的块大小。

 

nfs 挂载的优化
  
timeo:
如果超时,客户端等待的时间,以十分之一秒计算。
retrans
:超时尝试的次数。
bg
:后台挂载,很有用
hard
:如果 server 端没有响应,那么客户端一直尝试挂载。
wsize
:写块大小
rsize
:读块大小
intr
:可以中断不成功的挂载
noatime
:不更新文件的 inode 访问时间,可以提高速度。
async
:异步读写。

nfsd 进程的个数


缺省的系统在启动时,有 8 nfsd 进程。
#ps -efl|grep nfsd
通过查看 /proc/net/rpc/nfsd 文件的 th 行,第一个是 nfsd 的个数,后十个是线程是用的时间数,第二个到第四个值如果很大,那么就需要增加 nfsd 的个数。
具体如下:
#vi /etc/init.d/nfs
找到 RPCNFSDCOUNT, 修改该值,一般和 client 端数目一致。
然后,重启服务。
#service
nfs restart
#mount –a

nfsd 的队列长度
对于 8 nfsd 进程,系统的 nfsd 队列长度是 64k 大小,如果是多于 8 个,就要相应的增加相应的队列大小,具体的在 /proc/sys/net/core/ rw mem_default /proc/sys/net/core/ rw mem_max 。队列的长度最好是每一个 nfsd 8k 的大小。这样, server 端就可以对 client 的请求作排队处理。如果要永久更改此值
#vi /etc/sysctl.conf
加入
net.core.
rw mem_max= 数目
net.core.
rw mem_default= 数目
#service
nfs restart

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

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

 

#tracepath node1/ 端口号
#ifconfig eth0

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

当然如果 risize wsize mtu 的值大,那么的话, 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值