美文网首页
2020-03-03 配置NFS服务器端

2020-03-03 配置NFS服务器端

作者: 阿丧小威 | 来源:发表于2020-03-03 15:30 被阅读0次

    1. 环境准备

    [root@nfs01 ~]# cat /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    [root@nfs01 ~]# uname -r
    3.10.0-957.el7.x86_64
    [root@nfs01 ~]# uname -m
    x86_64
    

    NFS客户端操作系统及内核版本信息和NFS服务器端一致。

    2. NFS服务器端的安装启动

    2.1 NFS软件列表

    要部署NFS服务,需要安装以下软件包。

    • nfs-utils:NFS服务的主程序,包括rpc.nfsd、rpc.mountd这两个daemons和相关文档说明,以及执行命令文件等。
    • rpcbind:CentOS6/7环境下RPC主程序。NFS可视为一个RPC程序,在启动任何一个RPC程序之前,需要做好端口和功能的映射工作,这个映射工作就是由rpcbind服务来完成的。因此,在提供NFS服务之前必须先启动rpcbind服务才行。

    2.2 安装NFS软件包

    [root@nfs01 ~]# rpm -qa nfs-utils rpcbind    ---默认没安装,所以没显示结果
    [root@nfs01 ~]# yum install -y nfs-utils rpcbind
    [root@nfs01 ~]# rpm -qa nfs-utils rpcbind
    rpcbind-0.2.0-48.el7.x86_64
    nfs-utils-1.3.0-0.65.el7.x86_64
    

    2.3 启动NFS相关服务

    2.3.1 启动rpcbind服务

    因为NFS及其辅助程序都是基于RPC协议的(使用的端口为111),所以首先要确保系统中运行了rpcbind服务。启动的实际操作如下:

    [root@nfs01 ~]# systemctl status rpcbind    ---检查rpcbind服务状态
    ● rpcbind.service - RPC bind service
       Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
       Active: inactive (dead)    ---停服状态
    [root@nfs01 ~]# systemctl start rpcbind    ---开启rpcbind服务
    [root@nfs01 ~]# systemctl status rpcbind
    ● rpcbind.service - RPC bind service
       Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
       Active: active (running) since 一 2020-03-02 23:15:54 CST; 1min 10s ago
      Process: 7125 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
     Main PID: 7126 (rpcbind)
       CGroup: /system.slice/rpcbind.service
               └─7126 /sbin/rpcbind -w
    3月 02 23:15:54 nfs01 systemd[1]: Starting RPC bind service...
    3月 02 23:15:54 nfs01 systemd[1]: Started RPC bind service.
    [root@nfs01 ~]# systemctl enable rpcbind    ---设置开机自启动
    [root@nfs01 ~]# netstat -lntup|egrep "rpcbind|111"    ---查看启动端口和进程情况
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
    tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
    udp        0      0 0.0.0.0:941             0.0.0.0:*                           7126/rpcbind        
    udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
    udp6       0      0 :::941                  :::*                                7126/rpcbind        
    udp6       0      0 :::111                  :::*                                1/systemd           
    [root@nfs01 ~]# rpcinfo -p localhost    ---查看NFS服务向RPC服务注册的端口信息,因为NFS服务还没启用,因此,没太多注册的端口映射信息。
       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
    

    值得注意的是,CentOS7.6环境下停止了rpcbind服务,服务依然继续,并没有真的停止。

    [root@nfs01 ~]# systemctl stop rpcbind
    Warning: Stopping rpcbind.service, but it can still be activated by:
      rpcbind.socket    ---提示说rpcbind还是活的状态,由rpcbind.socket支持的
    [root@nfs01 ~]# rpcinfo -p localhost    ---依然有注册端口
       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
    [root@nfs01 ~]# netstat -lntup|egrep "rpcbind|111"    ---依然有进程和端口
    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
    tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
    udp        0      0 0.0.0.0:1000            0.0.0.0:*                           7185/rpcbind        
    udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
    udp6       0      0 :::1000                 :::*                                7185/rpcbind        
    udp6       0      0 :::111                  :::*                                1/systemd           
    [root@nfs01 ~]# systemctl stop rpcbind.socket    ---把提示的rpcbind.socket也停了
    [root@nfs01 ~]# netstat -lntup|egrep "rpcbind|111"    ---没了
    [root@nfs01 ~]# rpcinfo -p localhost    ---没了
    rpcinfo: can't contact portmapper: RPC: Remote system error - Connection refused
    [root@nfs01 ~]# systemctl start rpcbind    ---还原
    
    2.3.2 启动NFS服务
    [root@nfs01 ~]# systemctl start nfs    ---启动NFS服务
    [root@nfs01 ~]# 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@nfs01 ~]# systemctl status nfs    ---查看NFS启动状态
    ● nfs-server.service - NFS server and services
       Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; enabled; vendor preset: disabled)
       Active: active (exited) since 二 2020-03-03 00:30:55 CST; 42s ago
     Main PID: 7428 (code=exited, status=0/SUCCESS)
       CGroup: /system.slice/nfs-server.service
    3月 03 00:30:55 nfs01 systemd[1]: Starting NFS server and services...
    3月 03 00:30:55 nfs01 systemd[1]: Started NFS server and services.
    [root@nfs01 ~]# rpcinfo -p localhost    ---查看NFS服务向RPC服务注册的端口信息,NFS服务启动后,发现端口信息就增多了,有很多端口和功能的对应
       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  53085  status
        100024    1   tcp  60295  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  42767  nlockmgr
        100021    3   udp  42767  nlockmgr
        100021    4   udp  42767  nlockmgr
        100021    1   tcp  31613  nlockmgr
        100021    3   tcp  31613  nlockmgr
        100021    4   tcp  31613  nlockmgr
    

    2.4 NFS服务常见进程详解说明

    从上面的NFS服务的启动过程可以看出,运行NFS服务默认需要启动的服务或进程有NFS daemon、NFS mountd(rpc.mound)、rpc.statd、rpc.idmapd等。可以通过执行以下命令查看启动NFS后系统中运行的NFS相关进程:

    [root@nfs01 ~]# ps -ef | egrep "rpc|nfs"
    root       6685      1  0 3月02 ?       00:00:00 /sbin/dhclient -1 -q -lf /var/lib/dhclient/dhclient--ens33.lease -pf /var/run/dhclient-ens33.pid -H nfs01 ens33
    rpc        7206      1  0 3月02 ?       00:00:00 /sbin/rpcbind -w
    rpcuser    7378      1  0 00:30 ?        00:00:00 /usr/sbin/rpc.statd
    ---检查文件一致性
    root       7380      2  0 00:30 ?        00:00:00 [rpciod]
    root       7424      1  0 00:30 ?        00:00:00 /usr/sbin/rpc.mountd    ---权限管理验证
    root       7425      1  0 00:30 ?        00:00:00 /usr/sbin/rpc.idmapd    ---名称映射进程
    root       7430      2  0 00:30 ?        00:00:00 [nfsd4_callbacks]
    root       7436      2  0 00:30 ?        00:00:00 [nfsd]    ---主进程,管理登录ID身份判别等
    root       7437      2  0 00:30 ?        00:00:00 [nfsd]
    root       7438      2  0 00:30 ?        00:00:00 [nfsd]
    root       7439      2  0 00:30 ?        00:00:00 [nfsd]
    root       7440      2  0 00:30 ?        00:00:00 [nfsd]
    root       7441      2  0 00:30 ?        00:00:00 [nfsd]
    root       7442      2  0 00:30 ?        00:00:00 [nfsd]
    root       7443      2  0 00:30 ?        00:00:00 [nfsd]
    root       7513   7333  0 00:56 pts/0    00:00:00 grep -E --color=auto rpc|nfs
    

    NFS服务的主要任务是共享数据,而数据的共享离不开权限问题。所以NFS服务器启动时最少需要两个不同的进程,一个是管理NFS客户端是否能够登陆的rpc.nfsd主进程,另一个管理NFS客户端是否能够取得对应权限的rpc.mountd进程。如果还要管理磁盘配额,则NFS还需要加载rpc.rquotad进程。

    image.png

    2.5 实战配置NFS服务器端

    2.5.1 NFS服务器配置文件路径

    NFS服务的默认配置文件路径为/etc/exports,并且默认该文件是空的。

    [root@nfs01 ~]# ls -l /etc/exports
    -rw-r--r--. 1 root root 0 6月   7 2013 /etc/exports
    [root@nfs01 ~]# cat /etc/exports
    
    2.5.2 exports配置文件格式

    /etc/exports文件的两种格式如下:
    NFS共享目录 NFS客户端地址1(参1,参2...) 客户端地址2(参1,参2...)
    NFS共享目录 NFS客户端地址(参1,参2...)
    查看exports语法文件格式帮助的方法为:执行man exports命令,然后切换到文件结尾,可以快速看如下样例格式:

    EXAMPLE
           # sample /etc/exports file
           /               master(rw) trusty(rw,no_root_squash)
           /projects       proj*.local.domain(rw)
           /usr            *.local.domain(ro) @trusted(rw)
           /home/joe       pc001(rw,all_squash,anonuid=150,anongid=100)
           /pub            *(ro,insecure,all_squash)
           /srv/www        -sync,rw server @trusted @external(ro)
           /foo            2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
           /build          buildhost[0-9].local.domain(rw)
    

    上述各例参数的含义如下:
    1)NFS共享目录:为NFS服务器端要共享的实际目录,要用绝对路径,如(/data)。注意共享目录的本地权限,如果需要读写权限,一定要让本地目录可以被NFS客户端的用户(nfsnobody)读写。
    2)NFS客户端地址:为NFS服务器端授权的可访问共享目录的NFS客户端地址,可以为单独的IP地址或主机名、域名等,也可以为整个网段地址,还可以用“*”来匹配所有客户端服务器,这里所谓的客户端一般来说是前端的业务服务器,如Web服务。
    3)权限参数集:对授权的NFS客户端的访问权限设置。参数说明如下:

    image.png
    2.5.3 企业生产场景NFS exports配置实例
    image.png

    这里以“配置例一”进行说明:

    • /data为要共享的NFS服务器端的目录,注意,被共享的目录一定要用绝对路径。
    • 172.16.1.0/24表示允许NFS客户端访问共享目录的网段范围。24表示255.255.255.0。
    • (rw.sync)rw表示允许读写,sync表示数据同步写入到NFS服务器端的硬盘中。
    • 也可用通配符*替代IP地址,表示允许所有主机,也可以写成10.0.0.*的形式。

    2.6 NFS配置文件权限参数

    NFS配置文件权限参数说明

    NFS配置权限设置常用参数说明

    下图所示为NFS配置权限设置常用参数关系的图解。

    NFS配置权限设置常用参数关系图解

    相关文章

      网友评论

          本文标题:2020-03-03 配置NFS服务器端

          本文链接:https://www.haomeiwen.com/subject/cjjikhtx.html