今日内容

  • 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. vue2.0多页面开发

    我们平常用vue开发的时候总觉得vue好像就是专门为了单页面应用而诞生的,其实不是.因为vue在工程化开发的时候很依赖webpack,而webpack是将所有的资源整合到一块,弄成一个单页面.但是vu ...

  2. Python多环境管理神器(pyenv)

    前面我们已经介绍了,python中两种最基础的虚拟环境管理工具,venv和virtualenv,其中virtualenv可以和virtualenvwrapper配合使用.详情请参考:https://w ...

  3. IntelliJ IDEA最新破解方法

    IntelliJ IDEA最新破解方法 首先说下,本人使用idea版本是2021.2.3. 一.下载IDEA(推荐从官网下载) 官网地址:https://www.jetbrains.com/idea/ ...

  4. 输出前 n 个Fibonacci数

    本题要求编写程序,输出菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证输出结果在长整型范围内.Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如 ...

  5. dubbo接口方法重载且入参未显式指定序列化id导致ClassCastException分析

    问题描述&模拟 线上登录接口,通过监控查看,有类型转换异常,具体报错如下图 此报错信息是dubbo consumer端显示,且登录大部分是正常,有少量部分会报类型转换异常,同事通过更换方法名+ ...

  6. 《剑指offer》面试题55 - I. 二叉树的深度

    问题描述 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 例如: 给定二叉树 [3,9,20,null,null,15 ...

  7. linux新分区无法新建文件夹

    问题 因为最初分区480g随便都给了home,后来发现备份以及导出系统至IOS都要另外插硬盘很麻烦.所以需要重新分区.使用装机U盘的live ubuntu20系统使用Gparted分区后,发现回到Ub ...

  8. c#重写和多态

    多态是基于重写的 继承:向子类中添加父类没有的成员,子类对父类的横向扩展 重写:纵向扩展,成员没有增加,但成员的版本增加了 引言 Rider JetBrains:Rider.ReSharper.dot ...

  9. 主键约束(primary key 简称PK)

    7.5.主键约束 主键约束相关术语 主键约束 主键字段:字段添加了主键约束,叫主键字段 主键值:主键字段中的每个值都叫主键值 什么是主键? 主键值是每一行记录的唯一标识(主键值是每一行记录的身份证号) ...

  10. 使用VSCode在本地电脑上对树莓派远程开发

    目的及原理 有时身边没有额外的显示器和键盘,或者有时树莓派在另一个屋子连接着路由器,那么当我们想在树莓派上做开发时就可以使用VS Code的远程开发能力.下面一张图显而易见地说明了远程开发的工作原理( ...