今日内容

  • NFS简介
  • 实现 NFS 文件同步功能
  • NFS 配置详解
  • 统一用户
  • 搭建 web 服务
  • NFS 实现文件共享

内容详细

1、NFS 简介

1.1 介绍

实现多台 web 服务器可以共享数据资源,只需要把各个 web 服务器的数据存储独立出来,存放在一个 NFS 服务器中,web 服务器需要资源时访问 NFS 获取即可
NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。

NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分布式文件系统FastDFS,glusterfs,HDFS,ceph

1.2 NFS 应用

1.用户访问NFS客户端,将请求转化为函数
2.NFS通过TCP/IP连接服务端
3.NFS服务端接收请求,会先调用portmap进程进行端口映射
4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端;
5.Rpc.mount进程用于判断客户端对服务端的操作权限
6.如果通过权限验证,可以对服务端进行操作,修改或读取

2、实现 NFS 文件同步功能

2.1 服务端

安装 nfs-utils 和 rpcbind

	yum install nfs-utils rpcbind -y

修改配置文件,配置挂载点(/etc/exports)

	vim /etc/exports
[挂载点] [允许访问的客户端网段]([权限])
/web/nfs1 172.16.1.0/20(rw,all_sqush,sync)

创建挂载点

	mkdir -p /web/nfs{1..9}

给挂载点授权(修改属主和属组)

# 因为参数 all_squash,无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户
所以使用 nfsnobody
chown -R nfsnobody.nfsnobody /web

关闭防火墙

	setenforce 0
systemctl disable --now firewolld

启动 NFS 和 rpcbind 服务

	systemctl start nfs-server
systemctl start rpcbind

测试服务端是否正常

	showmount -e [服务端的地址,默认是本机地址]

[root@nfs web]# showmount -e
Export list for nfs:
/web/upload 172.16.1.0/20

记得格式化挂载点

	mkfs.xfs /web/nfs1

2.2 客户端

安装 nfs-utils

	yum install nfs-utils -y

注意	: 客户端和服务端都需要安装 nfs-utils

创建目录

	mkdir /web/nfs

挂载 NFS

	mount -t nfs 172.16.1.31:/web/nfs1 /web/nfs

-t	: 指定是挂载 nfs 类型
注意 : 在进行挂载之前要格式化 nfs 的挂载点

测试 NFS 同步功能

在 web01 中的挂载目录 /web/nfs 中创建文件
查看 nfs 挂载点中是否同步了数据

3、NFS配置详解

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的用户GID,必须存在系统 (常用)

3.1、控制读写

	rw、ro

3.2、控制文件权限

	root_squash
no_root_squash
all_squash
no_all_squash

3.3、控制写模式

	sync
async

3.4、控制用户

    anonuid
anongid

4、统一用户

解释

为了使得 nfs 服务端中的文件所有客户端机子都方便读取
显然文件的属组和属主不一样是非常不方便的 可以把服务端中的所有挂载点文件都改为统一用户和用户组 www,每个客户端创建和访问数据文件都需要使用 www 用户,这样方便每个客户端机子对公共数据的存取

4.1 在 nfs 服务端创建 www 系统用户

	groupadd www -g 666
useradd www -u 666 -g 666 -M -r -s /sbin/nologin

4.2 授权挂载点(修改属组和属主)

	chown -R www.www /web

4.3 修改挂载点配置文件

 vim /etc/exports
/web/nfs1 172.16.1.0/20(rw,all_squash,sync,anonuid=666,anongid=666)

4.4 重启 nfs-server 和 rpcbind

  systemctl restart nfs-server
systemctl restart rpcbind

4.5 在客户端 web01 中重新挂载

[root@web01 ~]# umount /web/nfs
[root@web01 ~]# mount -t nfs 172.16.1.31:/web/nfs1 /web/nfs

4.6 测试

5、搭建 WEB 服务(在客户端 web 上)

5.1 安装 web 软件

	yum -y httpd php php-devel

5.2 将代码上传至网站的根目录

# 下载好 web 软件之后会自动生成网站根目录 /var/www
cd /var/www/html 解压代码文件
unzip xxx

上传网页代码

# 创建 html 目录下 的 upload 文件夹,接收上传的文件

5.3 给根目录授权(修改属组属主)

	chown -R www.www /var/www/html

5.4 关闭selinux和防火墙

    setenforce 0
systemctl disable --now firewalld

5.5 修改 web 软件的用户

	vim /etc/httpd/conf/httpd.conf
User www
Group www # 缺失这一步,同步数据时会出错,因为原用户没有访问权限

5.6 启动 web 软件

	systemctl start httpd

5.7 测试

用什么 IP 操作 web 的,就用什么 IP 登录,我用公网 IP 

	访问
http://192.168.15.7/upload/1_linux.jpg # 注意 : 要在根目录 /var/www/html 目录中添加文件夹 upload 文件夹,且上传的文件要命名为 1_xxx

6、web 服务搭建 配合 NFS 实现文件共享

服务端

6.1 修改配置文件

	vim /etc/exports
/web/upload 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666) 要新建一个挂载点来存放 web 上传的文件

6.2 新建挂载点

	mkdir /web/upload
chown www.www /web/upload

6.3 重新启动 nfs 软件

	systemctl restart nfs-server rpcbind

客户端

