上期内容回顾

1.数据备份的方式有哪些
全量和增量 2.数据备份的命令有哪些 都有哪些优点缺点
cp : 本地复制,全量复制
scp : 远程复制,全量复制
rsync : 远程复制,增量复制 3.rsync的参数有哪些并解释
参考上期博客 4.rsync守护进程模式的步骤
服务端
客户端
参考上期博客 5.rsync实时同步的步骤
参考上期博客

本期内容概要

  • NFS 网络存储
  • 实现NFS多主机共享(以考试系统为例)

内容详细

1.NFS简介

NFS 是 Network File System的缩写 及网络文件系统

NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录

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

2.NFS应用

1.用户访问NFS客户端,将请求转化为函数

2.NFS通过TCP/IP连接服务端

3.NFS服务端接收请求,会先调用portmap进程进行端口映射

4.Rpc.nfsd进程用于判断NFS客户端能否连接服务端

5.Rpc.mount进程用于判断客户端对服务端的操作权限

6.如果通过权限验证,可以对服务端进行操作,修改或读取

3.实现NFS多主机共享

  • 3.1服务端
'''
nfs 作为服务端 172.16.1.31
web01 web02 web03 作为客户端 172.16.1.7/172.16.1.8/172.16.1.9
''' # 确保在服务端进行(nfs)
1. 安装NFS和rpcbind
[root@nfs ~]# yum install nfs-utils rpcbind -y 2. 创建挂载点
[root@nfs ~]# mkdir /web/
[root@nfs ~]# mkdir /web/nfs{1..9} 3. 配置挂载点
[root@nfs ~]# vim /etc/exports
格式:
[挂载点] [可以访问的IP]([权限])
/web/nfs1 172.16.1.0/20(rw,sync,all_squash) 4. 关闭selinux和防火墙
[root@nfs ~]# setenforce 0
[root@nfs ~]# systemctl disable --now firewalld 5. 启动Nfs和rpcbind服务
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl start rpcbind 6. 检查服务端是否正常
格式:
showmount -e 服务端的地址(默认是本机地址) [root@nfs ~]# showmount -e
返回以下结果就是正常了
Export list for nfs:
/web/nfs1 172.16.1.0/20 或者
[root@nfs ~]# showmount -e 172.16.1.31
返回同样结果也是正常
Export list for 172.16.1.31:
/web/nfs1 172.16.1.0/20 7. 给挂载点授权
[root@nfs ~]# chown -R nfsnobody.nfsnobody /web
3.2客户端
'''
以在 web01 客户端操作为例
其余的客户端同样操作即可
''' # 确保在客户端进行(web01 web02 web03)
1. 安装NFS
[root@web01 opt]# yum install -y nfs-utils 2. 创建目录
[root@web01 opt]# mkdir /opt/nfs/ 3. 挂载NFS
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/ 4. 测试NFS文件同步功能
[root@web01 ~]# cd /opt/nfs [root@web01 nfs]# touch 1.txt
[root@web01 nfs]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt 到服务端查看:
[root@nfs ~]# ll /web/nfs1
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt
发现服务端也自动同步创建了 到其他客户端查看:
[root@web02 nfs]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt [root@web03 nfs]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec 30 16:45 1.txt
所有客户端都自动同步了 此刻 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,必须存在系统 (常用)

4.NFS配置详解

