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、访问
    查看上传的图片
 
 
 
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 全格式显示
 
 
 
 
 
posted @ 2021-12-31 00:43  tslam  阅读(584)  评论(0)    收藏  举报