zoukankan      html  css  js  c++  java
  • Linux基础学习-NFS网络文件系统实时文件共享

    NFS网络文件系统

    如果大家觉得Samba服务程序的配置太麻烦了,那么你共享文件的主机都是Linux系统,那么推荐大家在客户端部署nfs服务来共享文件.nfs(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机客户端基于TCP/IP协议,像是用本地主机上的资源那样读写远程Linux系统上的共享文件.

    实验环境

    主机 操作系统 IP地址
    NFS服务器 RHEL7.4 192.168.56.15
    NFS客户端 CentOS7.4 192.168.56.5
    前期准备这里我把防火墙以及selinux都给关闭了.

    1 安装 NFS-Server 使用 yum install nfs-utils rpcbind -y 命令.

    [root@qdlinux ~]# yum install -y nfs-utils rpcbind
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager to register.
    dvd                                                                                       | 4.1 kB  00:00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package nfs-utils.x86_64 1:1.3.0-0.48.el7 will be installed
    --> Processing Dependency: gssproxy >= 0.7.0-3 for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: libtirpc >= 0.2.4-0.7 for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: libevent for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: libnfsidmap for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: quota for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: libevent-2.0.so.5()(64bit) for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: libnfsidmap.so.0()(64bit) for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    --> Processing Dependency: libtirpc.so.1()(64bit) for package: 1:nfs-utils-1.3.0-0.48.el7.x86_64
    ---> Package rpcbind.x86_64 0:0.2.0-42.el7 will be installed
    --> Running transaction check
    ---> Package gssproxy.x86_64 0:0.7.0-4.el7 will be installed
    --> Processing Dependency: libini_config.so.3(INI_CONFIG_1.1.0)(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libini_config.so.3(INI_CONFIG_1.2.0)(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libref_array.so.1(REF_ARRAY_0.1.1)(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libverto-module-base for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libbasicobjects.so.0()(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libcollection.so.2()(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libini_config.so.3()(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    --> Processing Dependency: libref_array.so.1()(64bit) for package: gssproxy-0.7.0-4.el7.x86_64
    ---> Package libevent.x86_64 0:2.0.21-4.el7 will be installed
    ---> Package libnfsidmap.x86_64 0:0.25-17.el7 will be installed
    ---> Package libtirpc.x86_64 0:0.2.4-0.10.el7 will be installed
    ---> Package quota.x86_64 1:4.01-14.el7 will be installed
    --> Processing Dependency: quota-nls = 1:4.01-14.el7 for package: 1:quota-4.01-14.el7.x86_64
    --> Processing Dependency: tcp_wrappers for package: 1:quota-4.01-14.el7.x86_64
    --> Running transaction check
    ---> Package libbasicobjects.x86_64 0:0.1.1-27.el7 will be installed
    ---> Package libcollection.x86_64 0:0.6.2-27.el7 will be installed
    ---> Package libini_config.x86_64 0:1.3.0-27.el7 will be installed
    --> Processing Dependency: libpath_utils.so.1(PATH_UTILS_0.2.1)(64bit) for package: libini_config-1.3.0-27.el7.x86_64
    --> Processing Dependency: libpath_utils.so.1()(64bit) for package: libini_config-1.3.0-27.el7.x86_64
    ---> Package libref_array.x86_64 0:0.1.5-27.el7 will be installed
    ---> Package libverto-tevent.x86_64 0:0.2.5-4.el7 will be installed
    ---> Package quota-nls.noarch 1:4.01-14.el7 will be installed
    ---> Package tcp_wrappers.x86_64 0:7.6-77.el7 will be installed
    --> Running transaction check
    ---> Package libpath_utils.x86_64 0:0.2.1-27.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =================================================================================================================
     Package                        Arch                  Version                           Repository          Size
    =================================================================================================================
    Installing:
     nfs-utils                      x86_64                1:1.3.0-0.48.el7                  dvd                398 k
     rpcbind                        x86_64                0.2.0-42.el7                      dvd                 59 k
    Installing for dependencies:
     gssproxy                       x86_64                0.7.0-4.el7                       dvd                105 k
     libbasicobjects                x86_64                0.1.1-27.el7                      dvd                 25 k
     libcollection                  x86_64                0.6.2-27.el7                      dvd                 41 k
     libevent                       x86_64                2.0.21-4.el7                      dvd                214 k
     libini_config                  x86_64                1.3.0-27.el7                      dvd                 63 k
     libnfsidmap                    x86_64                0.25-17.el7                       dvd                 49 k
     libpath_utils                  x86_64                0.2.1-27.el7                      dvd                 27 k
     libref_array                   x86_64                0.1.5-27.el7                      dvd                 26 k
     libtirpc                       x86_64                0.2.4-0.10.el7                    dvd                 89 k
     libverto-tevent                x86_64                0.2.5-4.el7                       dvd                9.0 k
     quota                          x86_64                1:4.01-14.el7                     dvd                179 k
     quota-nls                      noarch                1:4.01-14.el7                     dvd                 91 k
     tcp_wrappers                   x86_64                7.6-77.el7                        dvd                 79 k
    
    Transaction Summary
    =================================================================================================================
    Install  2 Packages (+13 Dependent packages)
    
    Total download size: 1.4 M
    Installed size: 4.1 M
    Downloading packages:
    -----------------------------------------------------------------------------------------------------------------
    Total                                                                            2.5 MB/s | 1.4 MB  00:00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : libref_array-0.1.5-27.el7.x86_64                                                             1/15 
      Installing : libcollection-0.6.2-27.el7.x86_64                                                            2/15 
      Installing : libbasicobjects-0.1.1-27.el7.x86_64                                                          3/15 
      Installing : libtirpc-0.2.4-0.10.el7.x86_64                                                               4/15 
      Installing : rpcbind-0.2.0-42.el7.x86_64                                                                  5/15 
      Installing : 1:quota-nls-4.01-14.el7.noarch                                                               6/15 
      Installing : libpath_utils-0.2.1-27.el7.x86_64                                                            7/15 
      Installing : libini_config-1.3.0-27.el7.x86_64                                                            8/15 
      Installing : tcp_wrappers-7.6-77.el7.x86_64                                                               9/15 
      Installing : 1:quota-4.01-14.el7.x86_64                                                                  10/15 
      Installing : libevent-2.0.21-4.el7.x86_64                                                                11/15 
      Installing : libnfsidmap-0.25-17.el7.x86_64                                                              12/15 
      Installing : libverto-tevent-0.2.5-4.el7.x86_64                                                          13/15 
      Installing : gssproxy-0.7.0-4.el7.x86_64                                                                 14/15 
      Installing : 1:nfs-utils-1.3.0-0.48.el7.x86_64                                                           15/15 
      Verifying  : libverto-tevent-0.2.5-4.el7.x86_64                                                           1/15 
      Verifying  : rpcbind-0.2.0-42.el7.x86_64                                                                  2/15 
      Verifying  : 1:quota-4.01-14.el7.x86_64                                                                   3/15 
      Verifying  : libtirpc-0.2.4-0.10.el7.x86_64                                                               4/15 
      Verifying  : libnfsidmap-0.25-17.el7.x86_64                                                               5/15 
      Verifying  : libini_config-1.3.0-27.el7.x86_64                                                            6/15 
      Verifying  : libbasicobjects-0.1.1-27.el7.x86_64                                                          7/15 
      Verifying  : libevent-2.0.21-4.el7.x86_64                                                                 8/15 
      Verifying  : tcp_wrappers-7.6-77.el7.x86_64                                                               9/15 
      Verifying  : libpath_utils-0.2.1-27.el7.x86_64                                                           10/15 
      Verifying  : 1:quota-nls-4.01-14.el7.noarch                                                              11/15 
      Verifying  : gssproxy-0.7.0-4.el7.x86_64                                                                 12/15 
      Verifying  : libcollection-0.6.2-27.el7.x86_64                                                           13/15 
      Verifying  : libref_array-0.1.5-27.el7.x86_64                                                            14/15 
      Verifying  : 1:nfs-utils-1.3.0-0.48.el7.x86_64                                                           15/15 
    
    Installed:
      nfs-utils.x86_64 1:1.3.0-0.48.el7                         rpcbind.x86_64 0:0.2.0-42.el7                        
    
    Dependency Installed:
      gssproxy.x86_64 0:0.7.0-4.el7        libbasicobjects.x86_64 0:0.1.1-27.el7 libcollection.x86_64 0:0.6.2-27.el7
      libevent.x86_64 0:2.0.21-4.el7       libini_config.x86_64 0:1.3.0-27.el7   libnfsidmap.x86_64 0:0.25-17.el7   
      libpath_utils.x86_64 0:0.2.1-27.el7  libref_array.x86_64 0:0.1.5-27.el7    libtirpc.x86_64 0:0.2.4-0.10.el7   
      libverto-tevent.x86_64 0:0.2.5-4.el7 quota.x86_64 1:4.01-14.el7            quota-nls.noarch 1:4.01-14.el7     
      tcp_wrappers.x86_64 0:7.6-77.el7    
    
    Complete!
    
    

    2 启动 NFS-Server

    [root@qdlinux ~]# systemctl start rpcbind
    [root@qdlinux ~]# systemctl enable rpcbind
    [root@qdlinux ~]# systemctl start nfs-server.service 
    [root@qdlinux ~]# systemctl enable nfs-server.service 
    Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
    
    

    启动和启用NFS服务程序,由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用),服务将NFS服务器的IP地址和端口号等信息发送给客户端.因此,在启动NFS服务之前,还需要顺带重启并启动rpcbind服务,这里将两个服务一并加入到开机启动项中.

    3 可以使用 rpcbind -p 查看一下注册的信息.

    [root@qdlinux ~]# rpcinfo -p
       program vers proto   port  service
        100000    4   tcp    111  portmapper
        100000    3   tcp    111  portmapper
        100000    2   tcp    111  portmapper
        100000    4   udp    111  portmapper
        100000    3   udp    111  portmapper
        100000    2   udp    111  portmapper
        100024    1   udp  43946  status
        100024    1   tcp  38188  status
        100005    1   udp  20048  mountd
        100005    1   tcp  20048  mountd
        100005    2   udp  20048  mountd
        100005    2   tcp  20048  mountd
        100005    3   udp  20048  mountd
        100005    3   tcp  20048  mountd
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100227    3   tcp   2049  nfs_acl
        100003    3   udp   2049  nfs
        100003    4   udp   2049  nfs
        100227    3   udp   2049  nfs_acl
        100021    1   udp  35724  nlockmgr
        100021    3   udp  35724  nlockmgr
        100021    4   udp  35724  nlockmgr
        100021    1   tcp  44097  nlockmgr
        100021    3   tcp  44097  nlockmgr
        100021    4   tcp  44097  nlockmgr
    
    

    4 查看系统相关进程信息

    [root@qdlinux ~]# ps -ef | egrep "rpc|nfs"
    rpc        1959      1  0 16:37 ?        00:00:00 /sbin/rpcbind -w
    rpcuser    2039      1  0 16:38 ?        00:00:00 /usr/sbin/rpc.statd
    root       2047      2  0 16:38 ?        00:00:00 [rpciod]
    root       2057      1  0 16:38 ?        00:00:00 /usr/sbin/rpc.mountd
    root       2058      1  0 16:38 ?        00:00:00 /usr/sbin/rpc.idmapd
    root       2068      2  0 16:38 ?        00:00:00 [nfsd4_callbacks]
    root       2074      2  0 16:38 ?        00:00:00 [nfsd]
    root       2075      2  0 16:38 ?        00:00:00 [nfsd]
    root       2076      2  0 16:38 ?        00:00:00 [nfsd]
    root       2077      2  0 16:38 ?        00:00:00 [nfsd]
    root       2078      2  0 16:38 ?        00:00:00 [nfsd]
    root       2079      2  0 16:38 ?        00:00:00 [nfsd]
    root       2080      2  0 16:38 ?        00:00:00 [nfsd]
    root       2081      2  0 16:38 ?        00:00:00 [nfsd]
    root       2135   1633  0 16:52 pts/0    00:00:00 grep -E --color=auto rpc|nfs
    
    

    5 NFS服务端配置共享目录

    参数 作用
    ro 只读
    rw 读写
    root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据
    async 优先将数据保存到内存,然后再写入到硬盘,这样效率更高,但可能会丢失数据
    [root@qdlinux ~]# vim /etc/exports
    /nfsfile 192.168.56.*(rw,sync,all_squash)
    
    //创建需要共享的目录
    [root@qdlinux ~]# mkdir /nfsfile
    
    [root@qdlinux ~]# systemctl restart nfs-server.service 
    [root@qdlinux ~]# cat /var/lib/nfs/etab 
    /nfsfile	192.168.56.*(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,secure,root_squash,all_squash)
    
    //查看一下id=65534是哪一个用户
    [root@qdlinux ~]# grep "65534" /etc/passwd
    nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
    
    //修改一下`/nfsfile`的权限,这里也可以把目录所属主和所属组改为nfsnobody或者直接给成777权限
    [root@qdlinux ~]# chmod -Rf nfsnobody:nfsnobody /nfsfile/
    
    //在目录下写入一个文件用于测试
    [root@qdlinux ~]# echo "welecome to qdlinux" > /nfsfile/readme
    [root@qdlinux ~]# ll  /nfsfile/
    total 4
    -rw-r--rwx 1 root root 20 Aug 16 17:30 readme
    [root@qdlinux ~]# 
    
    

    NFS客户端的配置步骤十分简单,先使用 showmount 命令查询NFS服务器的远程共享信息,其输出格式为"共享的目录名称 允许使用客户端地址".

    参数 作用
    -e 显示NFS服务器的共享李彪
    -a 显示本机挂载的文件资源的情况
    -v 显示版本号
    [root@qdlinux ~]# showmount -e 192.168.56.15
    Export list for 192.168.56.15:
    /nfsfile 192.168.56.*
    
    

    6 客户端测试

    [root@qdlinux ~]# yum install nfs-utils rpcbind -y
    [root@qdlinux ~]# systemctl start rpcbind
    [root@qdlinux ~]# systemctl is-enabled rpcbind
    enabled
    [root@qdlinux ~]# systemctl is-active rpcbind
    active
    
    //查询一下服务是否运行
    [root@qdlinux ~]# systemctl status rpcbind
    ● rpcbind.service - RPC bind service
       Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
       Active: active (running) since Thu 2018-08-16 14:05:32 CST; 3h 48min ago
     Main PID: 568 (rpcbind)
        Tasks: 1
       CGroup: /system.slice/rpcbind.service
               └─568 /sbin/rpcbind -w
    
    Aug 16 14:05:27 qdlinux.com systemd[1]: Starting RPC bind service...
    Aug 16 14:05:32 qdlinux.com systemd[1]: Started RPC bind service.
    
    //在客户端使用`showmount -e`命令查询一下
    [root@qdlinux ~]# showmount -e 192.168.56.15 NFS服务器共享列表
    Export list for 192.168.56.15:
    /nfsfile 192.168.56.*
    
    

    7 NFS客户端挂载

    在NFS客户端创建一个挂在目录,使用mount命令加-t参数,指定要挂在的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(客户端)的目录.

    [root@qdlinux /]# mkdir /data
    [root@qdlinux /]# mount -t nfs 192.168.56.15:/nfsfile /data
    
    //现在已经挂载成功了,可以看到在NFS服务器上创建的文件了.
    

    如果希望NFS文件共享服务能一直有效,需要将其写入到 fstab 文件中.

    [root@qdlinux data]# vim /etc/fstab
    192.168.56.15:/nfsfile                    /data                   nfs     defaults        0 0
    
    1 如果NFS服务器宕机,强制卸载umount -lf /data
    2 [root@qdlinux data]# umount /data
      umount.nfs4: /data: device is busy
      出现这种情况时,退出挂载目录然后在卸载
    

    8 autofs自动挂载服务

    autofs服务程序是一种Linux系统守护进程,当检测到用户试图去访问一个尚未挂载的文件系统时,将自动挂载该文件系统,我们将挂载信息写入/etc/fstab文件后,系统在每次开机时都自动将其挂载,而autofs自动挂载服务是用户需要使用该文件系统时才会去动态挂载,从而节约了网络资源和服务器的硬件资源.

    [root@qdlinux /]# yum install autofs -y
    
    

    直接挂载方式,本地的挂载点是绝对路径

    [root@qdlinux /]# vim /etc/auto.master.d/nfs.autofs
    /-      /etc/auto.nfs_direct
    [root@qdlinux /]# vim /etc/auto.nfs_direct 
    /data   -rw,sync,soft   192.168.56.15:/nfsfile
    
    //mount查看一下
    /etc/auto.nfs_direct on /data type autofs (rw,relatime,fd=18,pgrp=6217,timeout=300,minproto=5,maxproto=5,direct,pipe_ino=79495)
    
    

    间接挂载方式

    [root@qdlinux ~]# mkdir -p /public/share
    [root@qdlinux ~]# chown -Rf nfsnobody:nfsnobody /public/share
    [root@qdlinux ~]# vim /etc/exports
    /public/share 192.168.56.*(rw,sync,all_squash)
    //重新启动nfs-server
    
    [root@qdlinux ~]# showmount -e 192.168.56.15
    Export list for 192.168.56.15:
    /public/share 192.168.56.*
    /nfsfile      192.168.56.*
    
    [root@qdlinux /]# mkdir /test
    [root@qdlinux /]# vim /etc/auto.master.d/share.autofs
    /test  /etc/share.nfs_share
    [root@qdlinux /]# vim /etc/share.nfs_share
    *       -rw,sync,soft   192.168.56.15:/public/&
    //重新启动autofs服务
    
    

    现在可以访问了,客户端当你切换到/test/share时可以创建文件服务端实时同步.

  • 相关阅读:
    Zoj 3511 线段树
    HDU 3340 Rain in ACStar 线段树+简单几何?
    BZOJ 2282 & 树的直径
    BZOJ 1121 & science
    BZOJ 1067 & Interval_Tree
    BZOJ 1001 & SPFA
    UVa 11181 条件概率
    并查集——启发式合并,路径压缩
    GSS系列(1)——GSS1&&GSS3
    评测脚本
  • 原文地址:https://www.cnblogs.com/qdlinux/p/9489887.html
Copyright © 2011-2022 走看看