Linux:GlusterFS 集群

news2024/11/26 0:53:51

GlusterFS介绍 

1)Glusterfs是一个开源的分布式文件系统,是Scale存储的核心,能够处理千数量级的客户端.在传统的解决 方案中Glusterfs能够灵活的结合物理的,虚拟的和云资源去体现高可用和企业级的性能存储.

2)Glusterfs通过TCP/IP或InfiniBand RDMA网络链接将客户端的存储资块源聚集在一起,使用单一的全局命名空间来管理数据,磁盘和内存资源.

3)Glusterfs基于堆叠的用户空间设计,可以为不同的工作负载提供高优的性能.

4)Glusterfs支持运行在任何标准IP网络上标准应用程序的标准客户端,如下图1所示,用户可以在全局统一的命名空间中使用NFS/CIFS等标准协议来访问应用数据.

Glusterfs主要特征
扩展性和高性能
高可用
全局统一命名空间
弹性hash算法
弹性卷管理
基于标准协议 

工作原理:

1) 首先是在客户端, 用户通过glusterfs的mount point 来读写数据, 对于用户来说,集群系统的存在对用户是完全透明的,用户感觉不到是操作本地系统还是远端的集群系统。
2) 用户的这个操作被递交给 本地linux系统的VFS来处理。
3) VFS 将数据递交给FUSE 内核文件系统:在启动 glusterfs 客户端以前,需要想系统注册一个实际的文件系统FUSE,如上图所示,该文件系统与ext3在同一个层次上面, ext3 是对实际的磁盘进行处理, 而fuse 文件系统则是将数据通过/dev/fuse 这个设备文件递交给了glusterfs client端。所以, 我们可以将 fuse文件系统理解为一个代理。
4) 数据被fuse 递交给Glusterfs client 后, client 对数据进行一些指定的处理(所谓的指定,是按照client 配置文件据来进行的一系列处理, 我们在启动glusterfs client 时需要指定这个文件。
5) 在glusterfs client的处理末端,通过网络将数据递交给 Glusterfs Server,并且将数据写入到服务器所控制的存储设备上。
 

常用卷类型

分布(distributed)

复制(replicate)

条带(striped)

基本卷:

(1)  distribute volume:分布式卷

(2)  stripe volume:条带卷

(3)  replica volume:复制卷 

复合卷:

(4)  distribute stripe volume:分布式条带卷

(5)  distribute replica volume:分布式复制卷

(6) stripe replica volume:条带复制卷

(7) distribute stripe replicavolume:分布式条带复制卷 

分布卷

条带卷

 

复制卷 

 

分布式条带卷

 

分布式复制卷 

 


模拟环境介绍

这里我们使用5个服务器,前4个用于搭建各种卷,第五个用于测试,将前面搭建好的卷挂载到第五台进行测试

第一台 192.168.254.1 添加4块硬盘,每个硬盘为5G大小  并为他们分1个区 格式为ext4  分别为/dev/sdb1  /dev/sdc1 /dev/sdd1 /dev/sde1                主机名为 : tarro1
第二台 192.168.254.2 添加4块硬盘,每个硬盘为5G大小  并为他们分1个区 格式为ext4 分别为/dev/sdb1  /dev/sdc1 /dev/sdd1 /dev/sde1                主机名为 : tarro2
第三台 192.168.254.3 添加3块硬盘,每个硬盘为5G大小  并为他们分1个区 格式为ext4 分别为/dev/sdb1  /dev/sdc1 /dev/sdd1                                主机名为 : tarro3
第四台 192.168.254.1 添加3块硬盘,每个硬盘为5G大小  并为他们分1个区 格式为ext4 分别为/dev/sdb1  /dev/sdc1 /dev/sdd1                                 主机名为 : tarro4

第五台用于测试,但是也要安装glusterfs组件,我们到最后测试时候再部署 


第一台服务器上的设置(192.168.254.1)

 hostnamectl set-hostname tarro1
vim /etc/hosts

在最后插入

192.168.254.1 tarro1
192.168.254.2 tarro2
192.168.254.3 tarro3
192.168.254.4 tarro4
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

然后去设置硬盘,每个硬盘只需要分一个,在根下再创建一个对应磁盘号的目录,比如/dev/sdb1就在根创建一个/b   让后把  /dev/sdb1   挂载到  /b

 

