项目

一般

简介

NFS 配置

范 益波大约 10 年 之前添加

  1. 参考资料
    1. http://www.cnblogs.com/mchina/archive/2013/01/03/2840040.html
    2. http://www.cnblogs.com/wander1129/archive/2013/04/09/3009949.html
  2. 安装(一般系统已默认安装)
    centos 5 :
    yum -y install nfs-utils portmap
    

    centos 6(在CentOS 6.3当中,portmap服务由rpcbind负责) :
    yum -y install nfs-utils rpcbind
    
  3. 系统进程
    1. nfsd : 基本的NFS守护进程,主要功能是管理客户端是否能够登录服务器
    2. mountd : 它是RPC安装守护进程,主要功能是管理NFS的文件系统。当客户端顺利通过nfsd登录NFS服务器后,在使用NFS服务所提供的文件前,还必须通过文件使用权限的验证。它会读取NFS的配置文件/etc/exports来对比客户端权限。
    3. portmap : 主要功能是进行端口映射工作。当客户端尝试连接并使用RPC服务器提供的服务(如NFS服务)时,portmap会将所管理的与服务对应的端口提供给客户端,从而使客户可以通过该端口向服务器请求服务。
  4. 文件
    1. /etc/exports : NFS服务的主要配置文件
    2. /usr/sbin/exportfs : NFS服务的管理命令
    3. /usr/sbin/showmount : 客户端的查看命令
    4. /var/lib/nfs/etab : 记录NFS分享出来的目录的完整权限设定值
    5. /var/lib/nfs/xtab : 记录曾经登录过的客户端信息
  5. 服务器端配置
    1. 创建共享目录
      [root@centos2 /]# mkdir /usr/local/test
      
    2. /etc/exports配置
      # 增加一行:
      /usr/local/test/ 192.168.1.226 (rw,no_root_squash,no_all_squash,sync)
      # 配置文件说明:
        /usr/local/test/ : 共享的目录,使用绝对路径。
        192.168.1.226    : 客户端的地址,地址可以是一个网段,一个IP地址或者是一个域名,域名支持通配符,如:*.youxia.com
        (rw,no_root_squash,no_all_squash,sync) :客户端权限,地址与权限中间没有空格,
             ## 权限说明:
                rw:read-write,可读写;
                ro:read-only,只读;
                sync:文件同时写入硬盘和内存;
                async:文件暂存于内存,而不是直接写入内存;
                no_root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。显然开启这项是不安全的。
                root_squash:NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用nobody或nfsnobody身份;
                all_squash:不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
                anonuid:匿名用户的UID值,通常是nobody或nfsnobody,可以在此处自行设定;
                anongid:匿名用户的GID值。
      
  6. NFS服务器启动
    1. 手动启动
      centos 5:
      [root@centos2 /]# service portmap start
      [root@centos2 /]# service nfs start
      

      centos6:
      [root@centos2 /]# service rpcbind start
      [root@centos2 /]# service nfs start
      
    2. 查询NFS服务器状态
      service portmap status
      service nfs status
      
    3. 停止NFS服务器
      service nfs stop
      service portmap stop
      
    4. 设置自启动:设置系统在指定的运行级别自动启动portmap和nfs服务
      1. 自启动
        chkconfig --list portmap
        chkconfig --list nfs
        
      2. 设置portmap和nfs服务在系统运行级别3和5自动启动
        chkconfig --level 35 portmap on
        chkconfig --level 35 nfs on
        
  7. 客户端挂载
    1. 创建需要挂载的目录
      [root@localhost ~]# mkdir /usr/local/test
      
    2. 测试挂载
      [root@localhost ~]# showmount -e 192.168.1.225
      Export list for 192.168.1.225:
      /usr/local/test 192.168.1.226
      
    3. 挂载
      [root@localhost ~]# mount -t nfs 192.168.1.225:/usr/local/test /usr/local/test
      
  8. 解除挂载
    [root@localhost ~]# umount -v /usr/local/test
    
  9. 服务器端防火墙设置(NFS 开启防墙配置)
    1. 修改/etc/service,添加以下内容(端口号必须在1024以下,且未被占用)
          # Local services  
          mountd 1011/tcp #rpc.mountd  
          mountd 1011/udp #rpc.mountd  
          rquotad 1012/tcp #rpc.rquotad  
          rquotad 1012/udp #rpc.rquotad
      
    2. 重起NFS服务
      service nfs restart
      
    3. 查询哪些端口被NFS占用
      rpcinfo -p
      # 如果找不到rpcinfo命令,请尝试:
      /usr/sbin/rpcinfo -p
      
    4. 添加防火墙例外
      将上述rpcinfo显示的nfs服务端口(portmapper, nlockmgr, rquotad, nfs, mountd)在防火墙中设置为例外,可用GUI设置