2020-03-04 NFS服务配置企业案例实践

2020-03-04  本文已影响0人  阿丧小威

1. NFS服务配置企业案例实践

实例:共享/data目录给192.168.9.0/24整个网段的主机,可读写。
该例将实现把NFS Server上的/data目录共享给192.168.9.0/24整个网段主机,且可读写。

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

1.1 在NFS Server端执行的操作

1)启动rpcbind及NFS服务,然后加入开机自启动:

[root@nfs01 ~]# systemctl start 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:23:32 CST; 15h ago
 Main PID: 7206 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─7206 /sbin/rpcbind -w
3月 02 23:23:32 nfs01 systemd[1]: Starting RPC bind service...
3月 02 23:23:32 nfs01 systemd[1]: Started RPC bind service.
[root@nfs01 ~]# systemctl start nfs
[root@nfs01 ~]# systemctl status 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; 14h 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.

2)创建需要共享的目录并授权(工作中这里的/data应该是已存在的目录):

[root@nfs01 ~]# mkdir -p /data
[root@nfs01 ~]# touch /data/oldboy.txt
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody /data    ---授权nfsnobody用户和组管理/data
[root@nfs01 ~]# ll -d /data    ---养成操作后检查的习惯
drwxr-xr-x 2 nfsnobody nfsnobody 24 2月  20 10:37 /data
---在NFS服务器端把要共享的NFS目录赋予NFS默认用户nfsnobody用户和用户组权限,如不设置这个权限,会导致NFS客户端访问时无法通过NFS本地共享目录权限写入数据。当然也可以给NFS服务器端本地共享目录777的权限,但是工作中最好不要用,因为777的权限太大了。
[root@nfs01 ~]# grep nfsnobody /etc/passwd    ---这个nfsnobody类似于rsync服务里的rsync用户
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin

3)配置NFS服务配置文件,并在本地查看挂载信息情况:

[root@nfs01 ~]# cat >> /etc/exports<<EOF
> #shared /data by oldboy for students
> /data 192.168.9.0/24(rw,sync)
> EOF
[root@nfs01 ~]# tail -2 /etc/exports    ---查看配置结果
#shared /data by oldboy for students
/data 192.168.9.0/24(rw,sync)
[root@nfs01 ~]# systemctl reload nfs    ---平滑加载,使修改的配置生效,也可以用exportfs -r命令
[root@nfs01 ~]# showmount -e localhost    ---在NFS服务器本地查看挂载情况
Export list for localhost:
/data 192.168.9.0/24
[root@nfs01 ~]# cat /var/lib/nfs/etab     ---查看NFS Server配置文件参数(包括默认加载的参数)
/data   192.168.9.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)  

4)把本地服务器端作为客户端进行挂载测试,执行的命令和结果如下:

[root@nfs01 ~]# mount -t nfs 192.168.9.6:/data /mnt
[root@nfs01 ~]# ls /mnt/
oldboy.txt
[root@nfs01 ~]# df -h | tail -1
192.168.9.6:/data         17G  1.3G   16G    8% /mnt

根据提示挂载是成功的,至此,NFS服务器端配置完毕。

[root@nfs01 ~]# cat /var/lib/nfs/rmtab    ---等客户端挂载成功后,通过执行该命令来查看哪些客户端主机挂载了NFS Server。

在此过程中,需要注意以下两点:
1)上文中的配置/oldboy 192.168.9.0/24(rw,sync),其中“24”和“(”之间不能有空格。
2)修改/etc/exports后,需执行systemctl reload nfs或exportfs -r重新加载配置,但不要重启NFS。尤其是在生产环境中。

1.2 在NFS Client端执行的操作

在所有的NFS Client上执行的操作都是相同的。
1)安装客户端软件rpcbind:

[root@web01 ~]# yum install -y rpcbind
[root@web01 ~]# rpm -qa rpcbind
rpcbind-0.2.0-48.el7.x86_64

为了使用showmount命令功能,所有客户端最好都要安装NFS软件。

[root@web01 ~]# yum install -y nfs-utils
[root@web01 ~]# rpm -qa nfs-utils
nfs-utils-1.3.0-0.65.el7.x86_64

2)启动RPC服务(注意,因为是客户端,所以无需启动NFS服务)

[root@web01 ~]# systemctl start rpcbind
[root@web01 ~]# systemctl enable rpcbind
[root@web01 ~]# 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-04 11:22:09 CST; 24min ago
 Main PID: 5896 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─5896 /sbin/rpcbind -w
3月 04 11:22:09 web01 systemd[1]: Starting RPC bind service...
3月 04 11:22:09 web01 systemd[1]: Started RPC bind service.

