04-NFS共享存储

NFS共享存储

1. NFS基本概述

  • NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。
  • NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS。
  • 为什么要使用共享存储?
    • 实现多台服务器之间数据共享
    • 实现多台服务器之间数据一致

2. NFS应用场景

2.1 集群没有共享存储

  • A用户上传图片经过负载均衡,负载均衡将上传请求调度至WEB1服务器上。
  • B用户访问A用户上传的图片,此时B用户被负载均衡调度至WEB2上,因为WEB2上没有这张图片,所以B用户无法看到A用户传的图片。

2.2 集群有共享存储

  • A用户上传图片无论被负载均衡调度至WEB1还是WEB2, 最终数据都被写入至共享存储
  • B用户访问A用户上传图片时,无论调度至WEB1还是WEB2,最终都会上共享存储访问对应的文件,这样就可以访问到资源了

3. NFS实现原理

  • 1.用户访问NFS客户端,使用不同的函数对数据进行处理
    2.NFS客户端通过TCP/IP的方式传递给NFS服务端。
    3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
    4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
    5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
    6.idmap进程实现用户映射和压缩
    7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
    

4. NFS服务安装部署

注意事项:

  • 服务端和客户端都需要安装nfs-utils,因为这个包里有rpcbind服务,客户端只需要安装不需要启动,服务端需要安装并启动配置服务,和rsync一样。
  • 可能会出现,df -h命令无法使用的情况,那就是挂载上之后,服务端的网络地址切换了,或者无法访问了,就会出现这个情况,我们要查看我们哪个目录挂载到了服务端的目录上,然后进行强制卸载即可,查看挂载详细信息cat /proc/mounts

4.1 环境准备

  • 角色 内网IP 主机名
    服务端 10.0.0.31 nfs
    客户端 10.0.0.7 web01

4.2 安装NFS服务端

  • [root@nfs ~]# yum -y install nfs-utils
    

4.3 配置NFS服务

  • NFS服务程序的配置文件为/etc/exports,需要严格按照共享目录的路径 允许访问的NFS客户端(共享权限参数)格式书写,定义要共享的目录与相应的权限,具体书写方式如下。

  • /date 10.0.0.0/24(rw,sync,all_squash)

  • # 配置服务端文件
    [root@nfs ~]# cat /etc/exports
    # rw可读可写,ro是只读的意思。
    # sync将我们的数据同时写到硬盘中一份,默认传输数据是写到内存中再写到硬盘中,使用sync可以提高数据安全性,可以同时写到硬盘中一份。
    # all_squash 压缩为匿名用户,匿名用户就是安装nfs-utils自带的用户
    # NFS客户端地址与权限之间没有空格
    /data 10.0.0.0/24(rw,sync,all_squash)
    

配置场景

将nfs服务端的/data目录共享给172.16.1.0/24网段内的所有主机

  1. 所有客户端主机都拥有读写权限
  2. 在将数据写入到NFS服务器的硬盘中后才会结束操作,最大限度保证数据不丢失
  3. 将所有用户映射为本地的匿名用户(nfsnobody)
# 因为默认NFS客户连接NFS时所有的用户被压缩为NFS的匿名用户 nfsnobody uid65534
# 所以将共享的/data目录属主属组修改为nfsnobody 【目的是方便客户端写入和读取】
# nfsnobody安装nfs-utils时自动创建的一个用户
[root@nfs ~]# tail -1 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/
[root@nfs ~]# ll -d /data/
drwxr-xr-x 2 nfsnobody nfsnobody 6 2月  16 09:38 /data/

# NFS共享目录会记录至/var/lib/nfs/etab,如果该目录不存在共享信息,请检查/etc/exports是否配置错误

4.4 设置开机自启

  • 在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call远程过程调用服务将NFS服务器的IP地址和端口号信息发送给客户端。因此,在启动NFS服务之前,需要先重启并启用rpcbind服务程序,同时都加入开机自启动

  • #启动服务
    [root@nfs ~]# systemctl start nfs
    
    #加入开机自启
    [root@nfs ~]# systemctl enable nfs
    
    #检测端口
    [root@nfs ~]# netstat -tnulp
    

