GlusterFS 分布式文件系统使用

一、概述

GlusterFS 是一个开源的分布式文件系统。

由存储服务器、客户端以及NFS/Samba 存储网关(可选,根据需要选择使用)组成。
没有元数据服务器组件,这有助于提升整个系统的性能、可靠性和稳定性。

GlusterFS同时也是Scale-Out(横向扩展)存储解决方案Gluster的核心,在存储数据方面具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。

GlusterFS支持借助TCP/IP或InfiniBandRDMA网络(一种支持多并发链接的技术,具有高带宽、低时延、高扩展性的特点)将物理分散分布的存储资源汇聚在一起,统一提供存储服务,并使用统一全局命名空间来管理数据。

GlusterFS特点:

  • 扩展性和高性能
  • 高可用性
  • 全局统一命名空间
  • 弹性卷管理
  • 基于标准协议

二、分布式卷原理及特点

这里我们只用到了分布式卷,此文档只安装分布式卷
特点: 文件没有进行分块处理,一个文件只会存在某一个server中,效率并没有提升

比如file1 和file2 上传,file1只会在一个sever上

  • 文件分布在不同服务器,不具备冗余性
  • 更容易和无代价的拓展卷的大小
  • 单点故障会导致数据丢失
  • 依赖底层的数据保护

三、搭建

1.部署规划

基础信息:
服务器类型 操作系统 GlusterFS版本
X86 Cnetos 7.9 9.6(9版本最新20230221)

安装规划:

