NFS(网络文件系统)


功能: 
  • 通过案例说明
  • 如下图,将某图片上传至电脑web01,通过搭建NFS,最终可以实现--->
    • 在web01 web02 web03 NFS服务器 任意一台电脑对该图片的查看,修改,删除
  ---概要---   1 简介 2 底层逻辑 3 部署 4 新增/修改 要挂载磁盘路径时 5 "搭建考试系统"实现开头的案例效果       ---详细---   1 简介  
  • NFS是Network File System的缩写及网络文件系统。
  • 主要功能
    • 是通过局域网络让不同的主机系统之间可以共享文件或目录。
    • NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, 
  • 应用场景
    • NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph
  2 底层逻辑  
  1. 用户从本机查找某资料,本地磁盘无
  2. 转访问到NFS客户端,将请求转化为函数
  3. 客户端NFS通过TCP/IP连接服务端NFS
  4. NFS服务端接收请求,会先调用portmap进程进行端口映射
  5. 然后通过Rpc.nfsd进程: 验证客户端身份,即能否连接服务端
  6. 然后通过Rpc.mount进程: 判断客户端对服务端的有哪些操作权限
  7. 通过权限验证,对服务端文件进行对应权限的操作(增,删,改,查);无权限,给出提醒或报错
  底层逻辑图1   底层逻辑图2       ------- 3 部署 -------     step1---服务端       1-1 安装NFS软件和rpcbind软件 [root@nfs ~]# yum install nfs-utils rpcbind -y     1-2 创建目录 [root@nfs ~]# mkdir /web/nfs{1..9} -该目录即磁盘路径,目录下的磁盘将被挂载至挂载点     1-3 修改NFS服务端配置文件(18:07)
  • vim /etc/exports
  • 格式
    • [磁盘路径] [可以访问的IP]([权限])
  • 下图内容详解
    • 磁盘路径
      • /web/nfs1
    • 可以访问的IP(来源见下面)
      • 172.16.1.0/20
    • 权限
      • (rw,sync,all_squash,anonuid=666,anongid=666)
      • 包含所有,复制即可
  可以访问的IP 来源
  • 将NFS服务器的内网ip改为网段
  参数(权限详解)
  • rw
    • 读写权限
  • sync
    • 同时将数据写入内存和硬盘中,保证数据不丢失(常用)
  • all_squash
    • 当NFS客户端以任何账户访问时,均映射为NFS服务器的匿名用户(常用)
  • anonuid
    • 配合all_squash使用,指定NFS的用户UID(常用)
  • anongid
    • 配合all_squash使用,指定NFS的用户组GID(常用)
  • ro
    • 只读权限
  • root_squash
    • 当NFS客户端以ROOT管理员访问时,映射为NFS服务器的ROOT管理员(不常用)
  • no_root_squash
    • 当NFS客户端以普通用户访问时,映射为NFS服务器的匿名用户(不常用)
  • no_all_squash
    • 当NFS客户端以任何账户访问时,都不进行压缩(不常用)
  • async
    • 先将数据写入内存,然后再写入硬盘中,效率高,但是数据可能丢失(不常用)
  1-4 关闭selinux和防火墙 [root@nfs ~]# setenforce 0 (临时关闭) [root@nfs ~]# systemctl disable --now firewalld     1-5 启动nfs和rpcbind服务 [root@nfs ~]# systemctl start nfs-server [root@nfs ~]# systemctl start rpcbind     1-6 检查服务端是否正常 [root@nfs ~]# showmount -e [服务端的地址,默认是本机地址]   [root@nfs ~]# showmount -e Export list for nfs: /web/nfsv1 172.16.1.0/20 [root@nfs ~]# showmount -e 172.16.1.31 Export list for 172.16.1.31: /web/nfsv1 172.16.1.0/20   1-7 创建"www"用户     -在客户端和服务端都需要创建(使得两边有一个统一用户) [root@nfs nfs1]# groupadd www -g 666 [root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin     -用户名为www     -666 为指定的id   1-8 给目录授权(修改目录权限) [root@nfs nfs1]# chown -R www.www /web/     -R 处理指定目录及其子目录下的所有文件     挂载点即挂载目录     -/web/ 上边"1-2"创建的目录       step2---客户端   2-1 安装NFS [root@web01 opt]# yum install -y nfs-utils     2-2 创建目录 [root@web01 opt]# mkdir /opt/nfs/     -该目录作为挂载点   2-3 挂载(将NFS服务器磁盘挂载至客户端挂载点) [root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1  /opt/nfs/     -挂载格式: mount 磁盘路径 挂载点(路径)     -目录需要挂载(磁盘)才能使用     -本例中:         -t nfs - 固定参数         172.16.1.31 - NFS服务器的内网ip         /web/nfs1 - 磁盘路径(NFS服务器的)   在客户端查看挂载df -h   2-4 创建"www"用户     -在客户端和服务端都需要创建 [root@nfs nfs1]# groupadd www -g 666 [root@nfs nfs1]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin     -用户名为www     -666 为指定的id   创建的用户为www用户验证
  • 在某客户端创建一个文件,如web01服务器
  2-5 测试NFS文件同步功能     4 新增/修改要挂载磁盘路径时   4-1 新增挂载磁盘路径
  • 如 mkdir /web/nfs2
  4-2 修改配置(服务端)  
  • vim /etc/exports
  • 参照: 3 部署--->1-3 修改NFS服务端配置文件
    4-3 重启nfs-server 及 rpcbind(服务端) systemctl restart nfs-server rpcbind     5---"搭建考试系统"
  • 实现从不同服务器网页上传图片后互相可以查看
    step1---搭建web服务器   1-1 安装web软件(3个) [root@web01 opt]# yum install httpd php php-devel -y -httpd 软件 -php 软件 -php-devel 软件       1-2 切换到网站的根目录 [root@web01 opt]# cd /var/www/html/     1-3 上传压缩包到客户端
  1. yum install -y lrzsz
  2. 将文件拖至客户端服务器(如web01)即可
  3. 解压文件
    • unzip 文件名
      1-4 授权 [root@web01 html]# chown -R www.www /var/www/html     1-5 关闭selinux和防火墙 [root@nfs ~]# setenforce 0 [root@nfs ~]# systemctl disable --now firewalld   1-6 修改web软件的用户属主属组为www [root@web01 html]# vim /etc/httpd/conf/httpd.conf - User www - Group www   1-7 启动web软件 [root@web01 html]# systemctl start httpd   1-8 测试       1、上传      特别注意: 上传前刷新以下网页 查看上传文件      2、访问     http://172.16.1.7/upload/2_linux.jpg     查看上传的图片       step2---实现文件共享
  •  用上边学的"部署NFS"实现
    ---服务端   2-1 创建目录 [root@nfs nfs1]# mkdir /web/upload [root@nfs nfs1]# chown www.www /web/upload     2-2 修改NFS配置文件 [root@nfs nfs1]# vim /etc/exports /web/upload  172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)     2-3 重启NFS和rpcbind [root@nfs nfs1]# systemctl restart nfs-server rpcbind   ---客户端   2-4 客户端安装NFS软件 [root@web01 html]# yum install nfs-utils -y [root@web02 html]# yum install nfs-utils -y [root@web03 html]# yum install nfs-utils -y   2-5挂载 [root@web01 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload [root@web02 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload [root@web03 html]# mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload   2-6 测试    用web2上传,web3查看       ---补充知识点   1 出问题时,可查看错误日志
  • tail -f /var/log/httpd/error_log 
    • 实时监控路径下最后十行日志
  2 ps -ef | grep httpd
  • ps  查看进程
  • -e 显示所有进程
  • -f 全格式显示