美文网首页
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