nfs 快速排错大全

NFS服务简介  

NFSNetwork File System的缩写,即网络文件系统。NFS是由Sun开发并发展起来的一项用于在不同机器,不同操作系统之间通过网络互相分享各自的文件。NFS server也可以看作是一个FILE SERVER,用于在UNIX类系统之间共享文件,可以轻松的挂载(mount)到一个目录上,操作起来就像本地文件一样的方便。

一、nfs-server(192.168.2.1)

1、检查是否安装

[root@host ~]# rpm -qa |grep nfs     //查看是否安装了nfs

nfs-utils-lib-1.0.8-7.6.el5

nfs-utils-1.0.9-42.el5              //nfs主程序,已安装

2NFS配置文件设置

若要共享目录或文件,需要在共享清单中指明该文件/etc/exports  (语法参照 man  exports)

#vim   /etc/exports

/home/nfs 192.168.2.0/24(rw,sync)    (192.168.2.0网段的用户对/home/nfs NFS卷具有读写)
/media/cdrom 192.168.2.*(ro)        (192.168.2.0网段的用户对/media/cdromNFS卷具有读)

/etc/exports,配置文件有三部分: 输出目录,客户端,参数选项

a输出目录是指NFS系统中需要共享给客户机使用的目录;

客户端是指网络中可以访问这个NFS输出目录的计算机

b客户端常用的指定方式

指定ip地址的主机 192.168.0.200

指定子网中的所有主机 192.168.0.0/24

指定域名的主机 a.liusuping.com

指定域中的所有主机 *.liusuping.com

所有主机 *

c选项:

选项用来设置输出目录的访问权限、用户映射等。NFS主要有3类选项:

访问权限选项

设置输出目录只读 ro

设置输出目录读写 rw

用户映射选项

all_squash 将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash all_squash取反(默认设置);

root_squash root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash rootsquash取反;

anonuid=xxx 将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx 将远程访问的所有用户组都映射为匿名用 户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

secure 限制客户端只能从小于1024tcp/ip端口连接nfs服务器(默认设置);

insecure 允许客户端从大于1024tcp/ip端口连接服务器;

sync 将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async 将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay 检查是否有相关的写操作,如果有则将这些写操作 一起执行,这样可以提高效率(默认设置);

no_wdelay 若有写操作则立即执行,应与sync配合使用;

subtree 若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置)

no_subtree 即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率

3、启动nfs服务

# service nfs start

启动 NFS 服务:                                            [确定]

关掉 NFS 配额:                                            [确定]

启动 NFS 守护进程:                                        [确定]

启动 NFS mountd:                                          [确定]

4、查看自己的rpc进程,与NFS相关的是否正常开启,如下表明已经正常开启:

   #rpcinfo -p  192.168.2.1 (本机ip,)

    100011    1   udp    821  rquotad

    .........

100003    2   udp   2049  nfs

........

    100021    1   tcp  34647  nlockmgr

     .......

    100005    1   udp    852  mountd

      ........

5导出共享清单

[root@host ~]# exportfs -rv

exporting 192.168.2.0/24:/home/nfs

exporting 192.168.2.*:/media/cdrom

二、nfs客户端(192.168.2.20/24)

1查看自己的rpc进程是否开启

[root@client ~]# rpcinfo -p

   程序 版本 协议   端口

    100000    2   tcp    111  portmapper

    ........

    100024    1   udp    794  status

........

100021    1   udp  58859  nlockmgr

........

2查看nsf-serverexports文件是否可以访问:

[root@client ~]# showmount -e 192.168.2.1

Export list for 192.168.2.1:

/media/cdrom 192.168.2.*

/home/nfs    192.168.2.0/24

3、创建挂载点,手动挂载

#mkdir  /tmp/abc

#mkdir  /tmp/cdrom

# mount 192.168.2.1:/home/nfs  /tmp/abc

# mount 192.168.2.1:/media/cdrom  /tmp/cdrom

4、设置开机自动挂载

#vim /etc/fstab

192.168.2.1:/home/nfs   /tmp/abc                nfs     defaults,soft,intr      0 0