|主机名 |磁盘名 挂载名|
| -------- | -------- | -------- |
|gwtest-01(192.168.1.199)| /dev/sdb /gfsdata01 /dev/sdc /gfsdata02 /dev/sdd /gfsdata03|
|gwtest-02(192.168.1.7| /dev/sdb /gfsdata01 /dev/sdc /gfsdata02 /dev/sdd /gfsdata03|
| gwtest-03(192.168.1.142)| 作为测试扩容节点 /dev/sdb /gfsdata01 /dev/sdc /gfsdata02 /dev/sdd /gfsdata03|

2.准备磁盘目录

所有节点执行

fdisk /dev/sdb
mkfs -t xfs /dev/sdb1fdisk /dev/sdc
mkfs -t xfs /dev/sdc1fdisk /dev/sdd
mkfs -t xfs /dev/sdd1

依次将所有节点上所有盘初始化并挂载好目录

mkdir /gfsdata01 /gfsdata02 /gfsdata03
mount /dev/sdb1 /gfsdata01
mount /dev/sdc1 /gfsdata02
mount /dev/sdd1 /gfsdata03

将挂载信息写到/etc/fstab 中,开机自动挂载

3.软件安装

下载的是gluster9.6版本,打成tar包,解压后即可使用。所有节点执行

# tar -xvf glusterfs-9.6.tar.gz
# cd glusterfs-9.6

执行安装
# rpm -Uvh --force --nodeps *.rpm

开启服务:开机自启动并启动glusterd进程
# systemctl enable glusterd && systemctl start glusterd

查看glusterd进程状态
# systemctl status glusterd

4.添加存储信任池
在gwtest-01节点运行:

# gluster peer probe gwtest-02
peer probe: success. # gluster peer probe gwtest-03
peer probe: success. 

查看信任池状态:
在一台上可以看到其它台的信息

[root@gwtest-01 ~]# gluster peer status
Number of Peers: 2Hostname: gwtest-02
Uuid: 42c97841-3e42-4305-90f5-f3bca183a627
State: Peer in Cluster (Connected)Hostname: gwtest-03
Uuid: 94c85a3f-78da-4a34-97f2-6ca9f12a2e54
State: Peer in Cluster (Connected)

四、创建卷

1.创建分布式卷

将前2台的三块盘创建一个分布式卷

[root@gwtest-01 ~]# gluster volume create dis-gw-volume gwtest-01:/gfsdata01 gwtest-01:/gfsdata02 gwtest-01:/gfsdata03 gwtest-02:/gfsdata01 gwtest-02:/gfsdata02 gwtest-02:/gfsdata03 forcevolume create: dis-gw-volume: success: please start the volume to access data

2.查看并启动

查看已经创建的卷:

[root@gwtest-01 ~]# gluster volume list
dis-gw-volume

启动卷

[root@gwtest-01 ~]# gluster volume start dis-gw-volume
volume start: dis-gw-volume: success查看卷的状态
[root@gwtest-01 ~]# gluster volume status  dis-gw-volume 
Status of volume: dis-gw-volume
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick gwtest-01:/gfsdata01                 49152     0          Y       5555 
Brick gwtest-01:/gfsdata02                 49153     0          Y       5571 
Brick gwtest-01:/gfsdata03                 49154     0          Y       5587 
Brick gwtest-02:/gfsdata01                 49152     0          Y       6777 
Brick gwtest-02:/gfsdata02                 49153     0          Y       6793 
Brick gwtest-02:/gfsdata03                 49154     0          Y       6809 Task Status of Volume dis-gw-volume
------------------------------------------------------------------------------
There are no active volume tasks

3.查看卷的信息

[root@gwtest-01 ~]# gluster volume info dis-gw-volume Volume Name: dis-gw-volume
Type: Distribute
Volume ID: 85106618-39ee-4012-93b3-9f1bbcd83de2
Status: Started
Snapshot Count: 0
Number of Bricks: 6
Transport-type: tcp
Bricks:
Brick1: gwtest-01:/gfsdata01
Brick2: gwtest-01:/gfsdata02
Brick3: gwtest-01:/gfsdata03
Brick4: gwtest-02:/gfsdata01
Brick5: gwtest-02:/gfsdata02
Brick6: gwtest-02:/gfsdata03
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

五、使用卷

1.挂载目录

可先准备好相应的挂载目录(注:挂载的服务器需要安装gluster 客户端)

手动挂载

[root@gwtest-01 ~]# mount -t glusterfs gwtest-01:/dis-gw-volume /gfs_gwtest
WARNING: getfattr not found, certain checks will be skipped..

注意:如果有这个WARNING,请安装 yum install attr -y

我们这里就在ambari01 中

自动挂载:
写到/etc/fstab 文件中
gwtest-01:dis-gw-volume /gfs_gwtest defaults,_netdev 0 0

然后mount -a既可

查看挂载情况

[root@gwtest-01 ~]# df -h 
Filesystem                 Size  Used Avail Use% Mounted on
gwtest-01:/dis-gw-volume  600G  6.2G  594G   2% /gfs_gwtest

2.准备测试文件

生成多个小文件:

[root@gwtest-01 ~]# for i in `seq -w 1 20`; do cp -rp /var/log/messages /gfs_gwtest/copy-test-$i; done

可以多执行几次,如果文件少的话

查看生成的文件 , 可以看到是分布在不同的节点上的

六、扩容缩容与重分布

GlusterFS支持brick的扩容缩容及数据重平衡,这里使用分布式卷做一次测试

1.准备环境

这里就紧接着上面的安装测试,将第三台机器扩容进去
目前的分布式卷的情况是:

[root@gwtest-01 ~]# gluster volume info dis-gw-volume Volume Name: dis-gw-volume
Type: Distribute
Volume ID: 85106618-39ee-4012-93b3-9f1bbcd83de2
Status: Started
Snapshot Count: 0
Number of Bricks: 6
Transport-type: tcp
Bricks:
Brick1: gwtest-01:/gfsdata01
Brick2: gwtest-01:/gfsdata02
Brick3: gwtest-01:/gfsdata03
Brick4: gwtest-02:/gfsdata01
Brick5: gwtest-02:/gfsdata02
Brick6: gwtest-02:/gfsdata03
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

2.分布式卷的扩容

将第三台机器的磁盘扩容进去

执行扩容brick的操作:

[root@gwtest-01 ~]#gluster volume add-brick dis-gw-volume gwtest-03:/gfsdata01 gwtest-03:/gfsdata02 gwtest-03:/gfsdata03 force
volume add-brick: success

查看卷的信息,发现新brick已经添加上去:

[root@gwtest-01 ~]#  gluster volume info dis-gw-volume Volume Name: dis-gw-volume
Type: Distribute
Volume ID: 85106618-39ee-4012-93b3-9f1bbcd83de2
Status: Started
Snapshot Count: 0
Number of Bricks: 9
Transport-type: tcp
Bricks:
Brick1: gwtest-01:/gfsdata01
Brick2: gwtest-01:/gfsdata02
Brick3: gwtest-01:/gfsdata03
Brick4: gwtest-02:/gfsdata01
Brick5: gwtest-02:/gfsdata02
Brick6: gwtest-02:/gfsdata03
Brick7: gwtest-03:/gfsdata01
Brick8: gwtest-03:/gfsdata02
Brick9: gwtest-03:/gfsdata03
Options Reconfigured:
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on

但是此时的新目录里是没有文件的,历史的文件,需要做重分布

[root@gwtest-03 ~]# ls /gfsdata0*
/gfsdata01:/gfsdata02:/gfsdata03:
[root@gwtest-03 ~]# 

3.分布式卷的文件重分布
执行重分布命令:

[root@gwtest-01 ~]# gluster volume rebalance dis-gw-volume start
volume rebalance: dis-gw-volume: success: Rebalance on dis-gw-volume has been started successfully. Use rebalance status command to check status of the rebalance process.
ID: 56dfdf10-8725-4ffd-8333-93293168da43

重分布的进度状态信息:
重分布是一个过程,不会立刻成功,可以用此命令来查看进度

[root@gwtest-01 ~]# gluster volume rebalance dis-gw-volume statusNode Rebalanced-files          size       scanned      failures       skipped               status  run time in h:m:s---------      -----------   -----------   -----------   -----------   -----------         ------------     --------------gwtest-02               16       546.4KB            26             0             0            completed        0:00:00gwtest-03                0        0Bytes            20             0             0            completed        0:00:00localhost               27       921.4KB            34             0             0            completed        0:00:00
volume rebalance: dis-gw-volume: success

扩容完成以后,就可以看到,新增加的节点有文件移动过去,旧的节点文件减少

4.分布式卷的缩容

执行缩容命令:

[root@gwtest-01 ~]# gluster volume remove-brick dis-gw-volume gwtest-03:/gfsdata01 gwtest-03:/gfsdata02 gwtest-03:/gfsdata03 start
It is recommended that remove-brick be run with cluster.force-migration option disabled to prevent possible data corruption. Doing so will ensure that files that receive writes during migration will not be migrated and will need to be manually copied after the remove-brick commit operation. Please check the value of the option and update accordingly. 
Do you want to continue with your current cluster.force-migration settings? (y/n) y
volume remove-brick start: success
ID: ca928a65-1202-4aba-babd-d98ead1558d5

查看缩容状态:
缩容命令结束后,后台进程会自动将该节点的文件迁移至别的brick,可以使用一下命令查看进度,待全部迁移完成后继续

[root@gwtest-01 ~]# gluster volume remove-brick dis-gw-volume gwtest-03:/gfsdata01 gwtest-03:/gfsdata02 gwtest-03:/gfsdata03 statusNode Rebalanced-files          size       scanned      failures       skipped               status  run time in h:m:s---------      -----------   -----------   -----------   -----------   -----------         ------------     --------------gwtest-03               23       784.6KB            23             0             0            completed        0:00:00

此时看文件已经没有:

[root@gwtest-03 ~]# ls /gfsdata0*
/gfsdata01:/gfsdata02:/gfsdata03:

执行删除提交:

[root@gwtest-01 ~]# gluster volume remove-brick dis-gw-volume gwtest-03:/gfsdata01 gwtest-03:/gfsdata02 gwtest-03:/gfsdata03 commit
volume remove-brick commit: success
Check the removed bricks to ensure all files are migr

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

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

相关文章

asp.net mvc 重新引导视图路径,改变视图路径

asp.net mvc 重新引导视图路径,改变视图路径 使用指定的控制器上下文和母版视图名称来查找指定的视图 通过本文学习,你可以根据该技法,去实现,站点自定义皮肤,手机站和电脑站,其他设备站点,在不…

Python核心编程 --- 高级数据类型

Python核心编程 — 高级数据类型 字符串 列表 元组 字典 1.序列 序列:一组按顺序排列的数据集合。 在Python中存在三种内置的序列类型:字符串、列表、元组 优点:可支持索引和切片操作 特点:第一个正索引为0,指…

基于python+vue学生作业管理系统flask-django-nodejs-php

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

【深度学习】基于机器学习的无机钙钛矿材料形成能预测,预测形成能,神经网络,回归问题

文章目录 任务分析数据处理处理离散数值处理缺失值处理不同范围的数据其他注意事项 我们的数据处理模型训练网页web代码、指导 任务分析 简单来说,就是一行就是一个样本,要用绿色的9个数值,预测出红色的那1个数值。 数据处理 在进行深度数…

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

为什么要写这么一篇介绍ArcGis的文章呢?因为大部分人也包括ArcGisdada,在使用ArcMap应用程序创建工程时总以为我们就是使用了ArcGis这个软件的所有。其实不然,在后期的接触和使用中慢慢发现原来ArcMap只是ArcGis这个综合平台的一部分&#xf…

现在阿里云云服务器租用多少钱?一张表,报价单

2024年阿里云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

<c语言学习>结构体

结构体类型 为什么要有结构体 我们用c语言描述年龄时候,可以定义一个整形类型来实现: int age; age 18; printf("年龄为%d",age); (c语言描述年龄) 由于年龄这一属性比较单一,类似性别、某游戏角色攻击力、血量都可以用c语言内置…

FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx

MP4是最常见的视频封装格式,在《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2.3 自行编译与安装FFmpeg”介绍了如何给FFmpeg集成x264和x265两个库,从而支持H.264和H.265两种标准的编解码。 视频的封装格式除了悠久的MP4和ASF之外&…

string类详解及重要函数实现

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今日主菜:string类 主厨:邪王真眼 所属专栏:c专栏 主厨的主页:Chef‘s blog 前言: 咱们之前也是…

【事务】开发用到的事务,TransactionDefinition实例详解,事务的传播机制

【事务】开发中用到的事务,TransactionDefinition实例详解 一、TransactionDefinition 介绍1、隔离级别(Isolation Level):2、传播行为(Propagation Behavior):3、超时设置(Timeout …

第十三届蓝桥杯物联网试题(省赛)

做后感悟: OLED显示函数需要一直显示,所以在主函数中要一直循环,为了确保这个检错功能error只输出一次,最好用中断串口进行接收数据,数据收完后自动进入中断函数中,做一次数据检查就好了,该开灯…

单片机LED流水灯的演变过程

文章目录 前言一、代码的重要三部曲二、使用步骤1.引入库 总结 前言 提示:这里可以添加本文要记录的大概内容: 课程需要: 提示:以下是本篇文章正文内容,下面案例可供参考 一、代码的重要三部曲 1.头文件 #include …

GEE:为什么在机器学习分类或回归时,提取特征变量后的样本点下载到本地时,数据为空且缺少坐标?

作者:CSDN @ _养乐多_ 在博客《GEE:随机森林分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)》和《GEE:随机森林回归预测教程(样本点、特征添加、训练、精度、参数优化、贡献度)》中,详细记录了在 Google Earth Engine(GEE)平台上进行机器学…

银行数字人民币系统应用架构设计

2019年10月,01区块链联合数字资产研究院发布了《人民币3.0:中国央行数字货币运行框架与技术解析》,从数字货币界定和人民币发展历程出发,区分了央行数字货币与比特币、移动支付等的区别,全面介绍了央行数字货币的发展历…

Linux设备驱动开发 - 三色LED呼吸灯分析

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 展锐UIS7885呼吸灯介绍呼吸灯调试方法亮蓝灯亮红灯亮绿灯展锐UIS7885呼吸灯DTS配置ump9620 PMIC驱动ump9620中的LED呼吸灯驱动LED的tr…

代码+视频,R语言logistic回归交互项(交互作用)的可视化分析

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,不仅如此,交互作用还可以使用来进行数据挖掘。在既往文章中,我们已…

MATLAB算法实战应用案例精讲-【数模应用】逐步回归(最终篇)(附Java、python、R语言和MATLAB代码实现)

目录 前言 知识储备 相关性检验 相关性系数 皮尔逊相关系数与皮尔曼相关系数<

【理解机器学习算法】之分类问题的模型评估(ROC-AUC)

ROC曲线&#xff08;接收者操作特性曲线&#xff09;和AUC&#xff08;曲线下面积&#xff09;是在不同阈值设置下&#xff0c;用于分类问题的性能度量工具。下面是它们所代表的含义以及使用方法&#xff1a; ROC曲线 代表含义&#xff1a;ROC曲线是一个图形化的表示&#xf…

掌握收支明细,轻松记录收支明细,一键打印财务自由

在繁忙的生活中&#xff0c;你是否曾感到对个人的财务状况一头雾水&#xff1f;是否曾在需要证明收支情况时手忙脚乱&#xff0c;翻箱倒柜地寻找凭证&#xff1f;今天&#xff0c;我要向你揭示一个简单而高效的方法&#xff0c;帮助你轻松记录收支明细&#xff0c;并一键打印&a…

Cesium 默认选中框设置

Cesium 默认提供的选中框 进来关注下不迷人&#xff0c;还有更多集合专栏&#xff01; 1、设置状态&#xff1a; 设置false 就不会出现这个默认的状态&#xff0c;如果需要修改如下&#xff1a; viewer._selectedEntitynewEntity newEntity 就是你需要设置选中框的样式 可以…