功能:
- 通过案例说明
- 如下图,将某图片上传至电脑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 底层逻辑
- 用户从本机查找某资料,本地磁盘无
- 转访问到NFS客户端,将请求转化为函数
- 客户端NFS通过TCP/IP连接服务端NFS
- NFS服务端接收请求,会先调用portmap进程进行端口映射
- 然后通过Rpc.nfsd进程: 验证客户端身份,即能否连接服务端
- 然后通过Rpc.mount进程: 判断客户端对服务端的有哪些操作权限
- 通过权限验证,对服务端文件进行对应权限的操作(增,删,改,查);无权限,给出提醒或报错
底层逻辑图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 上传压缩包到客户端
- yum install -y lrzsz
- 将文件拖至客户端服务器(如web01)即可
- 解压文件
- 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 全格式显示