192.168.2.1:/media/cdrom   /tmp/cdrom           nfs     defaults,soft,intr      0 0

 注:(softintr等参数可查看man nfs

 -ro,soft,intr:  -ro:挂载时的权限,soft:如果有I/O错误时,会告知系统,中继挂载;intr:挂载时有大量超时时,中继挂载,并告知系统。

#umount /tmp/cdrom    /tmp/abc

#mount -a

5、这种方式的挂载需要消耗大量的资源来维持连接,可以使用自动挂载当切换到该目录时进行挂载,退出时,取消挂载

a安装autofs软件包

[root@client tmp]# rpm -qa|grep autofs

autofs-5.0.1-0.rc2.131.el5

b编辑autofs的配置文件/etc/auto.master

#vim /etc/auto.master

/tmp /etc/nfs.misc   --timeout=08

/tmp /etc/nfs.misc   --timeout=08

:wq

c、编辑要求的产生/etc/nfs.misc

#vim /etc/nfs.misc

abc     -fstype=nfs   192.168.2.1:/home/nfs

cdrom   -fstype=nfs   192.168.2.1:/media/cdrom

:wq

d、启动autofs服务

#service autofs  start

#rm -rf /tmp/abc

#rm -rf /tmp/cdrom



e、测试

abccdrom 本地目录,我们不需要创建它,用于挂载远程共享文件192.168.2.1:/home/nfs,在我们想要使用远程共享文件/home/nfs时,只要在本地目录/tmp下键入cd abc 系统就会自动挂载到远程共享目录:192.168.2.10:/home/nfs,我们就可以正常使用里面的共享文件了 ,在到达超时时间时就会自动卸载。

f、以rw自动挂载/home/nfs/ NFS卷到/tmp/abc目录下,却发现无法创建目录,因为nfs-server的本地目录还没有写权限,

[root@client abc]# touch nfs.txt

touch: 无法触碰 “nfs.txt权限不够

gnfs-server服务端修改/home/nfs的本地权限

[root@host home]# chmod o+wt nfs/

就可以正常创建了,

[root@client abc]# touch nfs.txt

[root@client abc]# dir

hello-word.txt nfs.txt  nft-test

实验结束。

注:NFS客户端与NFS服务器在连接上之后,为了保证其正常的连接,NFS客户端与NFS服务器之间要不断的发送数据包,来宣告自己还在与NFS服务器进行着连接,但是,如果一个NFS服务器上有许多的客户端一直连接的话,NFS服务器会承受很大的带宽压力,这对NFS服务器的正常使用会造成很大的影响,因此,为了避免这种情况的发生,人们就想到了一种方法,让NFS客户端在获取数据时与NFS服务器进行连接,而在没有获取数据的时间内,自动的断开与NFS服务器之间的连接,但只要客户端发送获取数据的请求进,客户端就与服务器自动连接上,自动挂载的方法对客户端主机与服务器主机都有很大的好处。配置方法是在NFS客户端方面进行配置的




强制 umount nfs文件系统


root@ubuntu:/# umount /app/nfs/
umount.nfs: /app/nfs: device is busy
umount.nfs: /app/nfs: device is busy
提示文件系统设置busy
root@ubuntu:/# fuser -km /app/nfs/   先使用这条命令
/data/nfs/:                     8119c
root@ubuntu:/# umount /app/nfs/      在umount 就可以了
root@ubuntu:/#
 
也可使用 umount -f /app/nfs


一、NFS服务常见故障排查:

NFS服务出现了故障,主要从以下几个方面检查原因:

(1)检查NFS客户机和服务器的负荷是否太高,Server和Client之间的网络是否正常;

(2)检查/etc/exports文件的正确性;

(3)必要时重启NFS和portmap服务;

(4)运行下列命令重新启动portmap和NFS:

# /etc/init.d/portmap restart
# /etc/init.d/nfs restart
# /etc/init.d/rpcbind restart (在RHEL/CentOS 6.x里面)
# chkconfig portmap on
# chkconfig nfs on
# chkconfig rpcbind on (在RHEL/CentOS 6.x里面)

注意:在RHEL/CentOS 6.x里面,portmap服务改名为rpcbind服务了;顺便说一下,rpcbind服务也是图形界面的关键基础服务,不启动此服务,不能启动图形桌面。

(5) 检查Client上的mount命令或/etc/fstab的语法是否正确;

(6) 查看内核是否支持NFS和RPC服务。一般正常安装的Linux系统都会默认支持NFS和RPC服务,除非你自己重新编译的内核,而且没选择nfs支持选项编译。

二、NFS常见故障解决方法:

1、The rpcbind failure error
故障现象:
nfs mount: server1:: RPC: Rpcbind failure
RPC: Timed Out
nfs mount: retrying: /mntpoint
原因:
第一,可能因为客户机的hosts文件中存在错误的ip地址、主机名或节点名组合;
第二,服务器因为过载而暂时停止服务。

2、The server not responding error
现象:
NFS server server2 not responding, still trying
原因:
第一,网络不通,用ping命令检测一下。
第二,服务器关机。

3、The NFS client fails a reboot error
现象:
启动客户机后停住了,不断显示如下提示信息:
Setting default interface for multicast: add net 224.0.0.0: gateway:
client_node_name.
原因:
在etc/vfstab的mount选项中使用了fg而又无法成功mount服务器上的资源,改成bg或将该行注释掉,直到服务器可用为止。

4、The service not responding error
现象:
nfs mount: dbserver: NFS: Service not responding
nfs mount: retrying: /mntpoint
原因:
第一,当前级别不是级别3,用who -r查看,用init 3切换。
第二,NFS Server守护进程不存在,用ps -ef | grep nfs检查,用/etc/init.d/nfs start启动。

5、The program not registered error
现象:
nfs mount: dbserver: RPC: Program not registered
nfs mount: retrying: /mntpoint
原因:
第一,当前级别不是级别3。
第二,mountd守护进程没有启动,用/etc/init.d/nfs脚本启动NFS守护进程。
第三,看/etc/dfs/dfstab中的条目是否正常。

6、The stale file handle error
现象:
stale NFS file handle
原因:
服务器上的共享资源移动位置了,在客户端使用umount和mount重新挂接就可以了。

7、The unknown host error
现象:
nfs mount: sserver1:: RPC: Unknown host
原因:
hosts文件中的内容不正确。

8、The mount point error
现象:
mount: mount-point /DS9 does not exist.
原因:
该挂接点在客户机上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。

9、The no such file error
现象:
No such file or directory.
原因:
该挂接点在服务器上不存在,注意检查命令行或/etc/vfstab文件中相关条目的拼写。

10、No route to host
错误现象:
# mount 10.10.11.211:/opt/data/xmldb /c2c-web1/data/xmldb -t nfs -o rw
mount: mount to NFS server ’10.10.11.211′ failed: System Error: No route to host.

原因:
防火墙被打开,关闭防火墙。
这个原因很多人都忽视了,如果开启了防火墙(包括iptables和硬件防火墙),NFS默认使用111端口,我们先要检测是否打开了这个端口,还要检查TCP_Wrappers的设定。

11、Not owner
现象:
# mount -F nfs -o rw 10.10.2.3:/mnt/c2c/data/resinfo2 /data/data/resinfo2
nfs mount: mount: /data/data/resinfo2: Not owner

原因:
这是Solaris 10版本挂载较低版本nfs时报的错误。

解决:
需要用-o vers=3参数

示例:
# mount -F nfs -o vers=3 10.10.2.3:/mnt/c2c/data/resinfo2 /data/data/resinfo2

12、RPC: Program not registered & retrying
现象:
nfs mount: 10.10.2.3: : RPC: Program not registered
nfs mount: retrying: /data/data/resinfo2

原因:
没有启动NFS共享端服务。

解决:需要重新启动share端的NFS服务,
Linux:
mount: RPC: Program not registered
# /etc/init.d/nfs restart

Solaris:
mount: RPC: Program not registered
# /etc/rc.d/init.d/nfs restart

13、can’t contact portmapper: RPC: Remote system error – Connection refused
现象:
# exportfs -a
can’t contact portmapper: RPC: Remote system error – Connection refused

原因:
出现这个错误信息是由于server端的portmap没有启动。

解决:
# /etc/init.d/portmap start



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值