NFS 、简言之、便是文件服务器
   在部署过程中、文件的读写权限是比教容易出错
   本博文按以下 6 个方面展开、但重点放在文件权限上、
  
   ● 原理
   ● /etc/exports
   ● 文件权限
   ● Server/Client 配置
   ● 2 个常用命令
   ● Troubleshoting
   ● 经验建议
  
   ㈠ 原理
     
      所谓一图胜千言、有图有真相
      Rocky 便随大流啦、放 2 张图片

     

     



     



     
      值得注意的是、启动 NFS 之前、portmap 要先启动
     
   ㈡ /etc/exports
     
      NFS 的部署其实很简单、分 3 步走战略:配置/etc/exports → 启动 portmap → 启动 NFS
      那么、万里长征第一步:配置 /etc/exports
      这个配置文件很简单、每一行最前面是要共享出来的目录
      然后、是这个目录可以依照不同的权限共享给不同的主机
      比如:
      /tmp/rokcy   192.168.1.0/24(ro)    *.fjnu.edu.com(rw,sync)
      格式说明:小括号()是设置权限参数的位置、主机名与小括号是连在一起
      主机名的设置主要有几个方式:
      ● 可以使用完整的 IP 或者 网段、例如:192.168.1.110 或 192.168.1.0/24
      ● 可以使用主机名称、不过这个名称要在/etc/hosts 或 DNS 里能找到、对于主机名支持通配符的使用、如* 或 ?
      权限方面的常见参数有:
      rw :读写;
      ro :只读;
      sync :同步模式,内存中数据时时写入磁盘;
      async :不同步,把内存中数据定期写入磁盘中;
      no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
      root_squash :和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
      all_squash :不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
      anonuid/anongid :要和root_squash 以及 all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid
      
   ㈢ 文件权限
     
      对于一个文件的写入权限、需要满足:
      (1)使用者账号,亦即 UID 的相关身份
      (2)NFS 服务器允许有写入的权限
      (3)文件系统确实具有 w 的权限
     
   ㈣ 2 个命令
     
      ① 在Client端使用:
         showmount -e IP或主机名
         查看可挂载的目录
     
      ② 在Server端使用:
         重新配置/etc/exports后可用:
         exportfs -avr
        
   ㈤ Troubleshoting
     
      ① 用户或客户端身份权限不符


  1. [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs 
  2. mount: localhost:/home/test failed, reason given by server: Permission denied 
[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
mount: localhost:/home/test failed, reason given by server: Permission denied


         解决方案:
         如果确定您的 IP 没有错误,那么请通知服务器端, 请管理员将你的 IP 加入 /etc/exports
        
      ② 服务器或客户端某些服务未启动:


  1. [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs 
  2. mount: RPC: Port mapper failure - RPC: Unable to receive 
  3.  
  4. [root@linux ~]# mount -t nfs localhost:/home/test /home/nfs 
  5. mount: RPC: Program not registered 
[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
mount: RPC: Port mapper failure - RPC: Unable to receive

[root@linux ~]# mount -t nfs localhost:/home/test /home/nfs
mount: RPC: Program not registered


         解决方案:
         要嘛就是 portmap 忘记开,要嘛就是服务器端的 nfs 忘记开!解决的方法就是去启动这两个咚咚啦!
        
      ③ 被防火墙档掉了:
       
         这个也很容易忘记了!那就是重新设定一下您的防火墙,这包含了两部份,包括 iptables 与 TCP_Wrappers !
         因为我们启动了 portmap ,这个东西有两个数据需要分享出来,一个是 port 111 需要提供出去,
         因此您的 iptables 规则当中,需要开放这个 port 喔
     
   ㈥ 经验建议
     
      如果 NFS 在高速环境下运行的话、建议加上:
      mount -t nfs -o nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768

Logo

更多推荐