1. 控制读写
rw : 读写权限 (常用) ro : 只读权限 (不常用) 可在服务端 vim /etc/exports
/web/nfs1 172.16.1.0/20(rw,sync,all_squash)
在括号内修改权限 每次修改完成都要重启 systemctl restart nfs-server rpcbind
到客户端操作文件测试 2. 控制文件权限
root_squash : 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 (不常用)
no_root_squash : 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 (不常用) all_squash : 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 (常用)
no_all_squash : 无论NFS客户端使用什么账户访问,都不进行压缩 (不常用) 3. 控制写模式
sync : 同时将数据写入到内存与硬盘中,保证不丢失数据 (常用) async : 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 (不常用) 4. 控制用户(将所有客户端用户统一 便于操作文件)
anonuid : 配置all_squash使用,指定NFS的用户UID,必须存在系统 (常用) anongid : 配置all_squash使用,指定NFS的用户GID,必须存在系统 (常用)
01 创建统一用户
[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin [root@web01 nfs]# groupadd www -g 666
[root@web01 nfs]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin [root@web02 nfs]# groupadd www -g 666
[root@web02 nfs]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin [root@web03 nfs]# groupadd www -g 666
[root@web03 nfs]# useradd www -u 666 -g 666 -M -r -s /sbin/nologin 02 配置挂载点文件(都要在服务端操作!!!)
[root@nfs ~]# vim /etc/exports
/web/nfs1 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666)
重启
[root@nfs ~]# systemctl restart nfs-server rpcbind 03 修改挂载点权限(都要在服务端操作!!!)
[root@nfs ~]# chown -R www.www /web/ 04 使用(客户端使用!!!)
如果创建的文件属主属组权限不是 WWW
可以重新挂载
[root@web01 opt]# umount /opt/nfs/
[root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/

5.搭建考试系统

5.1搭建WEB服务
1. 安装web软件(客户端操作)
[root@web01 nfs]# yum install httpd php php-devel -y 2. 将考试系统代码放置于网站的根目录
[root@web01 nfs]# cd /var/www/html/
将代码压缩包拖进来 并解压
[root@web01 html]# unzip kaoshi.zip 3. 授权
[root@web01 html]# chown -R www.www /var/www/html 4. 关闭selinux和防火墙
[root@web01 html]# setenforce 0
[root@web01 html]# systemctl disable --now firewalld 5. 修改web软件的用户
[root@web01 html]# vim /etc/httpd/conf/httpd.conf
User www
Group www 6. 启动web软件
[root@web01 html]# systemctl start httpd 7. 测试
01 在浏览器上输入你的客户端IP进入前端
02 点击上传图片
03 访问http://192.168.15.7/upload/1_linux.jpg (图片名称:1_linux.jpg)
04 用web01 web02 web03客户端都上传 之后用 web01 查看 web03 上传的图片(会报错找不到 属于正常)

5.2配合NFS实现文件共享
'''
目的为了用一台客户端访问所有客户端上传的文件 实现文件共享
''' 1. 修改NFS配置文件(服务端执行)
[root@nfs ~]# vim /etc/exports
添加一行内容:
/web/nfs1 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666) 2. 创建挂载点
[root@nfs ~]# mkdir /web/upload
[root@nfs ~]# chown www.www /web/upload 3. 重启NFS
[root@nfs ~]# systemctl restart nfs-server rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/web/upload 172.16.1.0/20
/web/nfs1 172.16.1.0/20 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 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 6. 测试
web01 192.168.15.7上传 1_linux.jpg
web02 192.168.15.8上传 2_linux.jpg
web03 192.168.15.9上传 3_linux.jpg 然后用192.168.15.7 访问 3_linux.jpg
http://192.168.15.7/upload/3_linux.jpg 显示正常则实现了文件共享 """
每次重启机器后 都要重新执行以下指令才可以:
服务端:
/web/
[root@nfs ~]# systemctl restart nfs-server rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/web/upload 172.16.1.0/20
/web/nfs1 172.16.1.0/20 客户端:
/var/www/html/upload
/opt/nfs/
[root@web01 html]# systemctl start httpd
[root@web02 html]# systemctl start httpd
[root@web03 html]# systemctl start httpd [root@web01 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
[root@web02 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/
[root@web03 opt]# mount -t nfs 172.16.1.31:/web/nfs1 /opt/nfs/ [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
"""

linux中网络存储与考试系统搭建(实现多用户可以共享文件)的更多相关文章

  1. 5 个在 Linux 中管理文件类型和系统时间的有用命令

    对于想学习 Linux 的初学者来说要适应使用命令行或者终端可能非常困难.由于终端比图形用户界面程序更能帮助用户控制 Linux 系统,我们必须习惯在终端中运行命令.因此为了有效记忆 Linux 不同 ...

  2. [Intel Edison开发板] 06、Edison开发在linux中烧写、配置、搭建开发环境

    1.前言 linux上烧写.配置.搭建Edison环境,千万不要用默认的setup tool for ubuntu!!! (即使,你用的就是ubuntu) 因为,其默认的工具会从一个坏链接下载配置文件 ...

  3. linux中网络配置

    一.查看ip ipconfig 二.png 测试主机之间网络连通 ping 目标ip #测试当前服务器是否可以连接目的主机 三.linux配置网络环境 vim /etc/sysconfig/netwo ...

  4. Linux中keepalived+LVS负载均衡的搭建测试

    1.1 LVS简介       LVS(Linux Virtual Server),也就是Linux虚拟服务器, 是一个自由软件项目.使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Lin ...

  5. linux中yum本地私有仓库安装搭建《全面解析》

    目录 一:yum本地仓库安装 1.yum简介 2.yum安装解析 二:yum安装的生命周期 三:yum私有仓库作用与必要性 四:搭建yum私有仓库 本地版本 1.下载必须的软件包 2.创建软件仓库(就 ...

  6. Linux 中我该如何备份系统

    系统备份概述 在前面的一些文章中,我反复提到经常会把系统搞崩溃,所以备份系统就是一件不容忽视的事情.由于 Linux 系统本身的优越性,系统的备份和还原还是比较容易的.主要表现在以下方面: Linux ...

  7. Arch Linux中禁用UTC解决双系统时间问题

    原因 Windows双系统时间不统一在于时间表示有两个标准:localtime 和 UTC(Coordinated Universal Time) .UTC 是与时区无关的全球时间标准.尽管概念上有差 ...

  8. linux中网络编程<1>

    1 网络编程API (1)网络层的ip地址可以唯一标识网络中的主机,传输层通过协议+端口唯一标识主机中的应用程序.这样以来使用三元组(地址,协议,端口)标识网络的进程. (2)socket---> ...

  9. Linux(环境篇):系统搭建本地FTP后,无法登录(331 Please specify the password.)问题解决

    首先 Linux 搭建ftp,开放21端口.(省略...) 你可能会遇到以下问题:错误 SELinux is disabled 解决: setenforce: SELinux is disabled ...

随机推荐

  1. A Child's History of England.10

    In the next reign, which was the reign of Edward, surnamed The Elder, who was chosen in council to s ...

  2. 零基础学习java------32---------css,javascript,jQuery

    一. CSS简单了解 需要掌握: 概念见day11中的课堂笔记 css:修饰html标签的样式 1.每个元素有一个style属性,其形式为:style="属性:值:属性:值...." ...

  3. Hibernate持久化标志符生成策略

    generator子元素定义持久化标识符的生成策略,为持久化类对应的数据库表的主键找到了赋值方法,HIbernate默认将使用assigned的持久化标识符生成策略.关系型数据库的主键定义方式:(1) ...

  4. Orcale 数据加载

    CSV 逗号分隔值格式文件 1,若要加载的文件不是CSV格式,可以修改数据文件,用分隔符来替换逗号:也可以修改控制文件,将FIELDS TERMINATED BY的值改为实际的分隔符. eg, 要向s ...

  5. SpringCloud微服务服务间调用之OpenFeign介绍

    开发微服务,免不了需要服务间调用.Spring Cloud框架提供了RestTemplate和FeignClient两个方式完成服务间调用,本文简要介绍如何使用OpenFeign完成服务间调用. Op ...

  6. web端 - 返回上一步,点击返回,跳转上个页面 JS

    1.方法一: <script language="javascript" type="text/javascript"> window.locati ...

  7. mysql深度优化与理解(迄今为止读到最优秀的mysql博客)

    转载:https://www.cnblogs.com/shenzikun1314/p/6396105.html 本篇深入了解查询优化和服务器的内部机制,了解MySql如何执行特定查询,从中也可以知道如 ...

  8. Three.js 实现3D全景侦探小游戏🕵️

    背景 你是嘿嘿嘿侦探社实习侦探️,接到上级指派任务,到甄开心小镇调查市民甄不戳宝石失窃案,根据线人流浪汉老石‍提供的线索,小偷就躲在小镇,快把他找出来,帮甄不戳寻回失窃的宝石吧! 本文使用 Three ...

  9. 初探Windows用户态调试机制

    我们在感叹Onlydbg强大与便利的同时,是否考虑过它实现的原理呢? 作为一个技术人员知其然必知其所以然,这才是我们追求的本心. 最近在学习张银奎老师的<软件调试>,获益良多.熟悉Wind ...

  10. textarea控件好奇怪啊,用<s:if>标签居然不在一行回出现很多的空格,奇葩啊

    textarea控件好奇怪啊,用<s:if>标签居然不在一行回出现很多的空格,奇葩啊