文档章节

nfs卡住的问题

刺猬一号
 刺猬一号
发布于 2017/06/16 00:07
字数 1767
阅读 35
收藏 0

最近使用nfs来存储文件,但是在客户端节点遇到了问题。

用df -h的时候系统直接就卡住了。

后来百度了一下,发现网上好多遇到这种问题的。是因为nfs的server其实已经挂了,但是客户端还存在。所以会出现这种情况,这里复制一段一位大神的语录:

之前开发时就碰到过nfs客户端卡住的情况,umount -f /mnt提示device is busy,并且尝试访问挂载目录、df -h等操作都会使终端卡住,ctrl+c也不能强行退出。

当时忙着赶进度,没研究这个问题。最近倒出功夫研究一下,顺便学习一下nfs的优化。
造成这种现象的原因是nfs服务器/网络挂了,nfs客户端默认采用hard-mount选项,而不是soft-mount。他们的区别是
soft-mount: 当客户端加载NFS不成功时,重试retrans设定的次数.如果retrans次都不成功,则放弃此操作,返回错误信息 "Connect time out"
hard-mount: 当客户端加载NFS不成功时,一直重试,直到NFS服务器有响应。hard-mount 是系统的缺省值。在选定hard-mount 时,最好同时选 intr , 允许中断系统的调用请求,避免引起系统的挂起。当NFS服务器不能响应NFS客户端的 hard-mount请求时, NFS客户端会显示
"NFS server hostname not responding, still trying"


下面列出mount关于nfs相关的参数
(1)-a:把/etc/fstab中列出的路径全部挂载。
(2)-t:需要mount的类型,如nfs等。
(3)-r:将mount的路径定为read only。
(4)-v mount:过程的每一个操作都有message传回到屏幕上。
(5)rsize=n:在NFS服务器读取文件时NFS使用的字节数,默认值是4096个字节。
(6)wsize=n:向NFS服务器写文件时NFS使用的字节数,默认值是4096个字节。
(7)timeo=n:从超时后到第1次重新传送占用的1/7秒的数目,默认值是7/7秒。
(8)retry=n:在放弃后台mount操作之前可以尝试的次数,默认值是7 000次。
(9)soft:使用软挂载的方式挂载系统,若Client的请求得不到回应,则重新请求并传回错误信息。
(10)hard:使用硬挂载的方式挂载系统,该值是默认值,重复请求直到NFS服务器回应。
(11)intr:允许NFS中断文件操作和向调用它的程序返回值,默认不允许文件操作被中断。
(12)fg:一直在提示符下执行重复挂载。
(13)bg:如果第1次挂载文件系统失败,继续在后台尝试执行挂载,默认值是失败后不在后台处理。
(14)tcp:对文件系统的挂载使用TCP,而不是默认的UDP。

如#mount -t nfs -o soft 192.168.1.2:/home/nfs /mnt


至于传输尺寸的选择,可以进行实际测试
time dd if=/dev/zero of=/mnt/nfs.dat bs=16k count=16384
即向nfs服务器上的nfs.dat文件里写入16384个16KB的块(也有经验说文件大小可以设定为nfs服务器内存的2倍)。
得到输出如:
输出了 16384+0 个块
user    0m0.200s
输出了 66535+0 个块
user    0m0.420s
192.168.1.4:/mnt  /home/nfs  nfs   rsize=8192,wsize=8192,timeo=10,intr
重新挂载nfs服务器,调整读写块大小后重复上述过程,可以找到最佳传输尺寸。


NFS服务器的故障排除
故障排除思路:
NFS出现了故障,可以从以下几个方面着手检查。
(1)NFS客户机和服务器的负荷是否太高,服务器和客户端之间的网络是否正常。
(2)/etc/exports文件的正确性。
(3)必要时重新启动NFS或portmap服务。
运行下列命令重新启动portmap和NFS:
service portmap restart
service nfs start
(4)检查客户端中的mount命令或/etc/fstab的语法是否正确。
(5)查看内核是否支持NFS和RPC服务。
普通的内核应有的选项为CONFIG_NFS_FS=m、CONFIG_NFS_V3=y、CONFIG_ NFSD=m、CONFIG_NFSD_V3=y和CONFIG_SUNRPC=m。
我们可以使用常见的网络连接和测试工具ping及tracerroute来测试网络连接及速度是否正常,网络连接正常是NFS作用的基础。rpcinfo命令用于显示系统的RPC信息
,一般使用-p参数列出某台主机的RPC服务。用rpcinfo-p命令检查服务器时,应该能看到portmapper、status、mountd nfs和nlockmgr。用该命令检查客户端时,应
该至少能看到portmapper服务。


使用nfsstat命令查看NFS服务器状态
nfsstat命令显示关于NFS和到内核的远程过程调用(RPC)接口的统计信息,也可以使用该命令重新初始化该信息。如果未给定标志,默认是nfsstat -csnr命令。使用该命令显示每条信息,但不能重新初始化任何信息。

