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

    xiaoxiao2022-07-07  208

    rsync端口 873

    NFS端口 111

    一 、 NFS 简介和架构图

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

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

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

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

    NFS服务原理图

    在这里插入图片描述

    二、准备环境

    机器 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

    [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

    NFS共享的常用参数:

    ro 只读访问 rw 读写访问 sync 同步 所有数据在请求时写入共享 async 异步 NFS在写入数据前可以相应请求 all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。 not_all_squash 默认与root_squash一起使用 no_all_squash 保留共享文件的UID和GID(默认) root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认) no_root_squash root用户具有根目录的完全管理访问权限 anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID

    五.

    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)

    找工作必备的技能

    未完待续…

    最新回复(0)