nfs 的安装与使用

来源:互联网 发布:淘宝商城墙纸 编辑:程序博客网 时间:2024/06/04 19:34

 


 

一、 NFS简介

   NFS是Network File System的简称,即网络文件系统。NFS是系统间进行文件共享

   的一种网络协议,它允许用户像访问本地文件一样去访问网络上共享的文。它

   是UNIX系统中进行磁盘文件共享的方法。

 

   在NFS的应用结构中,有服务器(Server)和客户端(Client)两种角色,NFS客户端

   通过挂载NFS文件系统的方式访问NFS服务器中输出的共享目录。 在同一台主机中,既可

  以是NFS服务器,也可以是NFS客户端。

 

   实际上就跟普通的mount一样,平常的文件系统的mount,我们是将某个盘格式

   化为文件系统后,挂载到某个目录,这样我们就可以在这个目录下读写文件,也就

   是在对应的磁盘上读写。 nfs文件系统的使用就是将远程服务器机器上某个目录,

   挂载到本地的某个目录,这样在访问本地该目录的时候,实际上就是在远程的那个

   目录上进行对应的操作。

 

 

   NFS 的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立

   于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。

  NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call)

   是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但

   NFS却能让我们通过网络进行资料的分享,这是因为NFS使用了一些其它的传输协议。而这些传输协

   议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC SERVER。

   所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS CLIENT。这样SERVER和CLIENT

   才能通过RPC来实现PROGRAM PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而

   RPC是负责负责信息的传输。

 

 

二、 NFS准备和配置工作

     1.服务器和客户端我们都采用linux(fedora --f20),为了正常使用NFS,我们需要在服务器和客户端

       安装NFS(在网上一些文章上说要安装portmap,新的发布版本上已经不需要了)

 

              sudo yum install nfs-utils

 

      ( 这里可以通过yum list|grep nfs* 来查看软件包里面是否有nfs相关的包)

       安装完之后,可以是rpm -qa|grep nfs进行查看

 

    2. 设置配置文件,在/etc/exports中添加:

        <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]

         /tmp/nfs_test *(rw,no_root_squash,insecure)

       (要先设置配置文件,再启动nfs服务,否则提示/

    

    3. 启动nfs服务

         systemctl enable nfs-server.service

         systemctl start nfs-server.service

       

    4.查看:

       exportfs

       showmount -e

       showmount -a

    5. 在客户端mount 服务器端设置 共享目录,mount到本地目录上

       mount -t nfs 9.151.141.111:/tmp/nfs_test /mnt

       然后可以在/mnt目录里写文件,建目录,copy文件等等,实际上都是在

      服务器端/tmp/nfs_test里面进行的。

      也可以将两台机器上的文件相互copy...做备份也方便。

      unmount /mnt即可。

           (当mount时候提示资源忙 ,可以使用fuser:

             fuser通常被用在诊断系统的“resource busy”问题,通常是在你希望umount指定的挂载点得

             时候遇到。 如果你希望kill所有正在使用某一指定的file, file system or sockets的进程的时候,

            你可以使用-k 选项。

            格式为: $ fuser -m -v  (nfs挂载点) 回车执行后得到的结果依次是:用户 进程号 权限 命令

           此命令可以查看到访问此设备的所有进程,停止进程后umount.

            如果添加参数 -k则可以一次性将所有当前访问nfs共享盘阵的进程停止 也可以加-i 打开交互

            显示,以便用户确认

 

          #fuser -v -m 挂载点      即可查处 用户 PID等,KILL掉该进程后再umount.

          #umount -l 挂载点         选项 –l 并不是马上umount,而是在该目录空闲后再umount.

         还可以先用命令 ps aux 来查看占用设备的程序PID,然后用命令kill来杀死占用设备的进程,这样

         就umount的NFS服务安全非常放心了.

 

 

 

 

、misc

      在启动nfs服务的时候,使用了/etc/init.d/*** start 和service nfs star 都失败了,

      [root@localhost admin]# service nfs start
      Redirecting to /bin/systemctl  start nfs.service
      Failed to issue method call: Unit nfs.service failed to load: No such file or

      directory. See system logs and 'systemctl status nfs.service' for details.


     [root@localhost admin]# systemctl status nfs.service
       nfs.service
       Loaded: error (Reason: No such file or directory)
       Active: inactive (dead)

 

 

      因为系统启动和管理服务已经变为最新的systemd了,要通过

                systemctl start   ***.service

         的方式启动程序, (通过 systemctl enable ***.service 开机自启动)

        查找 ***.service的具体名字,在/lib/systemd/system/ 目录下的脚本,

      nfs-utils 的是 nfs-server.service。

               systemctl start nfs-server.service

      journalctl -xn 可以看具体出错细节。

 

          

Jun 23 19:42:41 local-bj systemd[1]: Starting NFS server and services...

Jun 23 19:42:41 local-bj rpc.nfsd[30236]: rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)

Jun 23 19:42:41 local-bj rpc.nfsd[30236]: rpc.nfsd: unable to set any sockets for nfsd

Jun 23 19:42:41 local-bj systemd[1]: nfs-server.service: main process exited, code=exited, status=1/FAILURE

Jun 23 19:42:41 local-bj systemd[1]: Failed to start NFS server and services.

Jun 23 19:42:41 local-bj systemd[1]: Unit nfs-server.service entered failed state.

前面介绍了nfs是依赖rpc协议的,所以要启动rpc服务。

[root@local-bj nfs2]$ /bin/systemctl restart  rpcbind.service

[root@local-bj nfs2]$ /bin/systemctl restart nfs-server.service

 

 


   四、参考:

           http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html

           https://www.ibm.com/developerworks/community/blogs/IBMzOS/entry/20130907?lang=zh

0 0