如果你还对fdisk不太熟悉可看一下这篇文章 

Linux:磁盘管理 | 查看 磁盘,创建分区,格式化文件系统,添加&开启swap交换系统 ,格式化硬盘后进行挂载 ,挂载光盘, 挂载USB ,取消挂载(卸载),开机自动挂载_linux取消挂载_鲍海超-GNUBHCkalitarro的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/130772080?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169529100316800186547894%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=169529100316800186547894&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-130772080-null-null.nonecase&utm_term=fdisk&spm=1018.2226.3001.4450 

mkdir /b /c /d /e
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdc1
mkfs -t ext4 /dev/sdd1
mkfs -t ext4 /dev/sde1
mount /dev/sdb1 /b
mount /dev/sdc1 /c
mount /dev/sdd1 /d
mount /dev/sde1 /e
vim /etc/fstab

最后面插入

/dev/sdb1               /b                      ext4    defaults        0 0
/dev/sdc1               /c                      ext4    defaults        0 0
/dev/sdd1               /d                      ext4    defaults        0 0
/dev/sde1               /e                      ext4    defaults        0 0
systemctl start glusterd.service
systemctl enable glusterd.service

第二台服务器上的设置(192.168.254.2)

跟第一台的配置基本相同

 hostnamectl set-hostname tarro2
vim /etc/hosts

在最后插入

192.168.254.1 tarro1
192.168.254.2 tarro2
192.168.254.3 tarro3
192.168.254.4 tarro4
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdc1
mkfs -t ext4 /dev/sdd1
mkfs -t ext4 /dev/sdd1
mount /dev/sdb1 /b
mount /dev/sdc1 /c
mount /dev/sdd1 /d
mount /dev/sde1 /e
vim /etc/fstab

最后面插入

/dev/sdb1               /b                      ext4    defaults        0 0
/dev/sdc1               /c                      ext4    defaults        0 0
/dev/sdd1               /d                      ext4    defaults        0 0
/dev/sde1               /e                      ext4    defaults        0 0
systemctl start glusterd.service
systemctl enable glusterd.service

第三台服务器上的设置(192.168.254.3)

hostnamectl set-hostname tarro3
vim /etc/hosts

在最后插入

192.168.254.1 tarro1
192.168.254.2 tarro2
192.168.254.3 tarro3
192.168.254.4 tarro4
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

mkdir /b /c /d
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdc1
mkfs -t ext4 /dev/sdd1
mount /dev/sdb1 /b
mount /dev/sdc1 /c
mount /dev/sdd1 /d
vim /etc/fstab

插入

/dev/sdb1               /b                      ext4    defaults        0 0
/dev/sdc1               /c                      ext4    defaults        0 0
/dev/sdd1               /d                      ext4    defaults        0 0
systemctl start glusterd
systemctl enable glusterd

第四台服务器上的设置(192.168.254.4)

hostnamectl set-hostname tarro4
vim /etc/hosts

在最后插入

192.168.254.1 tarro1
192.168.254.2 tarro2
192.168.254.3 tarro3
192.168.254.4 tarro4
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

mkdir /b /c /d
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdc1
mkfs -t ext4 /dev/sdd1
mount /dev/sdb1 /b
mount /dev/sdc1 /c
mount /dev/sdd1 /d
vim /etc/fstab

插入

/dev/sdb1               /b                      ext4    defaults        0 0
/dev/sdc1               /c                      ext4    defaults        0 0
/dev/sdd1               /d                      ext4    defaults        0 0
systemctl start glusterd
systemctl enable glusterd

部署GlusterFS

部署基础集群环境 

由于我们要部署的是集群,我们只需在一个上面设置让他们相互认识,那4个上面就会都有了

随便在一个上面操作,4个都会一起工作一起变化

 

gluster peer probe tarro1
gluster peer probe tarro2
gluster peer probe tarro3
gluster peer probe tarro4

随便在一个上面进行了设置,这时我们去查看他们有没有相互认识

在1上面查看

gluster peer status

在2上面查看

 

在3和4上面也是一样的,这时集群就部署好了 


查看群组内有几个主机

 

gluster peer status

 

只要在群集的所有主机能相互看见那就是部署成功了 


 distribute ---- 分布
stripe  ---- 条带
replaction ---- 复制


部署卷

