第九周-day37-综合架构-NFS网络文件系统(存储)

第九周-day37-NFS网络文件系统(存储).png

rsync端口 873

RPC端口 111

NFS端口 不确定

一 、 NFS 简介和架构图

NFS是Network File System的缩写,即网络文件系统。一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据。 NFS在文件传送或信息传送的过过程中,依赖于RPC协议。RPC,远程过程调用(Remote Procedure Call),是使客户端能够执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,就是因为NFS使用了RPC提供的传输协议,可以说NFS就是使用PRC的一个程序。

NFS 存储 服务器主要用于用户上传的数据 ,图片 音频 、等信息

不知道什么是NFS!那就先看图

NFS共享—基础架构图示.jpg

NFS服务端、RPC协议、客户端三者可以理解为房源、中介、租客之间的关系:

image.png


NFS服务原理图

image.png

二、准备环境

机器
web01
nfs01

软件
RPC 服务 :rpcbind(C 6 & C 7) portmap(C 5)
nfs服务: nfs-utils

1.安装软件:

yum install -y nfs-utils rpcbind
安装成功后检查安装包
nfs01:

[15:32 root@nfs01 ~]# rpm -qa nfs-utils rpcbind
rpcbind-0.2.0-47.el7.x86_64
nfs-utils-1.3.0-0.61.el7.x86_64

web01

[15:32 root@web01 ~]# rpm -qa nfs-utils rpcbind
nfs-utils-1.3.0-0.61.el7.x86_64
rpcbind-0.2.0-47.el7.x86_64

首先在nfs01服务端操作

2.启动rpc服务并查看注册信息

systemctl restart rpcbind
rpcinfo -p

[15:32 root@nfs01 ~]# systemctl start rpcbind.service 
[15:36 root@nfs01 ~]# #查看rpc服务里面的注册信息
[15:37 root@nfs01 ~]# 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

3.启动nfs服务并查看注册信息

systemctl restart nfs
rpcinfo -p

[15:37 root@nfs01 ~]# systemctl restart nfs
[15:37 root@nfs01 ~]# #查看rpc服务里面的注册信息
[15:38 root@nfs01 ~]# 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  34623  status
    100024    1   tcp  40441  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  39890  nlockmgr
    100021    3   udp  39890  nlockmgr
    100021    4   udp  39890  nlockmgr
    100021    1   tcp  43375  nlockmgr
    100021    3   tcp  43375  nlockmgr
    100021    4   tcp  43375  nlockmgr

4.用户映射 rpc.idmapd

名字映射后台进程
不管哪个用户进入nfs,都属于nfsnobody,在安装nfs时默认创建了这个用户

[15:45 root@nfs01 ~]# id nfsnobody 
uid=65534(nfsnobody) gid=65534(nfsnobody) groups=65534(nfsnobody)

5.nfs配置文件/etc/exports

1.nfs配置文件/etc/exports

2.reload平滑重启,优雅重启
不中断当前正在处理的请求 影响新的请求
注意:nfs尽量不要使用restart重启 使用之后会卡住90s

3.检查放在具体信息 可以挂载什么
showmount -e
-e:显示NFS服务器上所有的共享目录

[5:50 root@nfs01 ~]# vim /etc/exports
                                                                    
