NFS配置步骤和优化

时间:2024.5.14

NFS配置步骤和优化

这是目前为止,我看到最详细的关于NFS配置的中文文档

1、NFS包

NFS需要5个RPM,分别是:

setup-*: 共享NFS目录在/etc/exports中定义

initscripts-*: 包括引导过程中装载网络目录的基本脚本

nfs-utils-*: 包括基本的NFS命令与监控程序

portmap-*: 支持安全NFS RPC服务的连接

quota-*: 网络上共享的目录配额,包括rpc.rquotad (这个包不是必须的)

2、基本监控程序

要顺利运行NFS,至少需要五个Linux服务,它们各有不同的功能,有的负责装载服务,有的保证远程命令指向正确的位置。这些服务通过/etc/rc.d/init.d目录中的nfs,nfslock和portmap脚本启动。下面简单介绍每个监控程序:

(1) 基本NFS

rpc.nfsd是NFS服务器监控程序,它通过/etc/rc.d/init.d目录中的nfs脚本启动。NFS监控程序还启动rpc.mountd装载监控程序,并导出共享目录。

(2) RPC装载

可以用mount命令连接本地目录或网络目录,但还需要一个装载NFS目录的特殊监控程序rpc.mountd

(3) 端口映射器

portmap监控程序只是定向RPC通信数据流,但它对于NFS服务很重要。如果不运行portmap,则NFS客户机无法找到从NFS服务器共享的目录。

(4) 重新启动与statd

当NFS服务需要中断或者重新启动时,rpc.statd监控程序和rpc.lockd在服务器重新启动之后使客户机恢复NFS连接。

(5) 锁定

通过共享NFS目录打开文件时,锁定可以使用户不能覆盖同一个文件。锁定通过nfslock脚本并使用rpc.lockd监控程序启动运行。

3、配置NFS

共享的NFS目录在/etc/exports中列出,这个文件控制对目录的共享。书写规则是:(每个共享规则一行) 共享目录 主机(参数)

例如:/mnt/cdrom *.abc.com(ro,sync) (rw,sync)

上面的规则代表将/mnt/cdrom目录以只读同步方式共享给*.abc.com域,并且以读写同步方式共享给主机。任何共享目录都要指定sync或async,也就是指定文件写入磁盘之前共享NFS目录是否响应命令。 下面是一些NFS共享的常用参数:

ro:只读访问

rw:读写访问

sync:所有数据在请求时写入共享

async:NFS在写入数据前可以相应请求

secure:NFS通过1024以下的安全TCP/IP端口发送

insecure:NFS通过1024以上的端口发送

wdelay:如果多个用户要写入NFS目录,则归组写入(默认)

no_wdelay:如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。

hide:在NFS共享目录中不共享其子目录

no_hide:共享NFS目录的子目录

subtree_check:如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

no_subtree_check:和上面相对,不检查父目录权限

all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash:保留共享文件的UID和GID(默认)

root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squas:root用户具有根目录的完全管理访问权限

anonuid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的UID

anongid=xxx:指定NFS服务器/etc/passwd文件中匿名用户的GID

4、启动NFS

# service portmap start

# service nfs start

检查NFS的运行级别:

# chkconfig --list portmap

# chkconfig --list nfs

根据需要设置在相应的运行级别自动启动NFS:

# chkconfig --level 235 portmap on

# chkconfig --level 235 nfs on

另外,还需要查看系统的iptables、/etc/hosts.allow、/etc/hosts.deny是否设置了正确的NFS访问规则。 参考:

nfs-howto

关键词:nfs优化

今天逛承老大的blog(),从上面看到一篇介绍nfs优化的,觉得非常不错,于是转载过来,也算自己收藏一份

1.设置块大小

mount命令的risize和wsize指定了server端和client端的传输的块大小。

mount -t nfs -o rsize=8192,wsize=8192,timeo=14,intr client:/partition /partition

如果未指定,系统根据nfs version来设置缺省的risize和wsize大小。大多数情况是4K对于nfs v2,最大是8K,对于v3,通过server端kernel设置risize和wsize的限制

vi /usr/src/linux2.4.22/include/linux/nfsd/const.h

修改常量: NFSSVC_MAXBLKSIZE

所有的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进行挂载,通过比较不同的块大小,得到优化的块大小。

2.网络传输包的大小

网络在包传输过程,对包要进行分组,过大或者过小都不能很好的利用网络的带宽,所以对网络要进行测试和调优。可以使用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。

3.nfs挂载的优化

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

retrans: 超时尝试的次数。

bg: 后台挂载,很有用

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

wsize: 写块大小

rsize: 读块大小

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

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

async: 异步读写

4.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

5.nfsd的队列长度

对于8个nfsd进程,系统的nfsd队列长度是64k大小,如果是多于8个,就要相应的增加相应的队列大小,具体的在

/proc/sys/net/core/rwmem_default

/proc/sys/net/core/wwmem_default

/proc/sys/net/core/rmmem_max

/proc/sys/net/core/wmmem_max

队列的长度最好是每一个nfsd有8k的大小。这样,server端就可以对client的请求作排队处理。如果要永久更改此值

#vi /etc/sysctl.conf

net.core.rmmem_default=数目 net.core.wmmem_default=数目 net.core.rmmem_max=数目 net.core.wmmem_max=数目 #service nfs restart


