| 查看: 1297 | 回复: 2 | |||
| 【奖励】 本帖被评价2次,作者zhangguangping增加金币 1.6 个 | |||
| 本帖产生 1 个 计算强帖 ,点击这里进行查看 | |||
[资源]
NFS V2引起的"File size limit exceeded"
|
|||
|
NFS协议从诞生到现在为止,已经有多个版本,如NFS V2(rfc1094),NFS V3(rfc1813)(最新的版本是V4(rfc3010)。最早,Sun公司曾将NFS v2设计成为只使用UDP协议,主要原因是当时机器的内存、网络速度和CPU的影响,不得不选择对机器负担较轻的方式。而到了NFS v3,Sun公司选择了TCP协议作为缺省的传输方式。 V3相对V2的主要区别: 1、文件尺寸 V2版本最大只支持32BIT的文件大小(4G),而NFS V3版本新增加了支持64BIT文件大小的技术。 2、文件传输尺寸 V3版本没有限定传输尺寸,V2版本最多只能设定为8k,可以使用-rsize and -wsize 选项来进行设定(我这边出问题的时候就是一个3.2G的文件拷贝起来就有问题,只能拷贝2.1G左右) 3、完整的信息返回 V3版本增加和完善了许多错误和成功信息的返回,对于服务器的设置和管理能带来很大好处。 4、增加了对TCP传输协议的支持 V2版本只提供了对UDP协议的支持,在一些高要求的网络环境中有很大限制,V3增加了对TCP协议的支持。UDP有着传输速度快,非连接传输的便捷特性,但是UDP在传输上没有TCP来的稳定,当网络不稳定或者黑客入侵的时候很容易使NFS的 Performance 大幅降低甚至使网络瘫痪。所以对于不同情况的网络要有针对的选择传输协议。 5、异步写入特性。 6、改进了服务器的mount性能。 在Linux上,UDP协议是缺省使用的协议。作为服务器而言,别无选择。但作为客户端,可以使用TCP协议和其它使用TCP的NFS服务器互连。在局域网中使用UDP协议较好,因为局域网有比较稳定的网络保证,使用UDP可以带来更好的性能,RHEL 4.0默认使用V2版本。但是 Linux也可以通过mount option的nfsvers=n进行选择。 通过上面的叙述,可以看出来,1和2是导致出问题的隐患。隐患在于,能不能在NFS文件系统上创建4GB大小的文件以及在传输文件的时候,允许传输的文件的大小。 我们的机器是suse-10.2,计算任务在计算节点的磁盘运算。运算完毕后将所有的结果文件拷贝回管理节点用户提交任务的目录下。所有的用户目录都在/home下,并且将/home做了NFS共享给各个计算节点。 suse-10.2带的NFS组件是nfs-utils 1.0.7,其中包含了Server nfs v2;Server nfs v3;Server nfs v3;Client nfs v2;Client nfs v3;Client nfs v4 其中版本2和版本3都可以使用。版本4报告说不支持。现在不追究为什么版本4不支持的问题,这个也不是本文的目的。 本文的目的是说明在NFS系统上可能出现的一个文件传输失败"File size limit exceeded"错误的原因和解决办法。 如果服务其上存在多个版本的NFS客户端,服务器会根据NFS 服务端的版本,找一个最合适的版本。但是问题是,如果你的客户端机器比服务器机器启动的早的话,这个选择就没有依据了。这个时候,客户端做出的选择可能依据别的设置或者操作系统的默认设置。 我们的问题就是出在这儿。当时开客户端机器的时候,服务端机器还没有开启。所以当启动起来的时候,客户端机器自动选择了Client nfs v2,而服务端是Server nfs v3。这样当后来通过手动挂在上NFS的挂载后,使得客户端和服务端的版本不一致。从而导致由Client nfs v2向服务端是Server nfs v3的NFS文件系统拷贝东西的时候,大文件拷贝失败,出现File size limit exceeded。 解决办法:在客户端将NFS的版本号选择回来。 1.查看服务端可使用的版本号 到服务节点运行: rpcinfo -p | grep -iE "service|NFS" 返回: 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100003 4 udp 2049 nfs 100003 2 tcp 2049 nfs 100003 3 tcp 2049 nfs 100003 4 tcp 2049 nfs 表示可以使用的版本好有2, 3, 4 2.首先查看者客户端所使用的版本 nfsstat -m 返回 /home from 10.10.10.10:/home Flags: rw,v3,rsize=32768,wsize=32768,hard,lock,proto=tcp,sec=sys,addr=10.10.10.10 说明用的是版本3. 如果返回来的是v2,则可以通过mount加载的时候指定版本号,如 mount -o nfsvers=3 10.10.10.10:/home /home 表示加载该挂载点的时候使用NFS V3版本。 在加载之前可以卸载原来的挂载 umount /home 如果显示 /home: device is busy 表示该挂载点正在被使用。 可以直接通过 mount -o nfsvers=3 10.10.10.10:/home /home 挂载即可,这样就存在两个挂载。 10.10.10.10:/home 1748003360 536289952 1211713408 31% /home 10.10.10.10:/home 1748003360 536289952 1211713408 31% /home 最后的这个生效。但是已经运行的占用第一个挂载的程序可能会使用第一个版本的NFS 总结:为了防止机器启动的时候,选择的NFS的版本不同,挂载的时候明确给出NFS的版本号,这样比较保险. |
» 收录本帖的淘帖专辑推荐
学习备用 |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有53人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
» 本主题相关价值贴推荐,对您同样有帮助:
上柱子,展开剂流速过快是不是会引起柱子产生气泡?
已经有8人回复
【求助】XRD分析中峰偏移问题由何引起?
已经有5人回复
[size=1]过共析钢线材怎样才能产生网碳啊——整个实验室都头痛[/size]
已经有5人回复
在Lammps中安装xmovie工具时,Makefile文件怎么修改X库路径
已经有3人回复
vasp5.2 并行编译如何修改makefile
已经有5人回复
【原创】关于endnote中Attach File后文件打不的最新解决办法
已经有4人回复
诚求OriginLab Pro 8.5正式注册版 (SR1 b161)的license file text(楼主取消求助)
已经有3人回复
在安装MestReNove时需要license file到哪里找?
已经有3人回复
【求助】关于中心极限定理(central limit theorem)
已经有8人回复
2楼2012-06-11 08:26:19
简单回复
2012-06-11 08:58
回复
五星好评 













回复此楼