3)挂载NFS共享目录/data

[root@web01 ~]# showmount -e 192.168.9.6    ---挂载前首先检查客户端是否能够挂载NFS服务器端
Export list for 192.168.9.6:
/data 192.168.9.0/24    ---可以看到服务器端共享了/data目录,访问的IP段是192.168.9.0/24。

如果此时出现如下错误,多数是因为防火墙没关导致的。

[root@web01 ~]# showmount -e 192.168.9.6
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

此时执行如下命令关闭服务器端(NFS01)防火墙。

[root@nfs01 ~]# systemctl stop firewalld
[root@nfs01 ~]# systemctl disable firewalld
[root@nfs01 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)
[root@web01 ~]# mount -t nfs 192.168.9.6:/data /mnt    ---执行挂载命令挂载
[root@web01 ~]# df -h|tail -1    ---查看挂载后的结果
192.168.9.6:/data         17G  1.3G   16G    8% /mnt
[root@web01 ~]# grep "data" /proc/mounts    ---查看proc下的挂载数据
192.168.9.6:/data /mnt nfs4 rw,relatime,vers=4.1,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.9.7,local_lock=none,addr=192.168.9.6 0 0

4)从客户端Web01测试读写NFS服务器端数据。

[root@web01 ~]# ls /mnt    ---查看挂载后挂载点目录下的数据
oldboy.txt    ---这是服务器端事先建立的文件,表示可读
[root@web01 ~]# touch /mnt/oldgirl.txt    ---表示可写
[root@web01 ~]# ls /mnt
oldboy.txt  oldgirl.txt
[root@web01 ~]# mkdir /mnt/test    ---表示可写
[root@web01 ~]# ls -l /mnt
总用量 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 2月  20 10:37 oldboy.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 3月   3 17:09 oldgirl.txt
drwxr-xr-x 2 nfsnobody nfsnobody 6 3月   3 17:09 test
---用户和用户组都是nfsnobody。默认所有的客户端写入文件和目录都会被压缩成默认的UID为65534的nfsnobody用户和组。

至此,NFS客户端Web01的部署成功。

2. NFS服务的重点知识梳理

当多个NFS客户端访问服务器端读写文件时,需要具有以下几个权限:

只有满足上述3个条件,多个NFS客户端才能具有查看、修改、删除其他任意NFS客户端上传的文件的权限,这在大规模的集群环境中作为集群共享存储时尤为重要。
下表列出了常用的重点NFS服务文件或命令。

重点NFS服务文件或命令的说明

3. NFS客户端挂载排错思路

当NFS客户端挂载出现故障时,首先把本地服务器端作为客户端进行挂载测试,执行的命令和结果如下:

[root@nfs01 ~]# mount -t nfs 192.168.9.6:/data /mnt
[root@nfs01 ~]# ls /mnt/
oldboy.txt
[root@nfs01 ~]# df -h|tail -1
192.168.9.6:/data         17G  1.3G   16G    8% /mnt
根据提示挂载是成功的。
提示:这步主要检查服务器端的NFS服务自身是不是正常。

然后再确认NFS客户端showmount是否OK。正常情况下如下:

  [root@nfs01 ~]# showmount -e 192.168.9.6
Export list for 192.168.9.6:
/data 192.168.9.0/24

如果环境准备不当可能会遇到如下两个报错。
第一个报错及分析解决如下:

[root@web01 ~]# showmount -e 192.168.9.6
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

解答:这个报错往往是由防火墙未关闭也未正确设置导致的,检查办法如下:
1)从客户端ping NFS服务端IP,目的是看物理链路是否通畅。

[root@web01 ~]# ping 192.168.9.6 -c 1
PING 192.168.9.6 (192.168.9.6) 56(84) bytes of data.
64 bytes from 192.168.9.6: icmp_seq=1 ttl=64 time=0.300 ms
--- 192.168.9.6 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.300/0.300/0.300/0.000 ms

2)从客户端telnet服务器端IP端口检查,用于测试NFS服务(RPC服务)是否通畅。

[root@web01 ~]# telnet 192.168.9.6 111
Trying 192.168.9.6...
telnet: connect to address 192.168.9.6: No route to host
---不通,即可怀疑服务器端防火墙拦截了。

第二个报错及分析解决如下:

[root@web01 ~]# showmount -e 192.168.9.6
clnt_create: RPC: Program not registered

解答:“RPC:Program not registered”提示很清楚了,是服务器端RPC服务和NFS服务存在启动顺序问题,即需要先启动rpcbind,后启动NFS。

上一篇 下一篇

猜你喜欢

热点阅读