第二篇:NFS优化


1. 设置块大小

mount命令的risize(一次性的读取大小)和wsize()指定了server端和client端的传输的块大小。

#mount -t nfs -o rsize=8192,wsize=8192,timeo=14,intr client:/partition /partition

如果未指定,系统根据nfs version来设置缺省的risize和wsize大小。大多数情况是4K对于nfs v2,最大是8K,对于v3,通过server端kernel设置risize和wsize的限制

#vi /usr/src/linux2.4.22/include/linux/nfsd/const.h

修改常量: NFSSVC_MAXBLKSIZE

所有的2.4的的client都支持最大32K的传输块。系统缺省的块可能会太大或太小,这主要取决于你的kernel和你的网卡,太大或太小都有可能导致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进行挂载,通过比较不同的块大小,得到优化的块大小。

2.网络传输包的大小

网络在包传输过程,对包要进行分组,过大或过小都不能非常好的利用网络的带宽,所以对网络要进行测试和调优。

能使用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。

3.nfs挂载的优化

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

bg: 后台挂载,非常有用

hard: 如果server端没有响应,那么客户端一直尝试挂载 wsize: 写块大小

rsize: 读块大小

intr: 能中断不成功的挂载

noatime: 不更新文件的inode访问时间,能提高速度 async: 异步读写

4.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

5.nfsd的队列长度

对于8个nfsd进程,系统的nfsd队列长度是64k大小,如果是多于8个,就要相应的增加相应的队列大小,具体的在

/proc/sys/net/core/rwmem_default

/proc/sys/net/core/wwmem_default

/proc/sys/net/core/rmmem_max

/proc/sys/net/core/wmmem_max

队列的长度最佳是每一个nfsd有8k的大小。这样,server端就能对client的请求作排队处理。如果要永久更改此值

#vi /etc/sysctl.conf

net.core.rmmem_default=数目

net.core.wmmem_default=数目

net.core.rmmem_max=数目

net.core.wmmem_max=数目

#service nfs restart

更多相关推荐:
seo优化报告

seo优化报告当我们接到单子总是找不到好的优化报告模板下面提供一份给大家接到某些网站负责人站长咨询网站营销遇到的一些问题我们根据询问企业的网站做出的网站优化诊断报做网站制作或者网络推广的人估计没有谁不知道SEO...

系统优化报告模板

系统优化报告备注建议使用视图方式文档结构视图一总体对比二优化方法1硬件操作系统2网络环境3应用服务器124数据库服务器5应用程序22

网站优化报告

网站优化分析报告一整体测试与分析利用网络工具分析网站域名得到结果上图为综合查询分析结果以下我会一一进行分析1百度排名在这里可以清楚的看到百度的排名是比较靠后的在这里我对网站的首页进行源码分析截取了网站首页的一部...

网站优化分析报告

旅途旅游网优化分析报告报告分析人邓然分析网站旅途旅游网网站URL域名年龄3年9个月创建于20xx年10月26日优化关键词无锡旅行社报告目录1网站分析及修改建议2关键词竞争度分析3网站优化建议一网站分析及修改建议...

结构优化报告

结构优化报告一普通多层17222324252627二花庭美墅151618192021三高层部分3940414243四学校zzzz外国语学校小学部幼儿园产品研发部20xx7511722232425栋结构结构设计管...

工程优化报告

华中科技大学工程优化方法综述一优化建模1概述建立数学模型是优化设计中的一个重要的组成部分优化结构是否可用主要取决于所建立的数学模型是否能够确切而简介地反映工程问题的客观实际在建立数学模型时片面地强调确切往往会使...

RF优化总结报告

富川县城现场RF优化报告3月10日3月11日对富川县城进行了现场RF优化并对县城区主要道路进行了DT复测重点对基站远点处信号质量覆盖情况进行了路测从DT复测效果来看RF优化后富川县城簇网络质量得到整体提升路测关...

最优化实验报告

无约束最优化上机实验报告数学与应用数学091梁启凡090080实验一实验目的编程并测试算法A1GaussianEliminationwithRowPartialPivoting和A2CholeskyFactor...

网站优化报告

白象湾所有的网页查找结果lt图1查看是否有死链接gtlt图2查看是否有找不到的链接gt白象湾网站被各搜索引擎收录页数百度收录5谷歌收录7SOSO收录6有道收录0Bing收录0搜狗收录1今日收录0最近一周0最近一...

最优化报告

最优控制及最优化实验姓名李佳乐学号40950104班级电091班学院自动化学院同组张蕾陈瑜1实验一线性规划实验目的要求学生能用MatlabOptimizationToolbox求解线性规划问题实验内容练习使用l...

机械优化设计编程报告

机械优化设计部分程序1外推法2黄金分割法3二次插值法4坐标轮换法5随机方向法6四杆机构优化设计1外推法源程序includeltstdiohgtincludeltmathhgtdefineR001doublefu...

网站优化报告

网站优化报告当我们接到单子总是找不到好的优化报告模板下面提供一份给大家接到某些网站负责人站长咨询网站营销遇到的一些问题我们根据询问企业的网站做出的网站优化诊断报做网站制作或者网络推广的人估计没有谁不知道网站的即...

优化报告(20篇)