我们使用tarro1的 /d   和 tarro2  /d  去组建分布卷

tarro1  /e   和  tarro2   /e  去组件条带卷

tarro3  /d 和 tarro4   /d   组件复制卷

tarro1  /b   tarro2  /b   tarro3  /b    tarro4  /b 组建分布式条带卷

tarro1  /c  tarro2  /c  tarro3 /c  tarro4  /c    组建分布式复制卷 

 创建分布卷   

随便一个服务器上做就行,现在他们是一个集群都相互认识

gluster volume create fenbu tarro1:/d tarro2:/d force

创建条带卷

gluster volume create tiaodai stripe 2 tarro1:/e tarro2:/e force

 创建复制卷

gluster volume create fuzhi replica 2  tarro3:/d tarro4:/d force

组建分布式条带卷

gluster volume create fenbu-tiaodai stripe  2  tarro1:/b tarro2:/b tarro3:/b tarro4:/b force

组建分布式复制卷 

gluster volume create fenbu-fuzhi replica  2  tarro1:/c tarro2:/c tarro3:/c tarro4:/c force

查看创建过的卷

 

gluster volume info

 

这个是查看全部也可以单独查看

gluster volume info 卷名称 

 


开启卷,关闭卷,删除卷 

 每个卷创建好了并不能直接使用,要开启后才能使用

gluster volume start 卷名

gluster volume start fenbu

 

关闭卷

gluster volume stop 卷名

gluster volume stop fenbu

 

删除卷

删除卷之前必须保持卷的关闭,只有卷关闭了,没有挂载使用的情况下才能删除

gluster volume delete 卷名

挂载卷(设置第五台服务器进行测试)

在挂载之前保持所有卷为开启状态

gluster volume info

 全部开启才行

现在去第五台服务器上进行搭建和测试

yum -y install glusterfs glusterfs-fuse
mkdir -p /tarro/{fenbu,tiaodai,fuzhi,fenbu-tiaodai,fenbu-fuzhi}
vim /etc/hosts

插入

192.168.254.1 tarro1
192.168.254.2 tarro2
192.168.254.3 tarro3
192.168.254.4 tarro4

现在就可以去挂载了

挂载分布卷

mount -t glusterfs tarro1:fenbu /tarro/fenbu

由于是一个集群,tarro1:fenbu  和  tarro2:fenbu  ,tarro3:fenbu  , tarro4:fenbu  是一样的

挂载条带卷

mount -t glusterfs tarro1:tiaodai /tarro/tiaodai/

挂载复制卷

mount -t glusterfs tarro1:fuzhi /tarro/fuzhi/

 挂载分布式条带卷

mount -t glusterfs tarro1:fenbu-tiaodai /tarro/fenbu-tiaodai/

挂载分布式复制卷

mount -t glusterfs tarro1:fenbu-fuzhi /tarro/fenbu-fuzhi/

 

 挂载成功

vim /etc/fstab

插入

tarro1:fenbu            /tarro/fenbu            glusterfs defaults,_netdev 0 0
tarro1:tiaodai          /tarro/tiaodai          glusterfs defaults,_netdev 0 0
tarro1:fuzhi            /tarro/fuzhi            glusterfs defaults,_netdev 0 0
tarro1:fenbu-tiaodai    /tarro/fenbu-tiaodai    glusterfs defaults,_netdev 0 0
tarro1:fenbu-fuzhi      /tarro/fenbu-fuzhi      glusterfs defaults,_netdev 0 0

reboot重启一下,如果依然自动挂载,那么就成功了

 


测试各种卷效果 

 

cp -rf /var/log/messages ./test1.log
cp -rf /var/log/messages ./test2.log
cp -rf /var/log/messages ./test3.log
cp -rf /var/log/messages ./test4.log
cp -rf /var/log/messages ./test5.log
cp test*.log /tarro/fenbu
cp test*.log /tarro/tiaodai/
cp test*.log /tarro/fuzhi
cp test*.log /tarro/fenbu-tiaodai/
cp test*.log /tarro/fenbu-fuzhi

我们现在把各种卷放进了,每个挂载点,单个文件夹为423K

我们去每个卷合成的目录看


 分布卷

 在tarro1的/d上看到了 1 2 4  

tarro2/d 看到了3  5   他们的文件大小没有变


条带卷 

 