4.5 检查/var/lib/nfs/etab文件

  • 通过nfs特有的配置文件查看配置是否正确

  • 检查/var/lib/nfs/etab 如果有内容说明配置正确,如果为空则配置有问题

  • #检测文件
    [root@nfs ~]# cat /var/lib/nfs/etab 
    /data	10.0.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,sec=sys,rw,secure,root_squash,all_squash)
    

4.6 客户端挂载

1. 客户端需要安装nfs-utils 不需要启动

  • [root@web01 ~]# yum -y install nfs-utils
    

2. 客户端查看挂载源

  • NFS客户端的配置步骤也十分简单。先使用showmount命令,查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。

  • [root@web01 ~]# showmount -e 10.0.0.31
    Export list for 10.0.0.31:
    /data 10.0.0.0/24
    

3. 客户端挂载

  • NFS客户端创建一个挂载目录, 使用mount命令并结合-t参数, 指定要挂载的文件系统的类型, 并在命令后面写上服务器的IP地址, 以及服务器上的共享目录, 最后需要写上要挂载到本地系统(客户端)的目录。

  • [root@web01 ~]#  mkdir /mnt
    [root@web01 ~]# mount -t nfs 10.0.0.31:/data /mnt/
    
    #查看挂载信息(mount也可以查看)
    [root@web01 ~]# df -h
    文件系统         容量  已用  可用 已用% 挂载点
    devtmpfs         476M     0  476M    0% /dev
    tmpfs            487M     0  487M    0% /dev/shm
    tmpfs            487M  7.7M  479M    2% /run
    tmpfs            487M     0  487M    0% /sys/fs/cgroup
    /dev/sda3         18G  2.0G   16G   11% /
    /dev/sda1        197M  110M   88M   56% /boot
    tmpfs             98M     0   98M    0% /run/user/0
    10.0.0.31:/data   18G  2.0G   16G   11% /mnt
    

4. 对客户端的挂在点/mnt进行测试

  • # 使用客户端往nfs存储写入
    [root@web01 mnt]# cd /mnt
    [root@web01 mnt]# echo oldboy>haha.txt
    [root@web01 mnt]# ll
    总用量 4
    -rw-r--r-- 1 nfsnobody nfsnobody 7 2月  16 09:50 haha.txt
    
    # 检查nfs服务端是否存在客户端创建的新文件
    [root@nfs ~]# ll /data/
    总用量 4
    -rw-r--r-- 1 nfsnobody nfsnobody 7 2月  16 09:50 haha.txt
    [root@nfs ~]# cat /data/haha.txt 
    oldboy
    

注意事项:权限拒绝问题

# 由于我们一开始配置的有权限的用户是uid和gid都为666的用户,所以我们挂载之后拿nfsnobody进行写入的话就会显示没有权限,虽然我们的属主属组都是nfsnobody,所以我们要不就创建一个uid和gid都为666的用户,要么就把anonuid=666,anongid=666这条给删了,这样的话就会把所有用户都压缩成nfsnobody我们就有权限了。
/date 10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@web01 /]# cd /mnt/
[root@web01 mnt]# ll
总用量 0
[root@web01 mnt]# touch haha.txt
touch: 无法创建"haha.txt": 权限不够

5. 开机自动挂载

  • 如果想开机就能访问共享盘可以设置开机自动挂载

  • 开机自动挂载: 
    # 不使用这个配置文件  在加载网络配置前 系统就已经读取了/etc/fstab文件,因为他要挂载/boot挂载 / ,网络没加载他就找不到我们的服务端,就会挂载不上,所以自动挂载不能设置在这里。
    /etc/fstab 
    # 使用这个配置文件,这个是所有加载之后最后执行的文件。
    /etc/rc.local
    

