Linux:GlusterFS 集群

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.mzph.cn/news/84224.shtml

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

相关文章

Everything + Cpolar,打造在线搜索的终极神器

文章目录 前言1. 下载安装注册cpolar2. Everything安装和设置2.1 进入Everything官网进行下载2.2 对Everything文件进行设定 3. 创建cpolar内网穿透隧道4. 公网访问测试Everything5. 固定连接公网地址 前言 你还在用Windows资源管理器自带的搜索工具来搜索文件吗?这…

轮换对称性

二重积分 普通对称性–D关于 y x yx yx对称: ∬ D f ( x , y ) d σ { 2 ∬ D 1 f ( x , y ) d σ f ( x , y ) f ( y , x ) 0 f ( x , y ) − f ( y , x ) \iint_{D}f(x,y)d\sigma\begin{cases} 2\iint_{D_1}f(x,y)d\sigma\ \ \ \ \ \ f(x,y)f(y,x) \\ 0 \ \…

OpenStack创建云主机并连接CRT

文章目录 OpenStackT版创建云主机并连接CRT命令行操作(1)创建镜像(2)创建实例(3)创建网络创建内网创建外网 (4)创建安全组(5)创建路由(6&#xff…

1952-2018年中国各省份人均GDP数据(消涨处理)

1952-2018年中国各省份人均GDP数据(消涨处理) 1、时间:1952-2018年 2、范围:30省市 3、指标:人均GDP 4、来源:《新中国60周年统计汇编》和各省年鉴 5、指标解释: 过程为环比人均GDP指数转…

YSA Toon (Anime/Toon Shader)

这是一个Toon着色器/Cel阴影着色器,用于Unity URP 此着色器的目的是使角色或物体阴影实时看起来尽可能接近真实的动画或卡通效果 可以用于游戏,渲染,插图等 着色器特性,如:面的法线平滑、轮廓修复、先进的边缘照明、镜面照明、完全平滑控制 这个文档包括所有的功能https:/…

Eclipse ABAP ADT 集成详细安装教程

最近看到网上有个源码使用CDS做的,然后看了一下原来还可以用eclipse,趁热打铁,试了一把,最后成功了,中间可能会有一些报错,可以自己慢慢解决,大概就是这样的。 SAP的开发,有三种开发…

Java————List

一 、顺序表和链表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构, 常见的线性表:顺序表、链表、栈、队列… 线性表在逻辑上是线性结构,也就说是连续的一条直…

微信小程序与idea后端如何进行数据交互

交互使用的其实就是调用的req.get(url)方法 进行路径访问,你要先保证自己的springboot项目已经成功运行了: 如下: 如何交互的? 微信小程序:如下为index.js页面 在onLoad()事件中调用方法Project.findAllCities() 要…

贝叶斯滤波计算4d毫米波聚类目标动静属性

机器人学中有些问题是二值问题,对于这种二值问题的概率评估问题可以用二值贝叶斯滤波器binary Bayes filter来解决的。比如机器人前方有一个门,机器人想判断这个门是开是关。这个二值状态是固定的,并不会随着测量数据变量的改变而改变。就像门…

rv1126-rv1109-test

测试指令 播放音频:aplay aigei.wav 测试时间: 查看系统时间:date 设置时间:date -s "2023-09-21 16:00:00" 设置芯片时间:hwclock -w 查看芯片时间:hwclock 测试背光: echo 0 > sys/class/backlight/backlight/brightness echo 50 > sys/class/backlig…

期权如何交易?期权如何做模拟交易?

买卖期权的第一步就是要有期权账户,国内的期权品种有商品期权和ETF期权以及股指期权,每种的开户方式和要求都不同,下文为大家介绍期权如何交易?期权如何做模拟交易? 一、期权交易需要开立一个期权账户,可以…

【Spring Boot 源码学习】OnBeanCondition 详解

Spring Boot 源码学习系列 OnBeanCondition 详解 引言往期内容主要内容1. getOutcomes 方法2. getMatchOutcome 方法2.1 ConditionalOnBean 注解处理2.2 ConditionalOnSingleCandidate 注解处理2.3 ConditionalOnMissingBean 注解处理 3. getMatchingBeans 方法 总结 引言 上篇…

实战演练 | Navicat 常用功能之转储与运行 SQL 文件

数据库管理工作中,"转储 SQL 文件"和"运行 SQL 文件"是两个极为常见操作。一般来说,用户使用数据库管理工具或命令行工具来完成。Navicat 管理开发工具中的“转储 SQL 文件”和“运行 SQL 文件”功能具有直观易用的界面、多种文件格…

Linux内核源码分析 (B.x)Linux物理内存的初始化

Linux内核源码分析 (B.x)Linux物理内存的初始化 文章目录 Linux内核源码分析 (B.x)Linux物理内存的初始化一、DDR简介二、内存节点三、内存管理区域ZONE四、 struct zone五、 struct page六、mem_map数组七、伙伴系统简介八、迁移类型九、内存初始化十、总结 一、DDR简介 详细可…

threejs给3d模型中的物体换肤(修改材质)

变成这样 this.otherModel.traverse(function (child) {if (child instanceof THREE.Mesh && child.name Cylinder240) {// 导入纹理const textureLoader new THREE.TextureLoader();const floorColortextureLoader.load(require(../../../public/img/color.jpg));co…

5个GitHub热门算法岗面试攻略,附资源下载

最近听行内的大佬们讨论,说今年的秋招情况依旧卷的激烈,不知道大家有没有都拿到满意的offer? 已经拿到的同学我先给赞个,还没有获得心仪offer的同学也不要着急,当下最该做的就是抓紧时间提升自己的硬实力,…

openssl创建CA证书教程

配置生成CA证书 总示意图: (1),通过openssl创建CA证书 第一步:创建一个秘钥,这个便是CA证书的根本,之后所有的东西都来自这个秘钥 # 通过rsa算法生成2048位长度的秘钥 openssl genrsa -out myCA.key 2048 第二步&#…

小谈设计模式(5)—开放封闭原则

小谈设计模式(5)—开放封闭原则 专栏介绍专栏地址专栏介绍 开放封闭原则核心思想关键词概括扩展封闭 解释抽象和接口多态 代码示例代码解释 优缺点优点可扩展性可维护性可复用性高内聚低耦合 缺点抽象设计的复杂性需要预留扩展点可能引入过度设计 总结 专…

uniapp 使用subNVue原生子窗体显示弹框或悬浮框

效果展示 在uniapp中,我们可以使用subNVue原生子窗体来解决web-view等原生页面中弹框无法显示的问题。 subNVue原生子窗体是uniapp提供的一种原生组件,可以在uniapp中嵌入原生页面,并且可以与uniapp页面进行通信。我们可以在原生页面中使用…

前后端分离的低代码快速开发框架

低代码开发正逐渐成为企业创新的关键工具。通过提高开发效率、降低成本、增强灵活性以及满足不同用户需求,低代码开发使企业能够快速响应市场需求,提供创新解决方案。选择合适的低代码平台,小成本组建一个专属于你的应用。 项目简介 这是一个…