tarro1  /e   上面 1-5都有  但是文件大小只有一半

 另一半在  tarro2  /e  里


复制卷 

 

tarro3和4的文件内容是一样的

 


分布式条带卷 

 

tarro1

 

tarro2

tarro3

 

tarro4

这个就是把有个备份的,其次保证性能


分布式复制卷 

 tarro1

tarro2 

 

tarro3

 

tarro4

这个和上面那个一样多了个备份的

这几个没有那个最好,只有在适合的环境使用最适合的卷才是最好的 

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

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

相关文章

2023年9月21日

完善登录界面的注册登录功能 头文件1 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QPushButton> #include <QLineEdit> #include <QLabel> #include <QMovie> #include <QDebug> #include <QMessage…

【计算机网络】深入理解TCP协议二(连接管理机制、WAIT_TIME、滑动窗口、流量控制、拥塞控制)

TCP协议 1.连接管理机制2.再谈WAIT_TIME状态2.1理解WAIT_TIME状态2.2解决TIME_WAIT状态引起的bind失败的方法2.3监听套接字listen第二个参数介绍 3.滑动窗口3.1介绍3.2丢包情况分析 4.流量控制5.拥塞控制5.1介绍5.2慢启动 6.捎带应答、延时应答 1.连接管理机制 正常情况下&…

记一次 .NET 某餐饮小程序 内存暴涨分析

一&#xff1a;背景 1. 讲故事 前些天有位朋友找到我&#xff0c;说他的程序内存异常高&#xff0c;用 vs诊断工具 加载时间又太久&#xff0c;让我帮忙看一下到底咋回事&#xff0c;截图如下&#xff1a; 确实&#xff0c;如果dump文件超过 10G 之后&#xff0c;市面上那些可…

ESP8266 WiFi物联网智能插座—项目简介

目录 1、项目背景 2、设备节点功能 3、上位机功能 物联网虽然能够使家居设备和系统实现自动化、智能化管理&#xff0c;但是依然需要依靠更为先进的终端插座作为根本保障&#xff0c;插座是所有家用电器需要使用的电源设备&#xff0c;插座的有序智能管理&#xff0c;对于实…

SpringMVC初级

文章目录 一、SpringMVC 概述二、springMVC步骤1、新建maven的web项目2、导入maven依赖3、创建controller4、创建spring-mvc.xml配置文件&#xff08;本质就是spring的配置件&#xff09;5、web.xml中配置前端控制器6、新建a.jsp文件7、配置tomcat8、启动测试 三、工作流程分析…

echart在折线显示横纵(横纵线沿着折线展示)

产品有个需求&#xff0c;需要在echart折线上展示横纵向坐标系&#xff0c;echart的axisPointer默认是展示在鼠标当前位置的&#xff0c;不符合需求&#xff0c;所以是使用markline实现的 在线例子和源码 先上效果图 实现思路 横纵线的x轴线是比较容易的&#xff0c;因为ech…

ONES 全球化启航,用软件服务全球企业

美西太平洋时间2023年9月6日至9月8日&#xff0c;SaaStr Annual 2023 大会在美国旧金山举办。作为全球最大规模、最具影响力的 SaaS 行业盛会&#xff0c;SaaStr 吸引了上万名来自世界各地的 SaaS 行业从业者&#xff0c;ONES 也作为展商之一参与其中。 在为期三天的大会期间&a…

实用的嵌入式编码技巧:第三部分

每个触发器都有两个我们在风险方面违反的关键规格。“建立时间”是时钟到来之前输入数据必须稳定的最小纳秒数。“保持时间”告诉我们在时钟转换后保持数据存在多长时间。 这些规格因逻辑设备而异。有些可能需要数十纳秒的设置和/或保持时间&#xff1b;其他人则需要少一个数量…

DC/DC开关电源学习笔记(十)Buck降压电路仿真及工程应用实例

(十)Buck降压电路仿真及工程应用实例 1. 仿真应用实例1.1 案例一1.2 案例二2. 工程应用实例2.1 数字DC/DC应用实例2.2 模拟DC/DC应用实例1. 仿真应用实例 1.1 案例一 仿真技术要求输入:输入电压30~90V,输出电压28V,输出电流最大10A,开关频率100KHz。我们按照参数极限工…

大语言模型之十一 Transformer后继者Retentive Networks (RetNet)

