来自 新葡亰运维 2019-11-12 13:32 的文章
当前位置: 澳门新葡亰app > 新葡亰运维 > 正文

NFS就是启动不了的,使用网络文件系统NFS服务器

NFS问题确定
与其它网络服务一样,使用网络文件系统NFS服务器可能出现问题。对这些问题的故障诊断涉及理解跟踪 NFS 问题的策略、识别 NFS 相关的错误消息和选择适当的解决方案。当跟踪到一个NFS服务器问题时,请首先孤立三个主要故障点以确定其中是哪一个不工作:服务器、客户机或网络本身。

系统是CentOS5.6,假设NFS Server IP为192.168.1.2,NFS Clinet IP为192.168.0.100。1.服务端安装NFS:yum install nfs-utils protmapnfs-utils包提供了NFS服务器程序和相应的管理工具。protmap是一个管理RPC连接的程序,portmap服务对NFS是必须的,因为它是NFS的动态端口分配守护进程,如果portmap不启动,NFS就是启动不了的。2.配置NFS服务端,编辑/etc/exports文件:vim /etc/exports设置共享文件目录:/home/nfsdir *(rw)/home/share 192.168.0.100(rw,sync,no_root_squash) *(ro)其中:/home/nfsdir *(rw)表示共享/home/nfsdir目录,所有用户都有读写权限。/home/share 192.168.0.100(rw,sync,no_root_squash) *(ro)表示共享/home/share目录,192.168.0.100有读写权限并且root用户有完全管理访问权限,其他机器仅有只读权限。配置文件的格式为:[共享的目录] [主机名或IP(参数,参数)]其中参数是可选的,当不指定参数时,nfs将使用默认选项。默认的共享选项是sync,ro,root_squash,no_delay。当主机名或IP地址为空时,则代表共享给任意客户机提供服务。当将同一目录共享给多个客户机,但对每个客户机提供的权限不同时,可以这样:[共享的目录] [主机名1或IP1(参数1,参数2)] [主机名2或IP2(参数3,参数4)]下面是一些NFS共享的常用参数:ro   只读访问rw   读写访问sync   同步写入资料到内存与硬盘中async   资料会先暂存于内存中,而非直接写入硬盘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_squash   root用户具有根目录的完全管理访问权限anonuid=xxx   指定NFS服务器/etc/passwd文件中匿名用户的UIDanongid=xxx   指定NFS服务器/etc/passwd文件中匿名用户的GID当exports文件修改后,使用以下命令,不需要重启NFS服务,就可以重新挂载/etc/exports里面的设定:exportfs -arv3.配置iptables:因为NFS会为以上三个服务分配临时端口,所以很难在防火墙上控制要开放哪些端口。所以要将几个端口固定住。vim /etc/services在文件最后添加:mountd 1011/tcp #rpc.mountdmountd 1011/udp #rpc.mountd在NFS-Server的防火墙里开放相关端口要开放1011/tcp, 1011/udp, 111/tcp, 111/udp, 2049/tcp, 2049/udp这六个端口。如果是通过图形界面配置,可以手工添加前四个端口,而后面2049这两个端口,可以通过勾选上面的nfs4来开放。4.先启动portmap服务:service portmap restart5.再启动NFS服务:service nfs restart如果之前没有先启动portmap服务,那么当启动NFS服务时会停在Starting NFS daemon:很长时间。6.设置nfs、portmap开机自启动:chkconfig –level 345 nfs onchkconfig –level 345 portmap on查看服务运行的相关端口情况rpcinfo -p 192.168.1.2程序 版本 协议 端口100000 2 tcp 111 portmapper100000 2 udp 111 portmapper100011 1 udp 875 rquotad100011 2 udp 875 rquotad100011 1 tcp 875 rquotad100011 2 tcp 875 rquotad100003 2 udp 2049 nfs100003 3 udp 2049 nfs100003 4 udp 2049 nfs100021 1 udp 32769 nlockmgr100021 3 udp 32769 nlockmgr100021 4 udp 32769 nlockmgr100021 1 tcp 32803 nlockmgr100021 3 tcp 32803 nlockmgr100021 4 tcp 32803 nlockmgr100003 2 tcp 2049 nfs100003 3 tcp 2049 nfs100003 4 tcp 2049 nfs100005 1 udp 1011 mountd100005 1 tcp 1011 mountd100005 2 udp 1011 mountd100005 2 tcp 1011 mountd100005 3 udp 1011 mountd100005 3 tcp 1011 mountd如果你只需要配置一个简单的nfs服务器的话,那只需要开放3个守护进程端口就行了:111,portmap启动的端口,用来提供nfs端口2049,NFS启动的端口,用来管理Client登入主机的权限1011,刚才配置的mountd端口,这个端口主要用来管理NFS文件系统权限的7.客户端也需要安装nfs-utils、portmap软件包,并启动portmap服务和netfs服务:yum install nfs-utils portmapservice portmap restartservice netfs restartchkconfig –level 345 on8.NFS服务端启动成功后,客户端可以利用showmount命令测试是否能连上服务端:命令格式:showmount -e [hostname|IP],showmount命令需要安装了nfs-utils软件包才有。showmount -e 192.168.1.2显示如下:/home/nfsdir */home/share (everyone)9.客户端建立挂载的文件夹:cd /mntmkdir nfs1mkdir nfs210.客户端使用mount命令挂载NFS共享文件:mount -t nfs 192.168.1.2:/home/nfsdir /mnt/nfs1mount -t nfs 192.168.1.2:/home/share /mnt/nfs2命令格式:mount – t nfs nfs服务器地址:目录共享 本地挂载目录点11.客户端可使用df命令,mount命令查看挂载情况:mount192.168.1.2:/home/share on /mnt/nfs2 type nfs (rw,addr=192.168.1.2)192.168.1.2:/home/nfsdir on /mnt/nfs1 type nfs (rw,addr=192.168.1.2)或者df -h12.客户端卸载NFS文件命令:umount /mnt/nfs1umount /mnt/nfs213.客户端可以设置系统启动时自动挂载NFS文件:需要将NFS的共享目录挂载信息写入/etc/fstab/文件,以实现对NFS共享目录的自动挂载。编辑/etc/fstab文件:vim /etc/fstab在最后加入如192.168.1.2:/home/nfsdir /mnt/nfsdir nfs defaults 0 0在/etc/fstab里加上需要自动挂载的NFS首先测试,使用mount -a,NFS能成功挂载上来,说明fstab文件语法没有问题,NFS服务也没有问题。于是重启系统,期望它能自动挂载。奇怪的是,系统启动完后,NFS没有挂载上来,系统日志有下面的信息:mount: mount: mount to NFS server ’192.168.1.2’ failed:mount: System Error: No route to host.但是,一旦系统启动完成,尝试mount -a命令时,一切OK。由此看来应该是网络的问题。也许是网络起来后,但是路由还没有完全准备好,或者网络还在初始化状态,那么我们需要再自动挂载NFS 的自动化脚本上来一个短暂的休眠而保证网络能够初始化完成。修改/etc/init.d/netfs在(注意使用vim修改,不要使用图形化)[ ! -f /var/lock/subsys/portmap ] && service portmap startaction $”Mounting NFS filesystems: ” mount -a -t nfs,nfs4之间加上下面一行action $”Sleeping for 30 secs: ” sleep 30保存后,再测试,OK,你可以需要根据实际的环境来测试,不过30秒基本上能满足需求了。如果你能在系统日志中看到类似下面的信息,那表示一切正常kernel: bnx2: eth0 NIC Link is Up, 1000 Mbps full duplexnetfs: Sleeping for 30 secs: succeedednetfs: Mounting NFS filesystems: succeeded14.查看当前主机RPC状态:rpcinfo -p localhost