#share /upload
/upload         172.16.1.0/24(rw)
[15:55 root@nfs01 ~]# cat /etc/exports
#share /upload
/upload     172.16.1.0/24(rw)
[15:55 root@nfs01 ~]# mkdir -p /upload
[15:56 root@nfs01 ~]# chown  nfsnobody.nfsnobody /upload/
[15:56 root@nfs01 ~]# systemctl reload nfs
[15:56 root@nfs01 ~]# #检查 挂载信息
[15:56 root@nfs01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/upload 172.16.1.0/24

6.在nfs01服务端进行挂载测试

[16:07 root@nfs01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.7G   18G   9% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
[16:07 root@nfs01 ~]# mount -t nfs 172.16.1.31:/upload/ /mnt/
[16:07 root@nfs01 ~]# # 查看一下是否挂载成功
[16:07 root@nfs01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             19G  1.7G   18G   9% /
devtmpfs             980M     0  980M   0% /dev
tmpfs                991M     0  991M   0% /dev/shm
tmpfs                991M  9.6M  981M   1% /run
tmpfs                991M     0  991M   0% /sys/fs/cgroup
/dev/sda1            197M  105M   93M  54% /boot
tmpfs                199M     0  199M   0% /run/user/0
172.16.1.31:/upload   19G  1.7G   18G   9% /mnt
[16:07 root@nfs01 ~]# touch /mnt/oldboy.txt
[16:07 root@nfs01 ~]# ll /upload/
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 May 22 16:07 oldboy.txt

#目录可以理解为/upload/目录就等于/mnt/目录了,都有相同的内容

7.接着按上面的步骤给web01客户端进行挂载测试

把nfs upload目录挂载到/video目录

1.启动rpc服务

在客户端可以不启动rpc服务和NFS服务,在NFS服务端启动就可以了

[16:16 root@web01 ~]# systemctl restart rpcbind.service 
[16:17 root@web01 ~]# 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

2.启动nfs

[16:18 root@web01 ~]# systemctl restart nfs
[16:18 root@web01 ~]# 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
    省略....

3.检查放在具体信息 可以挂载什么

[16:23 root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/upload 172.16.1.7/24

4.把nfs upload目录挂载到/video目录

[16:24 root@web01 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        19G  1.7G   18G   9% /
devtmpfs        980M     0  980M   0% /dev
tmpfs           991M     0  991M   0% /dev/shm
tmpfs           991M  9.6M  981M   1% /run
tmpfs           991M     0  991M   0% /sys/fs/cgroup
/dev/sda1       197M  105M   93M  54% /boot
tmpfs           199M     0  199M   0% /run/user/0
[16:24 root@web01 ~]# mkdir /video   \\创建video目录
[16:25 root@web01 ~]# mount -t nfs 172.16.1.31:/upload/ /video/   
[16:25 root@web01 ~]# df -h
Filesystem          Size  Used Avail Use% Mounted on
/dev/sda3            19G  1.7G   18G   9% /
devtmpfs            980M     0  980M   0% /dev
tmpfs               991M     0  991M   0% /dev/shm
tmpfs               991M  9.6M  981M   1% /run
tmpfs               991M     0  991M   0% /sys/fs/cgroup
/dev/sda1           197M  105M   93M  54% /boot
tmpfs               199M     0  199M   0% /run/user/0
172.16.1.31:/upload   19G  1.7G   18G   9% /video

三、NFS权限控制

配置文件中权限 /etc/exports
Linxu服务端 共享目录权限 755 nfsnobody

四、nfs配置文件详解

1.测试一下nfs配置文件

在nfs01和web01创建指定的www虚拟用户

[17:44 root@nfs01 ~]# groupadd -g 888 www
[17:44 root@nfs01 ~]# useradd -u 888 -g www -s /sbin/nologin -M www
[17:45 root@nfs01 ~]# id www
uid=888(www) gid=888(www) groups=888(www)
[17:44 root@web01 ~]# groupadd -g 888 www
[17:44 root@web01 ~]# useradd -u 888 -g www -s /sbin/nologin -M www
[17:45 root@web01 ~]# id www
uid=888(www) gid=888(www) groups=888(www)

2.修改配置文件中的权限/etc/exports

[17:45 root@nfs01 ~]# vim /etc/exports
#share /upload
/upload         172.16.1.0/24(rw)
/nfs            172.16.1.0/24(rw,all_squash,anonuid=888,anongid=888)
#/upload        172.16.1.7(rw)  10.0.0.7(rw)
[17:47 root@nfs01 ~]# systemctl reload  nfs

3.创建一个/nfs目录并授权为www用户

[17:50 root@nfs01 ~]# mkdir -p /nfs
[17:50 root@nfs01 ~]# chown www.www /nfs
[17:50 root@nfs01 ~]# ll /nfs/
total 0

4.接着我们去web01客户端

创建/nfs目录,并检查放在具体信息 可以挂载什么

[17:47 root@web01 ~]# mkdir -p /nfs

[17:50 root@web01 ~]#  showmount -e 172.16.1.31
Export list for 172.16.1.31:
/nfs    172.16.1.0/24
/upload 172.16.1.0/24

5.在web01客户端进行挂载测试

挂载完成后查看一下是否挂载成功

[17:53 root@web01 ~]# mount -t nfs 172.16.1.31:/nfs/ /mnt/
[17:54 root@web01 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/sda3             19G  1.7G   18G   9% /
devtmpfs             980M     0  980M   0% /dev
tmpfs                991M     0  991M   0% /dev/shm
tmpfs                991M  9.6M  981M   1% /run
tmpfs                991M     0  991M   0% /sys/fs/cgroup
/dev/sda1            197M  105M   93M  54% /boot
172.16.1.31:/upload   19G  1.7G   18G   9% /video
tmpfs                199M     0  199M   0% /run/user/0
172.16.1.31:/nfs      19G  1.7G   18G   9% /mnt

6.接着我们在挂载的目录/mnt/下创建文件测试一下

[17:54 root@web01 ~]# touch /mnt/{01..10}.txt
[17:54 root@web01 ~]# ll /mnt/
total 0
-rw-r--r-- 1 www www 0 May 22 17:54 01.txt
-rw-r--r-- 1 www www 0 May 22 17:54 02.txt
-rw-r--r-- 1 www www 0 May 22 17:54 03.txt
-rw-r--r-- 1 www www 0 May 22 17:54 04.txt
-rw-r--r-- 1 www www 0 May 22 17:54 05.txt
-rw-r--r-- 1 www www 0 May 22 17:54 06.txt
-rw-r--r-- 1 www www 0 May 22 17:54 07.txt
-rw-r--r-- 1 www www 0 May 22 17:54 08.txt
-rw-r--r-- 1 www www 0 May 22 17:54 09.txt
-rw-r--r-- 1 www www 0 May 22 17:54 10.txt

7.我们可以去nfs01服务端查看/nfs/共享目录看一下有没有

[17:56 root@nfs01 ~]# ll /nfs/
total 0
-rw-r--r-- 1 www www 0 May 22 17:55 01.txt
-rw-r--r-- 1 www www 0 May 22 17:55 02.txt
-rw-r--r-- 1 www www 0 May 22 17:55 03.txt
-rw-r--r-- 1 www www 0 May 22 17:55 04.txt
-rw-r--r-- 1 www www 0 May 22 17:55 05.txt
-rw-r--r-- 1 www www 0 May 22 17:55 06.txt
-rw-r--r-- 1 www www 0 May 22 17:55 07.txt
-rw-r--r-- 1 www www 0 May 22 17:55 08.txt
-rw-r--r-- 1 www www 0 May 22 17:55 09.txt
-rw-r--r-- 1 www www 0 May 22 17:55 10.txt

image.png
image.png
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限

五.客户端挂载信息与服务端配置共享的参数

1.客户端挂载信息 /proc/mounts

实例:

[17:55 root@web01 ~]# egrep '/nfs|/video' /proc/mounts 
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
nfsd /proc/fs/nfsd nfsd rw,relatime 0 0
172.16.1.31:/upload /video nfs4 rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
172.16.1.31:/nfs /mnt nfs4 rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0

2.服务端配置共享的参数/var/lib/nfs/etab

exports tables nfs 服务端共享信息
实例:

[17:56 root@nfs01 ~]# cat /var/lib/nfs/etab 
/nfs    172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=888,anongid=888,sec=sys,rw,secure,root_squash,all_squash)
/upload 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)

找工作必备的技能

未完待续....

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

推荐阅读更多精彩内容