6. 卸载nfs

  • 如果不希望使用NFS共享, 可进行卸载

  • 7.卸载客户端(B)的挂载点
      root@SSH 13:38:14 ~ # umount /mnt
      root@SSH 13:38:27 ~ # df -h
      Filesystem      Size  Used Avail Use% Mounted on
      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/sda3        18G  2.1G   16G  12% /
      /dev/sda1       197M  110M   88M  56% /boot
      tmpfs           199M     0  199M   0% /run/user/0
    # 已卸载成功
    ----------------------------------------------------------------------------------------------
    # 注意:卸载的时候如果提示”umount.nfs: /mnt: device is busy”  
    1.切换至其他目录, 然后在进行卸载。
    2.NFS Server宕机, 强制卸载umount -lf /mnt
    

4.7 NFS配置详解

  • 执行man exports命令,然后切换到文件结尾,可以快速查看如下样例格式

  • nfs共享参数 参数作用
    rw 读写权限
    ro 只读权限
    root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用)
    no_root_squash 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用)
    all_squash 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户(常用)
    no_all_squash 无论NFS客户端使用什么账户访问,都不进行压缩(不常用)
    sync 同时将数据写入到内存与硬盘中,保证不丢失数据(常用)
    async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据(不常用)
    anonuid 配置all_squash使用,指定NFS的用户UID,必须存在系统
    anongid 配置all_squash使用,指定NFS的用户UID,必须存在系统
  • 1.NFS配置文件个格式
      root@nfs 12:37:36 ~ # vim /etc/exports
      /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) 
    
    2.测试nfs的只读权限
    [root@nfs ~]# cat /etc/exports
    /data 10.0.0.0/24(ro,sync,all_squash,anonuid=666,anongid=666) # ro=read only
    # 发现在客户端访问时,/data目录只能读取,没有写入权限
    
    3.验证all_squash、anonuid、anongid权限
      当客户端访问时,默认映射为匿名用户,所以我们需要给用户指定属主和属组,并创建这个虚拟用户
      创建属主666,属组666的用户,名为niubi # 先创建属组再创建用户
    [root@nfs ~]# groupadd -g666 niubi
    [root@nfs ~]# useradd -u666 -g666 -s /sbin/nologin -M niubi
    [root@nfs ~]# id niubi 
    uid=666(niubi) gid=666(niubi) groups=666(niubi)
    
    4.递归更改共享文件/data/属主属组为HAHA
    [root@nfs ~]# chown -R niubi.niubi /data
    [root@nfs ~]# ll -d /data/
    drwxr-xr-x 2 niubi niubi 22 2月  16 09:50 /data/
    
      
    5.重启服务并验证
    [root@nfs ~]# systemctl restart  nfs
    [root@nfs ~]# cat /var/lib/nfs/etab 
    /data	10.0.0.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,ro,secure,root_squash,all_squash)
      
    6.在客户端挂载目录,测试写入
    [root@web01 ~]# showmount -e 10.0.0.31
    Export list for 10.0.0.31:
    /data 10.0.0.0/24
    [root@web01 ~]# mount -t nfs 10.0.0.31:/data /mnt
    [root@web01 ~]# cd /mnt/
    [root@web01 mnt]# ll
    总用量 4
    -rw-r--r-- 1 666 666 7 2月  16 09:50 haha.txt
    [root@web01 mnt]# echo niubi >> haha.txt
    -bash: haha.txt: 只读文件系统
    [root@web01 mnt]# cat haha.txt 
    oldboy
    
    # 测试结束
    ----------------------------------------------------------------------------------------------
    
    ro和rw的区别:
    如果共享目录设置了ro权限,则客户端用户对于共享目录内的文件只有可读权限,没有修改删除权限
    如果共享目录设置了rw权限,则客户端用户对于共享目录内的文件读/写/删除权限
    

4.8 NFS扩展

1. mount -o指定挂载参数

  • 在企业工作场景,通常情况NFS服务器共享的只是普通静态数据(图片、附件、视频),不需要执行suid、exec等权限,挂载的这个文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性。例如: 很多木马篡改站点文件都是由上传入口上传的程序到存储目录。然后执行的。

  • #通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能
    root@SSH 16:44:28 ~ # mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt
    

