分类:
2010-04-08 17:03:35
在客户端上执行 nfsstat -n 命令,以显示 NFS 版本。例如,输出
表示nfs v3。在服务器上使用 rpcinfo -p | grep -iE "service|NFS" 命令,显示服务器上可使用的 NFS
版本。例如,输出
program vers proto port service
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
150001 1 udp 719 pcnfsd
150001 2 udp 719 pcnfsd
150001 1 tcp 720 pcnfsd
150001 2 tcp 720 pcnfsd
表示服务器可提供 NFS PV2 和 NFS PV3。
nfs server出现not responding, still trying讯息
状况:
在RedHat Enterprise Linux AS3.0的版本中,常会发生
Jan 31 15:01:46 nfs: server linux15 not responding, still trying
Jan 31 15:01:46 nfs: server linux15 OK
nfs server没有响应,然后又OK,这是发生在同一秒的事,而且会连续发生
推测
1. 网络环境有问题
2. 负载过大
如网络环境有问题,需对网络软硬件做检测
如为负载过大问题,可尝试增加服务的instance
步骤
1. 编辑NFS启动档: vi /etc/rc.d/S60nfs(较次) 或 /etc/sysconfig/nfs(优先),找出RPCNFSDCOUNT变数
nfs: server xxx.xxx.xxx.xxx not responding, still trying的现象是mount正常,但PING的时候丢包率比较
大,拷贝或运行一些数据量大于1K的程序将马上出现这个提示,然后几乎无响应;
这个问题的解决办法如下:
1、使用加参数的办法:mount -o nolock,rsize=1024,wsize=1024,timeo=15 192.168.2.130:/tmp/ /tmp/
2、不通过HUB,直接使用交叉线连接开发板和宿主机
mount -t nfs -o nolock,nosuid,proto=tcp,rsize=1024,wsize=1024,intr,rw,bg,soft 10.0.0.6:/soft /nfs
-t nfs : 指的是 mount文件系统的类型 这里是 nfs 文件系统
-o : 指的是 需要给mount的文件系统指定特定选项
nolock :
nosuid : 指定不允许通过该安装执行 setuid 和 setgid 程序
proto : 指定传输协议
rsize : 设置读缓冲区为 n 个字节。缺省值是 8192
wsize : 设置写缓冲区大小为 n 个字节。缺省值是 8192
intr : 在硬安装时允许键盘中断。
rw : 指定安装的文件是可读/写的。rw 是缺省值。
bg : 如果第一次尝试是失败的,试图在后台安装。缺省值是 fg (如果第一次尝试是失败的,试图在前台中安装)
soft : 如果服务器不响应,返回错误
在服务器端,一定要确保有足够的 NFS 内核线程来处理所有客户机。在默认情况下,只启动一个线程,但是 Red Hat 和 Fedora 系统会启动 8 个线程。对于繁忙的 NFS 服务器,应该提高这个数字,比如 32 或 64。可以用 nfsstat -rc 命令评估客户机,了解是否有阻塞的现象,这个命令显示客户机远程过程调用(RPC)统计数据。清单 5 显示一个 Web 服务器的客户机统计数据。
清单 5. 显示 NFS 客户机的 RPC 统计数据
# nfsstat -rc
Client rpc stats:
calls retrans authrefrsh
1465903813 0 0
第二列 retrans 是零,这表示从上一次重新引导以来没有出现需要重新传输的情况。如果这个数字比较大,就应该考虑增加 NFS 内核线程。设置方法是将所需的线程数量传递给 rpc.nfsd,比如 rpc.nfsd 128 会启动 128 个线程。任何时候都可以进行这种设置。线程会根据需要启动或销毁。同样,这个设置应该放在启动脚本中,尤其是在系统上启用 NFS 的脚本。
加强NFS安全的方法:
1、合理的设定/etc/exports中共享出去的目录,最好能使用anonuid,anongid以使MOUNT到NFS SERVER的CLIENT仅仅有最小的权限,最好不要使用root_squash。
2、使用IPTABLE防火墙限制能够连接到NFS SERVER的机器范围
iptables -A INPUT -i eth0 -p TCP -s 10.0.0.0/24 --dport 111 -j ACCEPT
iptables -A INPUT -i eth0 -p UDP -s 10.0.0.0/24 --dport 111 -j ACCEPT
3、为了防止可能的Dos攻击,需要合理设定NFSD 的COPY数目。
linux中的NFSD的COPY数目是在/etc/rc.d/init.d/nfs这个启动文件中设置的, RPCNFSDCOUNT=8 默认是8个NFSD,对于这个参数的设置一般是要根据可能的CLIENT数目来进行设定的,和WSIZE、RSIZE一样也是要通过测试来找到最近的数值。
4、修改/etc/hosts.allow和/etc/hosts.deny达到限制CLIENT的目的
/etc/hosts.allow
portmap: 10.0.0.0/255.255.255.0 : allow
/etc/hosts.deny
portmap: ALL : deny