nfs的优化
总结和测试了一下自己的经验:
NFS中的rsize、wsize
rsize、wsize对于NFS的效能有很大的影响.wsize和rsize设定了SERVER和CLIENT之间往来数据块的大小,这两个参数的合理设定与很多方面有关,不仅是软件方面也有硬件方面的因素会影响这两个参数的设定(例如LINUX KERNEL、网卡,交换机等等).
下面这个命令可以简单测试NFS的执行效能,读和写的效能可以分别测试,分别找到合适的参数.对于要测试分散的大量的数据的读写可以通过编写脚本来进行测试.在每次测试的时候最好能重复的执行一次MOUNT和unmount.
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384
用于测试的wsize,rsize最好是1024的倍数,大多的时候,默认是4K(4096),对于NFS V2来说8192是rsize和wsize的最大数值,如果使用的是NFS V3则可以尝试的最大数值是32768.
我测试过,在内网比较合理的每个客户机应该用 rsize=32768,wsize=32768,intr,noatime 挂装远程文件系统,从而确保速度:
* 使用大的读/写块(数字指定最大块大小,在这个示例中是 32KB).
* 在挂起时 NFS 操作可以被中断.
* 不持续更新 atime.
可以将这些设置放在 /etc/fstab 中.
注意,在测试rsize和wsize比mtu值大时,server的包发送到client要进行重组,会要浪费二者的cpu.另外重组也会导致nfs不稳定,因为丢包会让rpc重传,重传象tcp一样,会导致超时,可以通过查看/proc/sys/net/ipv4/ipfrag_high_thresh和/proc/sys/net/ipv4/ipfrag_low_thresh了解系统处理包的数量,如果包到了ipfrag_high_thresh就会开始丢包.真到数目达到ipfrag_low_thresh.
NFS客户端的数目
在服务器端,一定要确保有足够的 NFS 内核线程来处理所有客户机.在默认情况Red Hat系统会启动8个线程.对于繁忙的 NFS
服务器,应该提高这个数字,比如32或64.可以用 nfsstat -rc
命令评估客户机,了解是否有阻塞的现象,这个命令显示客户机远程过程调用(RPC)统计数据.
例:
# nfsstat -rc
Client rpc stats:
calls retrans authrefrsh
95374234 3432 0
第二列retrans是3432,这表示从上一次系统启动以来出现了3432次重新传输的情况.这个数字比较大,就应该考虑增加NFS线程.
设置方法是将所需的线程数量设置到nfs,比如设置128 会启动 128 个线程.任何时候都可以进行这种设置.线程会根据需要启动或销毁.同样,这个设置应该放在启动脚本中,尤其是在系统上启用 NFS 的脚本.
如RedHat和Centos
vim /etc/init.d/nfs
找到下面这行修改
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=32
如上,我修改的是启动32个.随着nfsd数目的增加,平均负载会上升(可用uptime查看),就应减少nfsd数目.平时测试和客户端的数量一样多就行.
NFS的版本
关于 NFS,需要注意一点:避免使用 NFSv2,因为 NFSv2 的性能比 v3 和 v4 差得多.当前的Linux 发行版中这应该不是问题,我们可以在nfs的服务器上检查nfsstat 的输出,了解是否有任何 NFSv2 调用.
Client nfs v3:
null getattr setattr lookup access readlink
0 0% 13536 0% 1 0% 14150 0% 26160 0% 0 0%
read write create mkdir symlink mknod
95313570 99% 70 0% 1 0% 0 0% 0 0% 0 0%
remove rmdir rename link readdir readdirplus
0 0% 0 0% 0 0% 0 0% 56 0% 6650 0%
fsstat fsinfo pathconf commit
15 0% 8 0% 0 0% 15 0%
Client nfs v4:
null read write commit open open_conf
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
open_noat open_dgrd close setattr fsinfo renew
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
setclntid confirm lock lockt locku access
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
getattr lookup lookup_root remove rename link
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
symlink create pathconf statfs readlink readdir
0 0% 0 0% 0 0% 0 0% 0 0% 0 0%
server_caps delegreturn
0 0% 0 0%
如上,都是v3和v4的.
启动了NFS之后又修改了/etc/exports,是不用重新启动nfs呢?这个时候我们就可以用exportfs命令来使改动立刻生效,该命令格式如下:
exportfs [-aruv]
-a :全部mount或者unmount /etc/exports中的内容
-r :重新mount /etc/exports中分享出来的目录
-u :umount 目录
-v :将详细的信息输出到屏幕上.
mountd 与 nfsd 共享一个访问控制数据库,除了内核内部的表之外,这个数据库的运行副本通常还保存在一个称为 /var/lib/nfs/xtab 的文件中.
因为xtab并不是供人阅读的,所以要使用另外的命令来添加和修改其中的项,就是用exportfs
# nfsstat -s //显示NFS服务器进程的统计信息
# nfsstat -c //显示与客户端操作相关的信息
NFS传送的方式UDP and TCP
可以手动进行设置,也可以自动进行选择.
mount -t nfs -o sync,tcp,noatime,rsize=1024,wsize=1024,tcp EXPORT_MACHINE:/EXPORTED_DIR /DIR
UDP 有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS的
Performance 大幅降低甚至使网络瘫痪.所以对于不同情况的网络要有针对的选择传输协议.nfs over tcp比较稳定,nfs over
udp速度较快.在机器较少网络状况较好的情况下使用UDP协议能带来较好的性能,当机器较多,网络情况复杂时推荐使用TCP协议(V2只支持UDP协议).在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,在广域网中推荐使用TCP协议,TCP协议能让
NFS在复杂的网络环境中保持最好的传输稳定性.可以参考这篇文章:http:
//www.hp.com.tw/ssn/unix/0212/unix021204.asp.
根据原理,有时TCP在内网不会丢失包的情况下,也可能会性能好很多,所以,最好也测试一下.
补充:
UDP套接口溢出:在带有许多UDP客户机的一台NFS服务器上,当所有nfsd线程都在使用,而此时又有请求到达的时候,就会发生UDP套接口溢出.可使用netstat
-s命令监测溢出数目,增加更多的nfsd直到UDP套接口溢出数目降为0.溢出表明服务器提供的守护进程数量不足,所以增加的nfsd要比通过这种方法测量出来的数目多几个.
NFS的队列大小
在linux 2.2和2.4内核里,默认的8个nfsd的输入队列大小是64K,2.6内核是108K.下面将设置为较合理的值256K
# echo 262144 > /proc/sys/net/core/rmem_default
# echo 262144 > /proc/sys/net/core/rmem_max
# echo 262144 > /proc/sys/net/core/wmmen_default
# echo 262144 > /proc/sys/net/core/wmmen_max
网络传输包的大小
在不同的网络当中,因为tcp/ip需要给文件分成一个个的数据包,过大和过小都会影响很大,所以需要对网络包大小进行不同的package测试.常用的方法ping
-s 2048 -f
hostname进行ping.来测试不同的网络传送包的大小.这样可以了解不同的包大小的包丢失情况.同时,还可以使用nfsstat -o net
测试nfs使用udp传送时的丢包率.
nfs的优化的更多相关文章
- 二十三、NFS企业级优化
nfs内核优化:(对于本地文件系统也是有效的) [root@nfsserve ~]# cat /proc/sys/net/core/rmem_default(该文件指定了接收套接字缓冲区大小的缺省值) ...
- NFS性能优化
参考: http://www.techrepublic.com/blog/linux-and-open-source/tuning-nfs-for-better-performance/ 1.服务器端 ...
- NFS基础优化
一.环境 环境接上篇 https://www.cnblogs.com/suffergtf/p/9486250.html 二.参数详解 1.nfsserver端配置参数详解 [root@nfsserve ...
- 4.13、nfs挂载优化及优缺点
1.硬盘:sas/ssd磁盘,买多块,硬件raid5/raid0,网卡吞吐量要大,至少千兆(多网卡bond0) 2.nfs客户端挂载说明: 文件系统有自己的权限,挂载是建立在文件系统之上的,然后更改挂 ...
- 生产场景NFS共享存储优化及实战
生产场景NFS共享存储优化: 1.硬件:sas/ssd磁盘,买多块,raid0/raid10,网卡好 2.NFS服务器端优化加all_squash,async /backup/NFS 192.168. ...
- NFS网络共享服务 挂载参数及优化 内核优化建议
配置NFS服务端 nfs01上安装软件 [root@nfs01 ~]# yum install nfs-utils rpcbind -y nfs-utils:NFS服务的主程序,包括rpc.nfsd. ...
- 【集群实战】NFS网络文件共享服务2-mount挂载(参数,优化)
1. NFS客户端挂载深入 1.1 NFS客户端挂载参数说明 在NFS服务端,可以通过cat /var/lib/nfs/etab查看NFS服务器端配置参数的细节. 在NFS客户端,可以通过cat /p ...
- NFS网络共享服务部署
10.3 NFS服务端部署环境准备 10.3.1 NFS服务部署服务器准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server) 192.168.1.14 ...
- NFS网络文件共享
NFS(Network File System) NFS在企业中的应用场景 企业集群架构中,NFS网络文件系统一般用来存储共享的视频.图片.附件等静态资源,一般把网站用户上传的文件都放到NFS共享里, ...
随机推荐
- 【google面试题】求1到n的正数中1出现的次数的两种思路及其复杂度分析
问题描写叙述: 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.比如输入12,从1到12这些整数中包括1 的数字有1.10.11和12.1一共出现了5次. 这是一道广为流传的googl ...
- 中文分词器ICTCLAS使用方法(Java)
http://www.cnblogs.com/CheeseZH/archive/2012/11/27/2791037.html 吃水不忘挖井人,这篇文章给了我很大帮助:http://blog.csdn ...
- Everything常见问题及搜索技巧,附Demo
1 Everything 1.1 "Everything"是什么? "Everything"是一个运行于Windows系统,基于文件.文件夹名称的快速搜索引擎. ...
- (转)【风宇冲】Unity3D教程宝典之AssetBundles:第二讲
原创文章如需转载请注明:转载自风宇冲Unity3D教程学院 AssetBundles第二讲:AssetBundles与脚本 所有Unity的As ...
- Ant编译utf-8非法字符:/65279 解决方法
原文链接:http://blog.csdn.net/xiyuan1999/article/details/5989336 Ant编译utf-8非法字符:/65279 解决方法 使用ant编译j ...
- mac 安装 RabbitMQ
https://blog.csdn.net/u010046908/article/details/54773323
- Python爬虫实战(三):爬网易新闻
代码: # _*_ coding:utf-8 _*_ import urllib2 import re #import sys #reload(sys) #sys.setdefaultencoding ...
- POSTGRESQL 创建表结构、修改字段、导入导出数据库(支持CSV)
这两个月经常使用postgresql,总结一些经常使用的语句: --创建表 CREATE TABLE customers ( customerid SERIAL primary key , compa ...
- Android ART runtime简述
此文章原始是PPT格式已转换为PDF,完整内容也能够下载文档阅读: AndroidARTruntimeOverview watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...
- 算法笔记_213:第七届蓝桥杯软件类决赛部分真题(Java语言C组)
目录 1 平方末尾 2 七星填数 3 打印数字 4 赢球票 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 平方末尾 平方末尾 能够表示为某个整数的平方的数字称为“平方数” 比如,25,64 虽然无 ...