6.4 安装 启动 httpd 与修改其配置

# 所有客户端机子都要安装 web 服务软件,修改其用户名为 www ,并创建好 www 系统用户

[root@web03 conf]# groupadd www -g 666
[root@web03 conf]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin [root@web02 html]# vim /etc/httpd/conf/httpd.conf
User www
Group www [root@web02 html]# systemctl start httpd

6.5 在所有客户端都装上 NFS 软件

# 注意 : 如果挂载不了,应该是客户端没有下载 NFS 软件
yum -y install nfs-utils

6.6 挂载

	mount -t nfs 172.16.1.31:/web/upload /var/www/html/upload

6.7 测试

在不同服务器(客户端)中上传的图片,每一个不同的客户端都能共享,查找得到,实现了资源同步共享

还可以玩游戏

搭建 NFS 服务 & 实时同步的更多相关文章

  1. Linux搭建NFS服务

    一.NFS服务简单介绍 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中, ...

  2. 搭建NFS服务

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建yum仓库的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件版本和主 ...

  3. Linux(10):期中架构(2)--- NFS存储服务 & 实时同步

    1. 共享存储服务概念: # NFS是Network File System的缩写,中文意思是网络文件系统, # 它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录. 2. ...

  4. nfs存储服务实时同步

    一.NFS简介 NFS(Network File System)即网络文件系统,它允许网络中的计算机之间通过网络共享资源.将NFS主机分享的目录,挂载到本地客户端当中,本地NFS的客户端应用可以透明地 ...

  5. 项目cobbler+lamp+vsftp+nfs+数据实时同步(inotify+rsync)

    先配置好epel源 [root@node3 ~]#yum install epel-release -y 关闭防火墙和selinux [root@node3 ~]#iptables -F [root@ ...

  6. centos7下搭建nfs服务

    现在有3台服务器 s1(主),s2(从), s3(从)需要实现文件实时同步,我们可以安装Nfs服务端和客户端来实现! 一.安装 NFS 服务器所需的软件包: yum install -y nfs-ut ...

  7. NFS+inotify实时同步

    Inotify简介 Inotify是一种文件系统事件通告机制,能够实时监控文件系统下文件的访问.修改.删除等各种变化情况并将其作为事件通告给用户态应用程序.Linux内核从2.6.13版本后已经集成了 ...

  8. centos7搭建NFS服务

    服务器端 139.155.90.78 客户端  192.168.198.146 先查看自己的系统有没有安装rpcbind 和nfs-utils rpm -qa nfs-utils rpcbind 若使 ...

  9. Linux_搭建NFS服务(基础)

    [RHEL8]-NFSserver :[Centos7]-NFSclient !!!测试环境我们首关闭防火墙和selinux(NFSserver和NFSclient都需要) [root@localho ...

随机推荐

  1. spring-aop(二)学习笔记

    常用增强处理类型 增强处理类型                                                        特点 before 前置增强处理,在目标方法前织入增强处理 ...

  2. solr - 安装ik中文分词 和初始化富文本检索

    1.下载安装包 https://repo1.maven.org/maven2/org/apache/solr/solr-dataimporthandler/7.4.0/solr-dataimporth ...

  3. Centos7 文件权限理解(持续更新)

    后期排版,边学边记边敲 用户详情分析 管理员用户 root  0 虚拟用户 nobody  1-999 普通用户 test001  1000+ 输入ll命令查看当前目录文件详情 根据这张图片可知,目录 ...

  4. class、抽象类、接口区别

    Java 抽象类 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 由于抽象类不 ...

  5. 干掉 Postman?测试接口直接生成API文档,ApiPost真香!

    实不相瞒我的收藏夹里躺着很多优质的开发工具,我有个爱好平时遇到感兴趣的开发工具都会记录下来,然后有时间在慢慢研究.前几天刚给同事分享一款非常好用的API文档工具,真的被惊艳到了,粉丝朋友们也感受一下吧 ...

  6. Redis 事务支持 ACID 么?

    腾讯面试官:「数据库事务机制了解么?」 「内心独白:小意思,不就 ACID 嘛,转眼一想,我面试的可是技术专家,不会这么简单的问题吧」 程许远:「balabala-- 极其自信且从容淡定的说了一通.」 ...

  7. Spring系列2:Spring容器基本概念和使用

    本文内容 简单回顾IoC和DI概念 Spring容器的概念 的xml配置和初始化 容器的基本使用 bean的定义和初始化配置 简单理解IoC和DI概念 什么是IoC控制反转? 通俗地但不严谨地讲,以前 ...

  8. 龙芯 3A4000 安装 Debian10 (via debootstrap)

    由于一些原因,Debian 的内核不能直接在龙芯的 cpu 上使用.据悉 Linux 5.7 kernel 改进了对龙芯的支持,不久的将来我们应该就能更愉快地在龙芯上运行 Debian 了. 感谢龙芯 ...

  9. 五天学完MySQL打卡挑战 day01

    明天继续上传学习笔记和练习的Word文档 晚安~

  10. virtual studio发布到gihub

    问题 我们想要发布代码到github或者微软团队服务时候,往往发现没有本地库,所以难以发布. 解决方案 在解决方右击就可以新建git 文件都会出现小锁说明有了记录 文件夹会对应出现 右上角管理连接也会 ...