2. 无需重启NFS服务平滑加载配置文件

  • 1.查看nfs配置文件
    root@nfs 20:08:07 data # cat /etc/exports
    /data/w 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    /data/r 172.16.1.0/24(ro,sync,all_squash,anonuid=666,anongid=666)
    /data/x 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    /data/t 172.16.1.0/24(ro,sync,all_squash,anonuid=666,anongid=666)
    
    2.到客户端查看可挂载共享目录
    oot@SSH 19:59:40 ~ # showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data/x 172.16.1.0/24
    /data/r 172.16.1.0/24
    /data/w 172.16.1.0/24
    
    3.不重启NFS服务加载配置文件
    root@nfs 20:07:16 data # exportfs -rv  # 直接加载配置文件
    exporting 172.16.1.0/24:/data/t
    exporting 172.16.1.0/24:/data/x
    exporting 172.16.1.0/24:/data/r
    exporting 172.16.1.0/24:/data/w
    
    4.到客户端查看可挂载共享目录,已增加t目录
    root@SSH 20:07:43 ~ # showmount -e 172.16.1.31
    Export list for 172.16.1.31:
    /data/t 172.16.1.0/24
    /data/x 172.16.1.0/24
    /data/r 172.16.1.0/24
    /data/w 172.16.1.0/24
    

5. NFS案例实践

5.1 角色分配和题目

  • 角色 局域网IP 主机名
    A 10.0.0.31 NFS
    B 10.0.0.8 WEB02
    C 10.0.0.7 WEB01
  • # 题目要求
      准备3台虚拟机服务器,并且请按照要求搭建配置NFS服务。
      NFS服务端(A)10.0.0.31
      NFS客户端(B)10.0.0.200
      NFS客户端(C)10.0.0.7
    1.在NFS服务端(A)上共享/data/w(可写)及/data/r(只读)
    2.在NFS客户端(B/C)上进行挂载
      10.0.0.8   挂载31的w目录  可读写权限
      10.0.0.7   挂载31的r目录  可读权限 不能写入
    

5.2 NFS服务端(A)部署

  • # 在NFS服务端(A)上共享/data/w(可写)及/data/r(只读)  172.16.1.31
    
    1.服务端安装nfs-utils
    [root@nfs ~]# yum -y install nfs-utils
      
    2.配置服务端文件
    [root@nfs ~]# cat /etc/exports
    /data/w 10.0.0.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
    /data/r 10.0.0.0/24(ro,sync,all_squash,anonuid=666,anongid=666)
      
    3.创建属主666,属组666的用户,名为HAHA # 先创建属组再创建用户
    [root@nfs ~]# groupadd -g666 niubi
    [root@nfs ~]# useradd -u666 -g666 -s /sbin/nologin -M niubi
    [root@nfs ~]# id niubi
    uid=666(niubi) gid=666(niubi) 组=666(niubi)
    
    4.创建/data目录及目录下的w和r目录,并递归修改目录的属主属组为HAHA
    [root@nfs ~]# mkdir -p /data/w
    [root@nfs ~]# mkdir -p /data/r
    递归修改目录的属主属组
    [root@nfs ~]# chown -R niubi.niubi /data/
    [root@nfs ~]# ll /data/ -d
    drwxr-xr-x 4 niubi niubi 24 2月  16 14:06 /data/
    [root@nfs ~]# ll /data/
    总用量 0
    drwxr-xr-x 2 niubi niubi 6 2月  16 14:06 r
    drwxr-xr-x 2 niubi niubi 6 2月  16 14:06 w
    
    
    5.启动nfs服务加入开机自动运行
    [root@nfs ~]# systemctl start nfs
    [root@nfs ~]# systemctl status nfs
    [root@nfs ~]# systemctl enable nfs
    [root@nfs ~]# reboot
    # 重启修改保存
    
    6.检测配置文件正确性 # 有内容没问题  空则配置文件错误 如果格式不正确 则默认的参数不正确
    [root@nfs ~]# cat /var/lib/nfs/etab 
    /data/r	10.0.0.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,ro,secure,root_squash,all_squash)
    /data/w	10.0.0.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
    
    # 到此服务端配置完成
    

