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

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客户端访问服务器端读写文件时,需要具有以下几个权限:

  • NFS服务器/etc/exports设置需要开放写入的权限,即服务器端的共享权限。
  • NFS服务器实际要共享的NFS目录权限具有写入的权限,即服务器端本地目录的安全权限。
  • 每台机器都对应存在和NFS默认配置UID的相同UID65534的nfsnobody用户(确保所有客户端的访问权限统一,否则每个机器需要同时建立相同UID的用户,并覆盖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。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容