nfsstat命令的主要参数如下。
(1)-b:显示NFS V4服务器的其他统计信息。
(2)c:只显示客户机端的NFS和RPC信息,允许用户仅查看客户机数据的报告。nfsstat命令提供关于被客户机发送和拒绝的RPC和NFS调用数目的信息。
要只显示客户机NFS或者RPC信息,将该参数与-n或者-r参数结合。
(3)-d:显示与NFS V4授权相关的信息。
(4)-g:显示RPCSEC_GSS信息。
(5)-m:显示每个NFS文件系统的统计信息,该文件系统和服务器名称、地址、安装标志、当前读和写大小,以及重新传输计数
(6)-n:为客户机和服务器显示NFS信息。要只显示NFS客户机或服务器信息,将该参数与-c和-s参数结合。
(7)-r:显示RPC信息。
(8)-s:显示服务器信息。
(9)-t:显示与NFS标识映射子系统的转换请求相关的统计信息,要只显示NFS客户机或服务器信息,将-c和-s选项结合。
(10)-4:当与-c、-n、-s或-z参数组合使用时,将包含NFS V4客户机或服务器的信息,以及现有的NFS V2和V3数据。
(11)-z:重新初始化统计信息。该参数仅供root用户使用,并且在显示上面的标志后可以和那些标志中的任何一个组合到统计信息的零特殊集合。


要显示关于客户机发送和拒绝的RPC和NFS调用数目的信息,输入:
nfsstat -c
要显示和打印与客户机NFS调用相关的信息,输入如下命令:
nfsstat -cn
要显示和打印客户机和服务器的与RPC调用相关的信息,输入如下命令:
nfsstat -r
要显示关于服务器接收和拒绝的RPC和NFS调用数目的信息,输入如下命令:
nfsstat –s

这里就是详细的解释了。

© 著作权归作者所有

共有 人打赏支持
刺猬一号
粉丝 12
博文 363
码字总数 600844
作品 0
深圳
关于NFS在外网因为防火墙没设置好导致namenode -fomat一直卡住

@平江夜弹 你好,想跟你请教个问题: 您好 我现在在外网搭建hadoop环境 用了NFS 现在不知道是防火墙的哪个设置没设置好 导致 hadoop namenode -format在格式化NFS目录的时候一直被卡住 然后就...

熊云长
2012/08/28
266
0
OSC故障分析:频繁的重启 Tomcat 会导致系统的性能下降吗?

今天下午 OSChina 挂了挺长时间,主要的现象是应用服务器 CPU 非常繁忙,连接池爆满,Tomcat 对请求的处理非常缓慢,报大量的 work queue full 的错误。但是前端 Nginx 的日志里看不到明显的...

红薯
2015/10/16
1K
24
linux df -h卡成狗

今天遇到一个很奇怪的问题,在一台linux执行df -h查看磁盘使用情况,发现卡成狗,于是着手去解决: 1、通过strace df -h追踪是卡在什么位置 [root@new_web ~]# strace df -hexecve("/bin/df"...

chenyicai
2017/05/11
0
0
Linux运维笔记-文档总结-NFS文件共享(网络文件系统)

转自:http://m.blog.csdn.net/blog/index?username=Ningdaxing1994 觉得这个写得不错哈哈~ 以下所有操作都是在Red-hat 7.0上 1.NFS的介绍 NFS(Network File System)即网络文件系统,是Fre...

AELY木
2017/06/09
0
0
maven generating project in batch mode卡住

@iamyangjy 你好,想跟你请教个问题: 我看到你的文章中有解决创建maven工程卡住的的问题,但是我按照你说的操作idea还是卡住不动,请问添加参数的时机是什么时候,是卡住后再加上吗?加上参...

小Y_
2016/03/25
760
1

没有更多内容

加载失败,请刷新页面

加载更多

AOSP Build System —— Soong

Soong Soong is the replacement for the old Android make-based build system. It replaces Android.mk files with Android.bp files, which are JSON-like simple declarative descriptio......

雪落青山
33分钟前
1
0
Unity C# lock关键字的坑

Unity 5.6 环境下的 lock关键字,在特定的多线程环境下会死锁 崩溃 其中一种情况: 异步socket 操作,由于内部是一个线程池回调的异步回调,操作同一个对象时 lock关键字会概率出现死锁 闪退...

梦想游戏人
44分钟前
1
0
redis-hash

哈希类型是指健值本身又是一个键值对结构 基本命令: hset key field value 设置值 hget(获取),hdel(删除),hlen(计算field个数),hmget(批量设置),hexists(是否存在),hkeys(获取所有的...

拐美人
今天
2
0
简单的svm例子

数据来源:https://github.com/oumiga1314/Coursera-ML-AndrewNg-Notes/blob/master/code/ex6-SVM/data/ex6data1.mat import pandas as pd import numpy as np import scipy.io as sio impor......

南桥北木
今天
1
0
android 关于View的一些整理

1、Button text的值为英文时,会自动转换成大写。如需取消,设置android:textAllCaps="false" 2、控件的可见性 可以在layout的配置文件中,配置android:visibility属性 调用setVisibility()...

西米小娅
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部