5.3 NFS客户端(B)挂在测试

  • # 在NFS客户端(B)上进行挂载  挂载31的w目录  可读写权限 172.16.1.8
    
    1.服务端安装nfs-utils
    [root@web02 ~]# yum -y install nfs-utils
      
    2.设定挂载目录为/mnt
    [root@web02 ~]# ll /mnt/
    总用量 0
    
    
    3.查看10.0.0.31服务端(A)可共享的目录
    [root@web02 ~]# showmount -e 10.0.0.31
    Export list for 10.0.0.31:
    /data/r 10.0.0.0/24
    /data/w 10.0.0.0/24
    
      
    4.将服务端(A)的/data/w目录挂在到客户端(B)的/mnt目录
    [root@web02 ~]# mount -t nfs 10.0.0.31:/data/w /mnt
    [root@web02 ~]# df -h
    文件系统           容量  已用  可用 已用% 挂载点
    devtmpfs           476M     0  476M    0% /dev
    tmpfs              487M     0  487M    0% /dev/shm
    tmpfs              487M  7.7M  479M    2% /run
    tmpfs              487M     0  487M    0% /sys/fs/cgroup
    /dev/sda3           18G  2.0G   16G   11% /
    /dev/sda1          197M  110M   88M   56% /boot
    tmpfs               98M     0   98M    0% /run/user/0
    10.0.0.31:/data/w   18G  2.2G   16G   12% /mnt
    # 显示已挂载成功
    
    5.测试写入权限
    [root@web02 ~]# cd /mnt/
    [root@web02 mnt]# echo chendaye>niubi.txt
    [root@web02 mnt]# ll
    总用量 4
    -rw-r--r-- 1 666 666 9 2月  16 14:14 niubi.txt
      
    6.到服务端(A)上查看文件
    [root@nfs ~]# cd /data/w/
    [root@nfs w]# ll
    总用量 4
    -rw-r--r-- 1 niubi niubi 9 2月  16 14:14 niubi.txt
    [root@nfs w]# cat niubi.txt 
    chendaye
    
    # 到此客户端(B)执行成功
    
    7.卸载客户端(B)的挂载点
    [root@web02 ~]# umount /mnt
    [root@web02 ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    devtmpfs        476M     0  476M    0% /dev
    tmpfs           487M     0  487M    0% /dev/shm
    tmpfs           487M  7.7M  479M    2% /run
    tmpfs           487M     0  487M    0% /sys/fs/cgroup
    /dev/sda3        18G  2.0G   16G   11% /
    /dev/sda1       197M  110M   88M   56% /boot
    tmpfs            98M     0   98M    0% /run/user/0
    # 卸载完成,试验结束
    

5.4 NFS客户端(C)挂在测试

  • # 在NFS客户端(C)上进行挂载  挂载31的R目录  仅可读权限 不能写入  172.16.1.7
    
    1.服务端安装nfs-utils
    [root@web01 ~]#  yum -y install nfs-utils
      
    2.设定挂载目录为/mnt
    [root@web01 ~]#  ll /mnt
      
    3.查看10.0.0.31服务端(A)可共享的目录
    [root@web01 ~]# showmount -e 10.0.0.31
    Export list for 10.0.0.31:
    /data/r 10.0.0.0/24
    /data/w 10.0.0.0/24
    
      
    4.将服务端(A)的/data/r目录挂在到客户端(C)的/mnt目录
    [root@web01 ~]# mount -t nfs 10.0.0.31:/data/r /mnt
    [root@web01 ~]# df -h
    文件系统           容量  已用  可用 已用% 挂载点
    devtmpfs           476M     0  476M    0% /dev
    tmpfs              487M     0  487M    0% /dev/shm
    tmpfs              487M  7.7M  479M    2% /run
    tmpfs              487M     0  487M    0% /sys/fs/cgroup
    /dev/sda3           18G  2.0G   16G   11% /
    /dev/sda1          197M  110M   88M   56% /boot
    tmpfs               98M     0   98M    0% /run/user/0
    10.0.0.31:/data/r   18G  2.2G   16G   12% /mnt
    # 显示已挂载成功 
    
    5.测试/mnt的读写权限
    [root@web01 ~]# cd /mnt/
    [root@web01 mnt]# touch 1.txt
    touch: 无法创建"1.txt": 只读文件系统
    
      
    # 我们在服务端(A)的/data/r目录下创建一个hehe.txt.测试客户端能否读取
    [root@nfs r]# echo chenyeye > niubi.txt
    [root@nfs r]# ll
    总用量 4
    -rw-r--r-- 1 root root 9 2月  16 14:36 niubi.txt
    [root@nfs r]# cat niubi.txt 
    chenyeye
    
      
    # 再到客户端(C)下的/mnt目录进行查看
    [root@web01 mnt]# ll
    总用量 4
    -rw-r--r-- 1 root root 9 2月  16 14:36 niubi.txt
    [root@web01 mnt]# cat niubi.txt 
    chenyeye
    
    # 可读测试完毕
    
    6.卸载客户端(C)的挂载点
    [root@web01 ~]# umount /mnt
    [root@web01 ~]# df -h
    文件系统        容量  已用  可用 已用% 挂载点
    devtmpfs        476M     0  476M    0% /dev
    tmpfs           487M     0  487M    0% /dev/shm
    tmpfs           487M  7.7M  479M    2% /run
    tmpfs           487M     0  487M    0% /sys/fs/cgroup
    /dev/sda3        18G  2.0G   16G   11% /
    /dev/sda1       197M  110M   88M   56% /boot
    tmpfs            98M     0   98M    0% /run/user/0
      
    # 卸载完成,实验结束
    

6. NFS存储知识

  • 1.`NFS`存储优点
      1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
      2)NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。
    
    2.`NFS`存储局限
      1)存在单点故障, 如果构建高可用维护麻烦`web->nfs()->backup`
      2)NFS数据明文, 并不对数据做任何校验。
      3)客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)
    
    3.`NFS`应用建议
      1)生产场景应将静态数据尽可能往前端推, 减少后端存储压力
      2)必须将存储里的静态资源通过CDN缓存`jpg\png\mp4\avi\css\js`
      3)如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用
    