识别硬安装和软安装文件问题

Server IP为192.168.1.2,NFS Clinet IP为192.168.0.100。1.服务端安装NFS:yum install nfs-utils protmapnfs-utils包提供了NFS服务器程序和...

当网络或服务器有问题时,访问硬安装远程文件的程序与访问软安装远程文件的程序所出现的故障不同。

如果一台服务器未能响应一个硬安装请求,NFS 会显示消息:

NFS服务器主机名未响应,仍在尝试

因为客户机会反复尝试安装请求直到成功,所以硬安装远程文件系统导致程序挂起直到服务器响应。执行硬安装时请使用 mount 命令的 -bg 标志,这样如果服务器不响应,客户机就会在后台重试安装。

如果服务器未响应一个软安装请求,NFS 会显示消息:

连接超时

当一段时间的尝试没有成功后软安装远程文件系统返回一个错误。不幸的是在文件系统操作中很多程序不检查返回情况,因此在访问软安装文件时您不会看到该错误消息。然而,该 NFS 错误消息在控制台上显示。

获取 NFS 守护程序的当前状态

可以立即分别或全部获取 NFS 守护程序的当前状态。要分别获取 NFS 守护程序的当前状态,请运行:

lssrc -s Daemon

其中 Daemon 是由 SRC 控制的任何一个守护程序。例如,要获取 rpc.lockd 守护程序的当前状态,请运行:

