Linux企业架构(存储服务)

1.1概述

  • 存储:用户存放上传的内容(数据),一般应用在网站集群中
  • 为何用?
    1. 如果不使用存储,用户上传的数据就直接存放在网站服务器上,用户下次访问可能找不到
    2. 如果使用存储,用户上传的内容存放在存储上面,用户访问就会访问存储

位置:网站后排
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 存储分类

存储要求:空间大

分类 说明
硬件存储 硬件存储,硬盘多,使用的时候挂载 (我也可以自己部署)
开源软件 普通存储NFS(Linux),samba (windows)/分布式存储GlusterFS,Ceph,FastDFS;MinIO(高性能云原生数据,大数据等)–k8s配合
云产品 阿里云OSS(对象存储)七牛云存储(程序代码测试),腾讯云COS,华为oss

NFS原理

  • NFS(network file system):网络文件系统
  • 2个服务组成
  1. NFS存储
  2. rpcbind(portmap)服务

在这里插入图片描述

1.RPC远程过程调用,本质起到调度作用
2.RPC服务从Centos 6开始叫rpcbind,之前叫做portmapper

1.3操作

环境说明

环境 主机
nfs01服务端 nfs01192.168.28.131/172.16.1.31
nfs客户端 web01 192.168.28.7/172.16.1.7 通过挂载进行使用

服务端部署

部署

yum install -y rpcbind nfs-utils
#utils工具集合

启动

#启动rpcbind systemctl enable rpcbind systemctl start rpcbind
rpcinfo -p
#启动NFS
systemctl enable nfs
systemctl start nfs
在这里插入图片描述

NFS服务端配置

cat /etc/exports
/data/ 172.16.1.0/24(rw)
#配置表示这个网段对NFS服务端的/data目录,并且拥有读写的权限#不推荐使用restart,这里我们在NFS推荐使用reload(重新加载配置文件)systemctl reload nfs

reload与restart区别?

reload 表示优雅重启,不会断开已有的连接

restart在nfs中,会导致客户端一段时间夯住

在这里插入图片描述
在这里插入图片描述

NFS服务端后续配置

创建数据目录与修改权限

chown -R nfsnobody.nfsnobody /data/
reload下的nfs或restart下

在这里插入图片描述
NFS服务端本地进行测试:使用(挂载)

在这里插入图片描述

挂载存储
mount -t nfs 172.16.1.131:/data/ /mnt/

排错指令:rpcinfo -p ip 或 showmount -e ip

rpcinfo -p 检查nfs服务端的rpc信息,主要检查是否有NFS信息

showmount -e ip 检查nfs服务端共享信息(共享那些目录)
在这里插入图片描述

客户端挂载

yum install -y nfs-utils
mount -t nfs 172.16.1.131:/data /mnt

故障案例:
mount wrong fs type 错误的文件系统类型,客户端无法识别nfs
需要在客户端安装nfs-utils,不用启动

在这里插入图片描述
在这里插入图片描述
web服务器进行创建目录
在这里插入图片描述
nfs01存储服务器是否有web服务器创建的目录
在这里插入图片描述
在web服务器创建目录(相当于在上传文件)–文件就放在了存储服务器上面

如果在web服务器上删掉了文件,存储服务器是否还有文件呢?

  • 测试发现我在web服务器上cd /mnt/执行rm -f *删掉了我上传web服务器上的文件–》在存储服务器nfs01上进行查看发现没有了文件
  • 挂载的本质在这里相当于直接用网线将nfs01存储服务器和web01服务器连接,所有的操作此时都是针对于data目录(删除或者增加)
  • 所以用户对web01上的目录进行增删改查,也就是对存储器服务器进行增删改查

NFS相关的文件

nfs服务端或客户端 说明
nfs服务端配置 /etc/exports(配置文件里面的)-》/var/lib/nfs/etab(当前使用的nfs服务端配置)
NFS客户端配置 客户端:mount /etc/rc.local或 /etc/fstab -》/proc/mounts(当前系统的挂载情况)

在这里插入图片描述
在这里插入图片描述
nfs客户端永久挂载

方法1: 挂载命令写入到/etc/rc.local
chmod +x /etc/rc.d/rc.local
方法2: 按照/etc/fstab格式要求进行书写
设备 挂载点 文件系统类型 挂在参数 是否检查 是否备份
172.16.1.131:/data/ /upload/ nfs defaults 0 0
注意:
如果配置了nfs172.16.1.131这个挂载,开机的时候会自动寻找nfs客户端进行自动挂载,但是有一个前提;若把nfs客户端关闭了就不能,若关闭了并进行重启,它就会在开机的时候进行卡住(1-2分钟崩掉)

所以如果配置了nfs客户端永久挂载,未来要优先启动nfs客户端

NFS服务端的配置文件

/etc/exports
第一部分 第二个部分
共享目录 网段(选项)

NFS配置文件中网络配置

网段
172.16.1.7 指定ip
172.16.1.0/24 最常用

baidu.com 指定域名

服务端核心配置

服务端配置选项 说明
rw 可以读写共享目录
ro 只读read only
sync 同步,只要用户上传,就把数据写到磁盘上
async 异步,用户上传的数据,nfs先临时存放到内存中,过一段时间写入到磁盘,并发高,数据可能丢失
  • 同步与异步

​ 同步:按流程次序进行

​ 异步:对于相同的操作整合在一起,并且集体执行并且带走集体里面整体的内容执行

同步在网站架构中指的是直接访问对应的资源

异步在网络架构中利用各种缓存达到用户优先访问缓存,缓存没有再访问对应的服务

服务端用户压缩

在这里插入图片描述

  • NFS客户端挂载NFS端后,创建的文件默认属于nfsnobody,这种操作称为用户压缩(映射)

  • 用户压缩是通过NFS服务端的配置进行实现的
    在这里插入图片描述
    root_squash 如果是客户端root用户访问,到lnfs服务端会被压缩(默认)

no_all_squash 如果客户端不是root用户访问,则不进行压缩(保持原始用户,默认)

all_squash 所有用户都进行压缩(不是太安全)

anonuid和anongid 用于指定压缩的匿名用户(默认是nfsnobody用户) anonuid=65534,anongid=65534

服务都安配置选项 说明

用户压缩/用户映射:NFS客户端访问NFS共享目录时候变成了什么用户

nfs客户端用户 nfs服务端用户
root -----》 nfsnobody

在这里插入图片描述

用户压缩案例

用户压缩案例:

  • 设置/nfsdata共享目录,匿名用户为www.客户端挂载到/upload-video

  • /www用户的uid,gid:1999(服务端,客户端)

流程:

  1. 部署nfs服务,tpcbind
  2. 添加用户www,指定uid,gid
  3. 修改服务端配置文件
  4. 客户端进行挂载测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    所有主机(nfs服务端和nfs客户端)
    添加用户www uid
    1999 1999

nfs服务端配置
nfs客户端挂载
所有主机(nfs服务端和nfs客户端) 添加用户www uid

1999 1999 groupadd -g 1999 www useradd -u 1999 -g www -s
/sbin/nologin -M www

nfs 服务端配置 cat /etc/exports/data/ 172.16.1.0/24 (rw) /nfsdta/ 172.16.1.0/24 (rw,all_squash,anonuid = 1999,anongid=1999)

nfs 客户端挂载 mount - nfs 172.16.1.31:/nfsdata /upload-video/ du -h /upload-video/ touch /upload-video/lidao.txt ll /upload-video/

NFS优化

终极优化目标:

  • 尽可能让用户的请求在访问网站架构之前解决掉。(尽可能把用户的请求往前推)

  • NFS优化:硬件(物理服务器+nfs服务)

  • NFS安全优化:客户端挂载只能上传,无法执行.

mount -o noexec,nosuid,nodev -t nfs
172.16.1.31:/data /video/
#这几个是客户端挂载选项
noexec挂载的nfs目录中如果有命令,无法运行。
nosuid带有suid的命令
nodev带有特殊属性的文件。

  • NFS有单点故障,选择其他存储:公有云OSS(阿里云)(对象存储在代码里面调用)
  • 研究分布式存储:GlusterFS(GFS),MinIO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

低成本创业新篇章:上门回收小程序的崛起与挑战

在当今这个快速变化的时代,低成本创业项目成为了许多创业者的首选。其中,上门回收小程序以其独特的商业模式和市场需求,成为了创业市场中的一股新势力。本文将深入探讨上门回收小程序作为低成本创业项目的崛起之路以及面临的挑战。 一、上门回…

【Sa-Token|3】Sa-Token集成到现有微服务详细介绍

一、系统架构调整 用户中心:保持现有的用户登录、注册接口不变。多个项目:前后端分离,保持现有逻辑不变。网关服务:新增或配置网关服务,处理所有请求并进行 Token 校验和转发。统一 Token 管理:通过 Sa-Tok…

嵌入式系统软件开发环境_2.一般架构

1.Eclipse框架 嵌入式系统软件开发环境是可帮助用户开发嵌入式软件的一组工具的集合,其架构的主要特征离不开“集成”问题,采用什么样的架构框架是决定开发环境优劣主要因素。Eclipse框架是当前嵌入式系统软件开发环境被普遍公认的一种基础环境框架。目…

html做一个画热图的软件

完整示例 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>热图生成器</title><script src"https://cdn.plot.ly/plotly-latest.min.js"></script><style>body …

7-3 设计一个学生类

定义一个学生类Student&#xff0c;有姓名&#xff08;name&#xff09;、成绩&#xff08;score&#xff09;两个私有属性&#xff0c;提供一个无参数的构造方法、一个带参数的构造方法&#xff0c;以及四个公有方法getName()、setName()、getScore()、setScore ()分别用于获取…

A.P.穆勒-马士基将作为银牌赞助商出席2024中国汽车供应链降碳和可持续国际峰会

作为一家综合性集装箱物流公司&#xff0c;A.P.穆勒-马士基致力于连接和简化我们客户的供应链。作为物流服务领域的全球领导者&#xff0c;公司拥有100,000多家客户&#xff0c;业务遍及130多个国家&#xff0c;拥有约80,000名员工。A.P.穆勒-马士基致力于通过新技术、新船舶和…

React的状态提升和组合

React的状态提升 通常&#xff0c;多个组件需要反映相同的变化数据&#xff0c;这时我们建议将共享状态提升到最近的共同父组件中去 示例&#xff1a; 我们写一个关于热水沸腾的组件&#xff0c;当我们在输入框输入的温度大于100度时&#xff0c;文字会显示热水沸腾。这样有…

Syslog日志外发

Syslog是一种广泛应用于网络设备、操作系统和应用程序的日志通信协议&#xff0c;通过收集、监控和分析Syslog日志&#xff0c;企业可以有效维护网络安全、故障排除和运营管理。 除了内部监控&#xff0c;有时企业也需要将Syslog日志外发以实现更多的管理和合规需求。在实现Sy…

代码随想录算法训练营DAY45|198.打家劫舍、213.打家劫舍II、337.打家劫舍 III

198.打家劫舍 题目链接&#xff1a;198.打家劫舍 class Solution(object):def rob(self, nums):""":type nums: List[int]:rtype: int"""if len(nums)1:return nums[0]if len(nums)2:return max(nums[0],nums[1])dp[0]*len(nums)dp[0]nums[0]d…

java类中的代码块

代码块&#xff08;初始化块&#xff09;&#xff1a;一般用于初始化数据 1、静态代码块执行优先于非静态代码块 2、类中可以存在多个静态/非静态代码块&#xff0c;且相同类型代码块之间按照声明顺序来执行 静态代码块&#xff1a;static {} ① 随着类的加载而执行 ② 只执行一…

cpu漏洞修复

关于CPU相关漏洞的修复处理_cpu漏洞如何修复 vulnerability spec store bypass: vulnera-CSDN博客

网络编程及练习

定义&#xff1a; 在网络通信协议下&#xff0c;不同计算机上运行的程序进行的数据传输。计算机和计算机之间通过网络进行数据传输 可以使用在java.net包下的技术开发出常见的网络应用程序 常见的软件架构&#xff1a; C/S: Client/Server 客户端/服务器 在用户本地需要下载…

打破数据分析壁垒:SPSS复习必备(四)

一、连续性变量的统计描述与参数估计 1、集中趋势的描述指标 均数&#xff08;Mean&#xff09; 中位数&#xff08;Median&#xff09; 众数&#xff08;Mode&#xff09; 总合&#xff08;Sum&#xff09; 2、离散趋势的描述指标 标准差&#xff08;Std. Deviation&#x…

STM32CubeMX WS2812B灯驱动

一、WS2812B 数据发送速度可达800Kbps。 数据协议采用单线归零码的通讯方式&#xff0c;像素点在上电复位以后&#xff0c;DIN端接受从控制器传输过来的数据&#xff0c;首先送过来的24bit数据被第一个像素点提取后&#xff0c;送到像素点内部的数据锁存器&#xff0c;剩余的…

openssl 命令行生成密钥对,生成hash,PSS填充签名,校验

生成密钥对 openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:4096 openssl rsa -pubout -in private_key.pem -out public_key.pem将源文件data.txt生成hash值&#xff08;sha-256&#xff09; openssl dgst -sha256 -binary data.txt > d…

MySQL进阶——SQL优化

目录 1插入数据 1.1 insert 1.2大批量插入数据 2主键优化 3 order by 优化 4 group by 优化 5 limit 优化 6 count 优化 6.1概述 6.2 count用法 7 update优化 1插入数据 1.1 insert 优化方案主要有3种 批量插入数据 Insert into tb_test values(1,Tom),(2,Cat)…

QT 数值型坐标轴有那些?(QValueAxis)

在Qt中&#xff0c;QValueAxis类用于表示数值型坐标轴&#xff0c;它本身没有直接的子类&#xff0c;但它是从QAbstractAxis这个抽象类继承而来的。QAbstractAxis是定义坐标轴属性和行为的基类&#xff0c;而QValueAxis则在此基础上提供了针对数值数据的具体实现。 Qt的图表模…

HarmonyOS开发知识 :扩展修饰器,实现节流、防抖、权限申请

引言 防重复点击&#xff0c;利用装饰器面向切面&#xff08;AOP&#xff09;的特性结合闭包&#xff0c;实现节流、防抖和封装权限申请。 节流 节流是忽略操作&#xff0c;在触发事件时&#xff0c;立即执行目标操作&#xff0c;如果在指定的时间区间内再次触发了事件&…

linux修改root密码

linux修改root密码 在Linux中&#xff0c;可以使用以下几种方法来修改root密码&#xff1a; 方法1&#xff1a;使用passwd命令 该方法是最常见和最简单的方法&#xff0c;使用passwd命令可以直接修改root用户的密码。在终端中执行以下命令&#xff1a; sudo passwd root 系统…

移动端 UI 风格,彰显不凡

移动端 UI 风格&#xff0c;彰显不凡