在《大语言模型之四-LlaMA-2从模型到应用》的LLama-2推理图中可以看到&#xff0c;在输入“你好&#xff01;”时&#xff0c;是串行进行的&#xff0c;即先输入“你”这个token&#xff0c;然后是“好”&#xff0c;再然后是“&#xff01;”token&#xff0c;前一个token需要…

【QT】day5

1.登录注册和数据库联动 三个头文件 #ifndef DEMO_H #define DEMO_H#include <QWidget> #include <QSqlDatabase> //数据库管理类 #include <QSqlQuery> //执行sql语句的类 #include <QSqlRecord> //数据库记录的类 #include <QMessageBox>…

传统的经典问题 Java 的 Interface 是干什么的

传统的经典问题 Java 的 Interface 是干什么 解答 上面的这个问题应该还是比较好回答的吧。 只要你做过 Java &#xff0c;通常 Interface 的问题多多少少会遇到&#xff0c;而且可能会遇到一大堆。 在JAVA编程语言中是一个抽象类型&#xff08;Abstract Type&#xff09;&…

SpringBoot之静态资源规则与定制化

文章目录 前言一、静态资源访问二、静态资源访问前缀三、webjar资源处理的默认规则 四、welcome与favicon功能1.欢迎页支持欢迎页处理规则 2.自定义Favicon 五、补充总结 前言 本文主要介绍关于SpringBoot中Web开发的简单功能。 一、静态资源访问 只要静态资源放在类路径下&am…

物联网安全优秀实践:2023年设备保护指南

物联网的发展可谓是革命性的&#xff0c;数十亿台设备实时互连、通信和共享数据。因此&#xff0c;考虑物联网安全的最佳实践至关重要。 物联网的重要性日益上升 在数字时代&#xff0c;物联网(IoT)已成为一股革命力量&#xff0c;重塑了企业运营和个人生活方式。从调节家庭温…

基于win32实现TB登陆滑动验证

这里写目录标题 滑动验证触发条件&#xff1a;失败条件&#xff1a;解决方法:清除cooKie 滑动验证方式一&#xff1a;win32 api获取窗口句柄&#xff0c;选择固定位置 成功率高方式二&#xff1a; 原自动化滑动&#xff0c;成功率中 案例 先谈理论&#xff0c;淘宝 taobao.com …

A Span-based Multi-Modal Attention Network for joint entity-relationextraction

原文链接&#xff1a; https://www.sciencedirect.com/science/article/pii/S0950705122013247?via%3Dihub Knowledge-Based Systems 2023 介绍 作者认为当前基于span的关系提取方法都太关注于span内部的语义&#xff0c;忽略了span与span之间以及span与其他模态之间&#xff…

腾讯云服务器16核 32G 28M带宽租用价格、性能测评及配置大全

腾讯云轻量应用服务器16核32G28M配置优惠价3468元15个月&#xff08;支持免费续3个月/送同配置3个月&#xff09;&#xff0c;轻量应用服务器具有100%CPU性能&#xff0c;系统盘为380GB SSD盘&#xff0c;28M带宽下载速度3584KB/秒&#xff0c;月流量6000GB&#xff0c;折合每天…

C语言入门Day_23 指针的使用

目录 前言&#xff1a; 1.指针运算符 2.指针的运算和使用 3.易错点 4.思维导图 前言&#xff1a; 上一篇博客中我们了解到指针的两个运算符号"&#xff1a; 一个是星号*&#xff0c;一个是&&#xff0c;他们的名字分别是指针运算符和取地址运算符。 1.指针运算…

【JAVA】关于抽象类的概念

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 前言 在Java中&#xff0c;抽象类是一种特殊的类&#xff0c;它无法被实例化。它只能被用作其他类的基类&#xff0c;以便子类可以继承它的属性和方法。今天我们就来谈谈JAVA中的抽象类。…

爬虫 — App 爬虫(一)

目录 一、介绍二、APP 爬虫常见反爬三、APP 抓包常用工具四、模拟器五、安装 APP1、下载 APP2、安装 APP 六、fiddler1、工作原理2、安装3、基本介绍 七、环境配置1、fiddler 的配置2、夜神模拟器的配置 八、案例 一、介绍 爬虫分类——数据来源 1、PC 端爬虫&#xff08;网页…