lssrc -s rpc.lockd

要立即获取所有 NFS 守护程序的当前状态,请运行:

lssrc -a

识别NFS故障核对表

如果一台客户机当前有NFS故障,请执行以下操作:

  1. 验证网络连接是否正确。
  2. 按照 获取 NFS 守护程序的当前状态 中的指示信息,验证客户机中是否运行了 inetd , portmap 和 biod 守护程序。
  3. 验证正在安装的文件系统是否存在有效的安装点。
  4. 在客户机 shell 提示符下运行以下命令以验证服务器是否已启动并运行:

/usr/bin/rpcinfo -p server_name
如果服务器已启动,会显示程序、版本、协议和端口号的清单,类似以下内容:

program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 1025 mountd
100001 1 udp 1030 rstatd
100001 2 udp 1030 rstatd
100001 3 udp 1030 rstatd
100002 1 udp 1036 rusersd
100002 2 udp 1036 rusersd
100008 1 udp 1040 walld
100012 1 udp 1043 sprayd
100005 1 tcp 694 mountd
100003 2 udp 2049 nfs
100024 1 udp 713 status
100024 1 tcp 715 status
100021 1 tcp 716 nlockmgr
100021 1 udp 718 nlockmgr
100021 3 tcp 721 nlockmgr
100021 3 udp 723 nlockmgr
100020 1 udp 726 llockmgr
100020 1 tcp 728 llockmgr
100021 2 tcp 731 nlockmgr

如果没有返回类似的响应,请在服务器控制台上登录服务器并按 获取NFS守护程序的当前状态 中的指示信息检查 inetd 守护程序的状态。

  1. 验证 mountd 、 portmap 和 nfsd 守护程序正在NFS服务器上运行,请在客户机 shell 提示符下输入以下命令:
  2. /usr/bin/rpcinfo -u server_name mount
  3. /usr/bin/rpcinfo -u server_name portmap
    /usr/bin/rpcinfo -u server_name nfs
    如果守护程序在服务器运行,会返回以下响应:

program 100005 version 1 ready and waiting
program 100000 version 2 ready and waiting
program 100003 version 2 ready and waiting

程序号分别与命令对应,如前例中所示。如果没有返回类似的响应,请在服务器控制台上登录服务器并按照 获取 NFS 守护程序的当前状态 中的指示信息检查守护程序的状态。

  1. 验证服务器中上的 /etc/exports 文件是否列出客户机要安装的文件系统名称以及该文件系统是否已导出。输入以下命令进行操作:
    showmount -e server_name
    该命令列出了由 server_name 当前导出的所有文件系统。

异步写错误 当应用程序在 NFS 安装文件系统中写数据到一个文件时,写操作由 biod 守护程序调度为异步处理。如果在数据实际写入磁盘的同时在 NFS 服务器上出现错误,该错误会返回 NFS 客户机,且 biod 守护程序在 NFS 数据结构内部保存错误。然后在下一次该应用程序调用 fsync 或 close 函数时,存储的错误返回该应用程序。作为此类错误的结果,写错误在程序关闭文件前不会通知给该应用程序。此事件的一个典型示例是当服务器上的文件系统已满时,导致客户机尝试的写失败。

与其它网络服务一样,使用网络文件系统NFS服务器可能出现问题。对这些问题的故障诊断涉及理解跟踪 NFS 问题的策略、识别...

本文由澳门新葡亰app发布于新葡亰运维,转载请注明出处:NFS就是启动不了的,使用网络文件系统NFS服务器

关键词: