NFS介绍

  • NFS是Network File System的缩写
  • NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netapp公司参与并主导开发,最新为4.1版本(2010年)
  • NFS数据传输基于RPC协议,RPC为Remote Procedure Call的简写,(远程过程调用)为NFS服务提供支持。
  • NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致。用户在B和C上更新了文件,A上也实时更新。
  • NFS介绍,服务端安装配置及配置选项
    • NFS服务不会监听端口,通信的过程由rpc服务来监听端口111实现通信

      NFS服务端安装配置

  • akuilinux01作为服务端,并安装yum install -y nfs-utils rpcbind
  • 在服务端上写入以下配置
    [root@akuilinux01 ~]# vim /etc/exports
    /home/nfstestdir  #共享的目录 192.168.21.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)
  • 服务端创建共享目录
    [root@akuilinux01 ~]# mkdir /home/nfstestdir
    [root@akuilinux01 ~]# chmod 777 /home/nfstestdi
  • 服务端启动服务并开机启动
    [root@akuilinux01 ~]# systemctl start rpcbind
    [root@akuilinux01 ~]# systemctl start nfs
    [root@akuilinux01 ~]# systemctl enable rpcbind 
    [root@akuilinux01 ~]#  systemctl enable nfs
    Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
    [root@akuilinux01 ~]# ps aux |grep rpc
    rpc       2376  0.0  0.0  64956  1404 ?        Ss   08:51   0:00 /sbin/rpcbind -w
    rpcuser   2394  0.0  0.0  42376  1760 ?        Ss   08:51   0:00 /usr/sbin/rpc.statd
    root      2401  0.0  0.0      0     0 ?        S<   08:51   0:00 [rpciod]
    root      2411  0.0  0.0  42564   944 ?        Ss   08:51   0:00 /usr/sbin/rpc.mountd
    root      2412  0.0  0.0  43816   544 ?        Ss   08:51   0:00 /usr/sbin/rpc.idmapd
    root      2504  0.0  0.0 112676   976 pts/1    S+   08:53   0:00 grep --color=auto rpc
    [root@akuilinux01 ~]# ps aux |grep nfs
    root      2424  0.0  0.0      0     0 ?        S<   08:51   0:00 [nfsd4_callbacks]
    root      2430  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2431  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2432  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2433  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2434  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2435  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2436  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2437  0.0  0.0      0     0 ?        S    08:51   0:00 [nfsd]
    root      2506  0.0  0.0 112676   980 pts/1    S+   08:54   0:00 grep --color=auto nfs

    NFS配置选项

  • rw 读写
  • ro 只读
  • sync 同步模式,内存数据实时写入磁盘
  • async 非同步模式
  • no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大,相当于root在本地磁盘读写
  • root_squash 与上面选项相对,客户端上的root用户收到约束,被限定成某个普通用户
  • all_squash 客户端上所有用户在使用NFS共享目录时都被限定为一个普通用户
  • anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
  • 客户端操作
    • akuilinux02作为客户端,安装yum install -y nfs-utils
    • showmount -e 192.168.133.130 //该ip为NFS服务端ip,查看是否有权限连接服务端,如果不能连接,查看服务端NFS服务是否启动,有没有监听111端口,检查服务端和客户端firewalld和SELinux防火墙是否关闭。
      [root@akuilinux02 ~]# showmount -e 192.168.21.128
      Export list for 192.168.21.128  
      /home/nfstestdir 192.168.21.0/24
    • 挂载目录
      [root@akuilinux02 ~]# mount -t nfs 192.168.21.128:/home/nfstestdir /mnt
      [root@akuilinux02 ~]# df -h
      文件系统                         容量  已用  可用 已用% 挂载点
      /dev/sda3                         18G  1.1G   17G    6% /
      devtmpfs                         907M     0  907M    0% /dev
      tmpfs                            916M     0  916M    0%   /dev/shm
      tmpfs                            916M  8.7M  908M    1% /run
      tmpfs                            916M     0  916M    0% /sys/fs/cgroup
      /dev/sda1                        197M  113M   85M   58% /boot
      tmpfs                            184M     0  184M    0% /run/user/0
      192.168.21.128:/home/nfstestdir   18G  7.4G   11G   42% /mnt
    • 测试
      [root@akuilinux02 ~]# touch /mnt/aminglinux.txt
      [root@akuilinux02 ~]# ls -l /mnt/aminglinux.txt
      -rw-r--r-- 1 1000 1000 0 6月  22 09:06 /mnt/aminglinux.txt
      [root@akuilinux01 ~]# ll /home/nfstestdir/
      总用量 0
      -rw-r--r-- 1 akui akui 0 6月  22 09:06 aminglinux.txt
      #因为限定了属主和属组所以显示1000,和akui(01机器的1000为akui)