7. NFS小结

  • 1.服务端和客户端都需要安装nfs-utils
      服务端需要启动 客户端不需要启动 要使用rpcbind协议和服务端进行通信 
      包括客户单使用showmount 命令查看服务端共享的目录
    	
    2.服务端配置
      配置文件: /etc/exports
      共享的目录  允许客户端哪个网段连接我(连接后的权限)
      /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
      /test 172.16.1.0/24(ro,sync,all_squash,anonuid=777,anongid=777)
    
      all_squash  将所有的来源用户压缩成匿名用户(虚拟用户)
      anonuid:    指定匿名为uid是666的用户
      anongid:    指定匿名为gid是666的用户
    
    3.根据配置文件创建必要的信息
      mkdir /data
      创建虚拟用户 uid和 gid都为666
      groupadd -g666 HAHA
      useradd -u666 -g666 -s /sbin/nologin -M HAHA
      授权/data权限为虚拟用户HAHA
      chown HAHA.HAHA /data
    	
    	
    4.客户端挂载 提前安装nfs-utils 不需要启动!!!
      查看服务端共享了哪些目录:
      showmount -e 172.16.1.31
    
      mount -t nfs 172.16.1.31:/data /mnt
    
    5.开机自动挂载: 
    /etc/fstab    # 不使用这个配置文件  在加载网络配置前 系统就已经读取了/etc/fstab文件
    /etc/rc.local # 使用这个配置文件
    	
    6.工作环境统一用户身份
      rsync启动用户 HAHA uid 666
      nfs的匿名用户 HAHA uid 666
    
posted @ 2023-02-16 14:39  猛踢瘸子nei条好腿  阅读(59)  评论(0编辑  收藏  举报