首页 > 代码库 > NFS网络文件系统服务配置、验证及错误解决

NFS网络文件系统服务配置、验证及错误解决

NFS网络文件系统服务配置、验证及错误解决


前期准备:

    1.至少准备一台服务器(nfs-server)和一台客户机(nfs-client)。老表测试用的服务器端用的系统是ubuntu,客户机用的是CentOS 6.5,所以有些地方操作不一样。


    2.给两台测试机都安装NFS服务和rpc服务。(一般安装NFS服务会自动安装rpc)

        安装:

          ubuntu:sudo apt-get install nfs-kernel-server

          CentOS:yum groupinstall "NFS file server"


配置服务:

    1.作服务器端的主机需要开启NFS服务和rpc服务,客户机只需开启rpc服务即可。

      nfs-server上:/etc/init.d/rpcbind start

技术分享

        root@nfs-server:~# /etc/init.d/nfs-kernel-server start

技术分享

        注意:开启的时候先开启rpc服务,再开启nfs服务。要不后边使用服务可能会报错。

            报错信息:clnt_create: RPC: Program not registered

            问题分析:rpcbind服务与NFS服务启动顺序不对,

            解决办法:先停掉nfs和rpc服务,再依次开启rpc和nfs服务

    nfs-client上:/etc/init.d/rpcbind start|/etc/init.d/rpcbind status

技术分享

        running代表rpc服务已开启。


    2.检查rpc服务是否开启:rpcinfo -p localhost 

        若服务开启不成功报错情况如下:

        nfs-server上:

技术分享

        nfs-client上:

技术分享

        解决办法:重新开启服务。


    3.把NFS服务设置为开机自启动。(ubuntu下用sysv-rc-conf设置,CentOS用chkconf设置,具体设置方法见老表博文:http://12058118.blog.51cto.com/12048118/1858680


    4.在nfs-server上配置/etc/exports文件(配置nfs服务的文件),配置后重启服务并检查

      a.配置服务(配置/etc/exports文件)
        root@nfs-server:~# vim /etc/exports

        配置内容的格式:目录 网站、IP地址、主机名或网段(括号里边写给客户端的权限(权限之间用逗号分割))
        #shared folder for whokk by wholj at 2016-10-16
        share/  192.168.1.106(rw,sync)

        注意:上边在配置的时候虽然给了客户端对共享目录具有写(w)的权限,但是服务器端的目录默认给其他的用户不具有写权限,所以客户机只可以对共享目录中的文件进行读操作。(客户机对共享目录中的文件拥有的权限是服务器目录权限和所给的共享权限的“权限与运算”结果)

        服务器上共享目录的权限:
        root@nfs-server:~# ll /share/ -ld
        drwxr-xr-x 2 root root 4096 Oct 16 21:50 /share//

      b.平滑重启NFS服务:/etc/init.d/nfs-kernel-server reload

         root@nfs-server:~# /etc/init.d/nfs-kernel-server reload
         [....] Reloading nfs-kernel-server configuration (via systemctl): nfs-ke[ ok server.service.

技术分享

        注意:当修改/etc/exports文件后一定要做这一步!

      c.本机(nfs-server)做检查:showmount -e localhost

         root@nfs-server:~# showmount -e localhost
         Export list for localhost:
         share/ 192.168.1.106

技术分享

      d.客户端(nfs-client)做检查:showmount -e 192.168.1.103

        [root@nfs-client ~]# showmount -e 192.168.1.103
        Export list for 192.168.1.103:
        share/ 192.168.1.106

技术分享

        此步检查可能出现的问题:连接不上
        解决办法:   

        第一步:ping 对方网址
        第二步:如果ping的同则用telnent查看端口
          报错信息:               
           root@wholj-qtk5:~# telnet 192.168.1.104 111
           Trying 192.168.1.104...
           telnet: Unable to connect to remote host: No route to host

          解决办法:关闭防火墙

          正确情况:
           root@wholj-qtk5:~# telnet 192.168.1.104 111
           Trying 192.168.1.104...
           Connected to 192.168.1.104.
           Escape character is ‘^]‘.

      e.当执行c和d两步时正常能显示出上面设置的共享目录,如果报如下错误:
        clnt_create: RPC: Program not registered

        解决办法:使用配置服务中的第1点注意中的解决办法


    5.挂载(在nfs-client上挂载):mount -t nfs 192.168.1.103:/share /mnt     

      技术分享          192.168.1.103:/share  272G   55G  204G  22% /mnt   #d此行代表压缩成功


测试:

    1.未改共享目录和文件的权限时测试结果如下(原因见a):
      nfs-client上:

       [root@nfs-clientk mnt]# ll
       total 4
       -rw-r--r--. 1 root root 22 Oct 16  2016 test.txt‘’
       [root@nfs-client mnt]# ls
       test.txt
       [root@nfs-client mnt]# cat test.txt
       #test NFS file server
       [root@nfs-client mnt]#  echo "add ABC" >>test.txt       
       -bash: test.txt: Permission denied

       出现Permission denied的原因:配置服务第4点中的注意

      nfs-server上:

       root@nfs-server:/share# ls
       test.txt
       root@nfs-server:/share# cat test.txt
       #test NFS file server
       root@nfs-server:/share# echo "add ABC" >>test.txt
       root@nfs-server:/share# cat test.txt
       #test NFS file server

       add ABC    

    2.修改权限前和修改之后测试

     a.在nfs-server中共享目录为默认权限(755)时在nfs-client上测试:
      [root@nfs-clien mnt]# touch file1
      touch: cannot touch `file1‘: Permission denied
     b.nfs-server中把共享目录的权限修改为777:
      root@nfs-server:~# chmod 777 /share/
      root@nfs-server~# ls -ld /share/
      drwxrwxrwx 2 root root 4096 Oct 16 22:28 /share/
      在nfs-clien上测试:

      [root@nfs-clien mnt]# touch file1
      [root@nfs-clien mnt]# ls
      file1  test.txt

     c.在nfs-server上将共享目录中的test.txt文件权限修改777:chmod 777 test.txt

      root@nfs-server:/share# ll test.txt
      -rw-r--r-- 1 root root 46 Oct 17 15:02 test.txt
      root@nfs-server:/share# chmod 777 test.txt
      root@nfs-server:/share# ll test.txt
      -rwxrwxrwx 1 root root 46 Oct 17 15:02 test.txt*
      在nfs-client上测试:

技术分享

总结:

    不要怕出现问题,一旦出现问题就去解决它。

    容易出错的点:

     1.开启服务顺序一定要注意,先开rpc服务,再开nfs服务。

     2.服务器上共享目录和文件给其他用户的权限和给客户机的权限的“与运算”结果的权限是客户机上对共享目录和文件所拥有的权限。

     3.老表的nfs-client是虚拟机,使用的是桥接。所以每次重启后的IP地址要变,所以配置/etc/exports文件的时候IP地址也要相应的改变,要不然将会出现共享不成功的情况。其实此问题更好的解决方法是直接在/etc/exports文件中写入网段地址,而不是写IP地址。

    经验:

     1.每一步后记得检查。

     2.ping和telnet检测网络和服务能不能到达很重要。

本文出自 “12048118” 博客,请务必保留此出处http://12058118.blog.51cto.com/12048118/1862781

NFS网络文件系统服务配置、验证及错误解决