Linux:GlusterFS 集群

2023-09-21 20:00:21

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

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

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

更多推荐

【工作】-处理快速切换 Tab 导致列表数据不正确的情况

采取以下方案来解决:取消之前的请求:在切换到新的Tab之前,首先检查是否有之前的请求正在进行中。如果是,可以使用取消请求的机制中止之前的请求,以确保不会更新当前Tab的数据。你可以使用类似Axios提供的canceltoken来取消请求。防止并发请求:为了避免并发请求导致数据不正确,你可以在发起新请求之前添加一个标记来

视觉设计师提升自己能力的经验优漫动游

1、业余时间视觉设计师提升自己能力的经验还经常听到一种抱怨”产品有限制,我所擅长发挥不出来”,这样无疑是把自己的设计专业成长寄托在产品上。认为产品不成功自己的设计就不能成长。这其实是个借口。其实面对这个问题,最好的办法就是把设计分2条线:1.项目线:公司的实际产品项目,理解并按照实际情况,满足产品设计需求并达到公司要求

Flask框架-2-[单聊]: flask-socketio实现websocket的功能,实现单对单聊天,flask实现单聊功能

一、概述和项目结构在使用flask-socketio实现单聊时,需要将会话id(sid)与用户进行绑定,通过emit('事件','消息',to=sid),就可以把消息单独发送给某个用户了。flask_websocket|--static|--js|--jquery-3.7.0.min.js|--socket.io_4.

基于STM32设计的校园一卡通(设计配套的手机APP)

一、功能介绍【1】项目介绍随着信息技术的不断发展,校园一卡通作为一种高效便捷的管理方式,已经得到了广泛的应用。而其核心部件——智能卡也被越来越多的使用者所熟知。本文介绍的项目是基于STM32设计的校园一卡通消费系统,通过RC522模块实现对IC卡的读写操作,利用2.8寸TFT触摸屏(驱动芯片是ILI9341)作为交互界

【自学开发之旅】Flask-前后端联调-异常标准化返回(六)

注册联调:前端修改:1.修改请求向后端的url地址文件:env.development修改成VITE_API_TARGET_URL=http://127.0.0.1:9000/v1登录:token验证校验forms/user.pyfromwerkzeug.securityimportcheck_password_has

redis漏洞修复:(CNVD-2019-21763)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、漏洞内容二、镜像准备1.确认镜像版本2.下载镜像三、配置文件准备1.获取配置文件2.修改配置文件四、启动redis容器五、修改iptables文件总结前言漏扫发现机器上基于容器运行的redis的访问权限没有限制,需要增加安全配置。现在使用的

Linux图形界面与字符界面切换

1.启动时进入字符界面,后来想切换到图形界面:使用startx或init5(注:startx只是在原有运行级别3上加了图形界面,运行级别没变,而init5则是切换到运行级别5,所以要重新登录。可用runlevel命令查看当前运行级别和上一次运行级别)2.启动时进入图形界面,后来想切换到字符界面:使用Ctrl+Alt+F

Unity中UI组件对Shader调色

文章目录前言一、原理在Shader中直接暴露的Color属性,不会与UI的Image组件中的Color形成属性绑定。因为UI的Image组件中更改的颜色是顶点颜色,如果需要在修改组件中的颜色时,使Shader中的颜色也同时改变。那么就需要在应用程序阶段传入到顶点着色器的数据增加一个变量,用于给顶点着色器使用。二、实现1

【C语言基础】枚举和联合体

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】📢:文章若有幸对你有帮助,可点赞👍收藏⭐不迷路🙉📢:内容若有错误,敬请留言📝指正!原创文,转载请注明出处文章目录前言一、枚举1.1枚举的含义1.

群狼调研(长沙餐厅满意度调查)开展汽车制动厂商客户满意度调查

在当今的汽车市场中,客户满意度已经成为衡量汽车厂商服务水平的重要标准。为了更好地了解客户对汽车制动产品的需求和满意度,一些厂商会委托专业的市场调查公司进行客户满意度调查。群狼调研(长沙汽车经销商满意度调查)多年的客户满意度调查经验,通过本文介绍汽车制动厂商客户满意度调查的特点和优势。汽车制动系统是关乎汽车安全的重要部件

Unity 2021.x及以下全版本Crack

前言最近Unity那档子事不出来了吗,搞得所有人都挺烦的,顺便在公司内网需要我完成一个游戏的项目,就研究了一下如何将Unity给Crack掉。注意所有操作应有连接外网的权限以我选择的版本为例,我使用的是Unity2021.3.5f1与UnityHub3.3.0c-9。特别鸣谢:tylearymf首先到UniHacker

热文推荐