当前位置: 首页 > article >正文

Centos strema 9 环境部署Glusterfs9

本文档只是创建复制卷,分布式卷,分布式复制卷,纠删卷

操作系统

内核

角色

Ip地址

说明

CentOS Stream 9 x86_64

5.14.0-427.el9.x86_64

客户端 client

192.168.80.119

挂载存储业务机器

CentOS Stream 9 x86_64

5.14.0-427.el9.x86_64

客户端 client

192.168.80.93

brick端(manager/node)

CentOS Stream 9 x86_64

5.14.0-427.el9.x86_64

存储节点

192.168.80.183

brick端(manager/node)

CentOS Stream 9 x86_64

5.14.0-427.el9.x86_64

存储节点

192.168.80.158

brick端(manager/node)

CentOS Stream 9 x86_64

5.14.0-427.el9.x86_64

存储节点

192.168.80.159

brick端(manager/node)

CentOS Stream 9 x86_64

5.14.0-427.el9.x86_64

存储节点

192.168.80.160

brick端(manager/node)

环境准备

存储节点全部创建新的目录

mkdir -pv  /gfs/vdb1/gv0

将新的虚拟机磁盘(20G)全部划分为一个区,如果磁盘较大的话,也是分为一个区,给它20G的大小,保证挂载磁盘内存的一致性。

mkfs.ext4 /dev/vdb1

磁盘挂载完成之后需要查看磁盘的uuid,能够确保永久挂载。

blkid

如图,可以看到分区的uuid

在/etc/fstab文件中添加一行

UUID=9e4c220f-4825-4896-9eb4-573f8f045d49  /gfs/vdb1/gv0  ext4    defaults   0 0

UUID                                                                      挂载的目录  磁盘的文件系统

修改主机名称

hostnamectl set-hostname --static gfs-client119

hostnamectl set-hostname --static gfs-client93

hostnamectl set-hostname --static gfs-node183

hostnamectl set-hostname --static gfs-node158

hostnamectl set-hostname --static gfs-node159

hostnamectl set-hostname --static gfs-node160

修改hosts文件

cat >>/etc/hosts<<ldp

192.168.80.93  clant-93

192.168.80.119 clant-119

192.168.80.158 gfs-node158

192.168.80.159 gfs-node159

192.168.80.160 gfs-node160

192.168.80.183 gfs-node183

ldp

所有服务器配置时间

yum -y install chrony

cat /etc/chrony.conf

pool ntp1.aliyun.com iburst

pool ntp2.aliyun.com iburst

sourcedir /run/chrony-dhcp

driftfile /var/lib/chrony/drift

makestep 1.0 3

rtcsync

keyfile /etc/chrony.keys

ntsdumpdir /var/lib/chrony

leapsectz right/UTC

logdir /var/log/chrony

所有服务器下载源

[root@gfs-manager183 gv0]# yum list 'centos-release-gluster*'

Repository centos-gluster9 is listed more than once in the configuration

上次元数据过期检查:0:04:10 前,执行于 2024年03月06日 星期三 14时32分03秒。

已安装的软件包

centos-release-gluster9.noarch                     1.0-2.el9s                    @extras-common

可安装的软件包

centos-release-gluster10.noarch                    1.0-2.el9s                    extras-common

centos-release-gluster11.noarch                    1.0-1.el9s                    extras-common

下载源

yum -y install centos-release-gluster9.noarch

集群节点安装glusterfs-server9

yum clean all

yum makecache

所有节点安装

yum -y install centos-release-gluster9.noarch

183 158 159 160主机安装

yum -y install  glusterfs-server

删除

yum remove glusterfs-server

设置开启自启和启动

systemctl enable glusterd

systemctl start glusterd

出现的问题

启动失败

删除/var/lib/glusterd/里面的所有文件

再次启动

systemctl start glusterd

将node节点加入集群

在任意一台机器上输入

gluster peer probe gfs-node158

gluster peer probe gfs-node159

gluster peer probe gfs-node160 

gluster peer probe gfs-node183

这里使用ip,主机名,主机名别名都可以

出现的错误

这里提示的错误,可以查看当前主机的的hosts文件,里面的ip地址对应的别名或者主机名称是否和当前输入的gluster peer probe gfs-manager183  里面的 gfs-manager183是否一致。如果不一致,则修改。

查看集群节点状态

gluster peer status

这里只显示本机以外的节点信息

然后在所有存储上都可以使用该命令来验证检查

158主机

159主机

160主机

183主机

可以看到所有的集群节点都可以看到其他节点的信息。

查看所有节点的信息

在这里为了较少篇幅,不显示所有节点的显示的信息

gluster pool list

158主机

删除节点(按需删除)

gluster peer detach 节点名称

设置GlusterFS卷

在所有服务器上执行以下命令创建一个GlusterFS卷:

mkdir -pv /data/brick1/gv0

创建卷显示错误

如图所示

[root@gfs-node158 ~]# gluster volume create gfsfbs  gfs-node158:/dev/vdb1  gfs-node159:/dev/sdb1 force

volume create: gfsfbs: failed: The provided path /dev/vdb1 which is already present, is not a directory

这里就是,本人使用的是gluster volume create gfsfbs  gfs-node158:/dev/vdb1  gfs-node159:/dev/sdb1 force该命令,直接指向的主机的磁盘分区名称,但是在此之前本人将该分区进行了挂载,导致此情况的发生。

解决:将该分区和挂载的目录umount(取消挂载)

创建分布式卷

没有对文件进行分块处理;

通过扩展文件属性保存 HASH值;

支持的底层文件系统有 ext3 、ext4 、ZFS 、XFS等

特点:

文件分布在不同的服务器,不具备冗余性;

更容易和廉价地扩展卷的大小;

单点故障会造成数据丢失;

依赖底层的数据保护。

然后在任意一台服务器 上执行创建卷命令:

 gluster volume create gfsfbs  gfs-node158:/gfs/vdb1/gv0 gfs-node159:/gfs/vdb1/gv0

出现

volume create: gfsfbs: failed: The brick gfs-node158:/gfs/vdb1/gv0 is a mount point. Please create a sub-directory under the mount point and use that as the brick directory. Or use 'force' at the end of the command if you want to override this behavior.

这个错误提示表示:创建卷失败,因为brick gfs-node158:/gfs/vdb1/gv0是一个挂载点。请在挂载点下创建一个子目录,并将其用作brick目录。或者,如果您想覆盖此行为,请在命令末尾使用'force'。

我们输入强制:

gluster volume create gfsfbs  gfs-node158:/gfs/vdb1/gv0  gfs-node159:/gfs/vdb1/gv0 force

显示创建成功

启动

gluster volume start gfsfbs

gfsfbs为创建卷的名称

查看状态

gluster volume info  gfsfbs

使用客户端进行挂载

mount.glusterfs gfs-node158:/gfs/vdb1/gv0 /data/gv0

显示挂载失败

出现的错误就是,挂载的是该主机的目录,但是本次我们是创建的分布式卷,所以需要输入分布式卷名称,而不是单独的主机名和目录名称

mount -t glusterfs gfs-node158:gfsfbs /data/gv0

如果显示

这个错误提示是因为在创建 GlusterFS 卷时,brick 被创建在了系统的根分区。建议不要使用系统的根分区作为存储后端。如果你想覆盖这个行为,可以在命令末尾添加 'force'。

93主机上创建10个文件

for i in `seq 10`; do dd if=/dev/zero of=$i.txt bs=1M count=10;done

158主机显示

159主机显示

创建复制卷

gluster volume create gv0 replica 3 \

   gfs-node160:/gfs/vdb1/gv0/

   gfs-node183:/gfs/vdb1/gv0/

创建详细过程

[root@gfs-node160 ~]# gluster volume create gv0 replica 2 \

gfs-node160:/gfs/vdb1/gv0/ \

gfs-node183:/gfs/vdb1/gv0/

Replica 2 volumes are prone to split-brain. Use Arbiter or Replica 3 to avoid this. See: http://docs.gluster.org/en/latest/Administrator%20Guide/Split%20brain%20and%20ways%20to%20deal%20with%20it/.

Do you still want to continue?

 (y/n) y

volume create: gv0: failed: The brick gfs-node160:/gfs/vdb1/gv0 is a mount point. Please create a sub-directory under the mount point and use that as the brick directory. Or use 'force' at the end of the command if you want to override this behavior.

[root@gfs-node160 ~]# echo $?

1

[root@gfs-node160 ~]# gluster volume create gv0 replica 2    gfs-node160:/gfs/vdb1/gv0/    gfs-node183:/gfs/vdb1/gv0/ force

volume create: gv0: success: please start the volume to access data

gluster volume create rep-volume replica 2 transport tcp server1:/dir1 server2:/dir2

gluster volume create gv0 replica 2    gfs-node160:/gfs/vdb1/gv0/    gfs-node183:/gfs/vdb1/gv0/ force

查看卷状态

gluster volume info gv0

[root@gfs-node160 ~]# gluster volume info gv0

Volume Name: gv0

Type: Replicate

Volume ID: 203fe180-91f6-44f1-afb7-b5a6d8bcfa11

Status: Created

Snapshot Count: 0

Number of Bricks: 1 x 2 = 2

Transport-type: tcp

Bricks:

Brick1: gfs-node160:/gfs/vdb1/gv0

Brick2: gfs-node183:/gfs/vdb1/gv0

Options Reconfigured:

cluster.granular-entry-heal: on

storage.fips-mode-rchecksum: on

transport.address-family: inet

nfs.disable: on

performance.client-io-threads: off

启动

[root@gfs-node160 ~]# gluster volume start gv0

volume start: gv0: success

再次查看状态

[root@gfs-node160 ~]# gluster volume info  gv0

Volume Name: gv0

Type: Replicate

Volume ID: 203fe180-91f6-44f1-afb7-b5a6d8bcfa11

Status: Started

Snapshot Count: 0

Number of Bricks: 1 x 2 = 2

Transport-type: tcp

Bricks:

Brick1: gfs-node160:/gfs/vdb1/gv0

Brick2: gfs-node183:/gfs/vdb1/gv0

Options Reconfigured:

cluster.granular-entry-heal: on

storage.fips-mode-rchecksum: on

transport.address-family: inet

nfs.disable: on

performance.client-io-threads: off

查看创建的卷

gluster volume  list

出现的问题

mount 挂载失败

提示信息如下

[root@gfs-node93 ~]# mount -t glusterfs gv0:/gfs/vdb1/gv0  /data/gv0

Mounting glusterfs on /data/gv0 failed.

[root@gfs-node93 ~]# mount -t glusterfs gfs-node160:/gfs/vdb1/gv0  /data/gv0

Mounting glusterfs on /data/gv0 failed.

排查思路

排查思路:首先查看gfs服务端日志详细信息,日志默认在/var/log/glusterfs下面。查看glusterd.log日志详细信息

[2024-03-11 01:56:30.028377 +0000] I [MSGID: 106496] [glusterd-handshake.c:968:__server_getspec] 0-management: Received mount request for volume /gfs

[2024-03-11 01:56:30.028462 +0000] E [MSGID: 106048] [glusterd-handshake.c:475:build_volfile_path] 0-management: Failed to get volinfo []

[2024-03-11 01:56:30.028490 +0000] E [MSGID: 106128] [glusterd-handshake.c:1101:__server_getspec] 0-management: Failed to find peer info []

[2024-03-11 01:56:30.028497 +0000] E [MSGID: 106176] [glusterd-handshake.c:1137:__server_getspec] 0-management: Failed to mount the volume

[2024-03-11 02:04:26.355896 +0000] I [MSGID: 106496] [glusterd-handshake.c:968:__server_getspec] 0-management: Received mount request for volume gv0                                

查看日志之后发现服务端没有找到gv0,第二次是找不到卷。之后想了以下gfs-node160:/gfs/vdb1/gv0  gfs-node160主机和183主机创建的是gv0的卷

之后输入以下的命令

mount  -t  glusterfs gfs-node160:gv0   /data/gv0

命令说明:

-t  glusterfs :指定挂载的文件系统类型

gfs-node160:gv0:指定挂载的主机的node节点和卷名称,二者使用冒号分隔

/data/gv0:指定本机的挂载目录

测试

在客户端创建完成20个100MB的文件,创建完成之后。客户端发起同步数据,到两个node节点,到同步完成之后,基本达到了实时传输数据的效果。

结合以下的三个

磁盘IO

网络IO

硬件上的软件工作

创建分布式复制卷

命令

gluster volume create dis-rep replica 4  transport tcp  gfs-node183:/gfs/vdb1/gv0 \

gfs-node158:/gfs/vdb1/gv0 \

gfs-node159:/gfs/vdb1/gv0 \

gfs-node160:/gfs/vdb1/gv0  force

出现的问题

[root@gfs-node158 ~]# gluster volume create dis-rep replica 4  transport tcp  gfs-node183:/gfs/vdb1/gv0 \

gfs-node158:/gfs/vdb1/gv0 \

gfs-node159:/gfs/vdb1/gv0 \

gfs-node160:/gfs/vdb1/gv0

volume create: dis-rep: failed: The brick gfs-node158:/gfs/vdb1/gv0 is a mount point. Please create a sub-directory under the mount point and use that as the brick directory. Or use 'force' at the end of the command if you want to override this behavior.

创建卷失败:dis-rep错误:brick gfs-node158:/gfs/vdb1/gv0 是一个挂载点。请在挂载点下创建一个子目录,并将其用作brick目录。或者,如果你想覆盖这种行为,可以在命令末尾使用 'force'。

查看状态

启动卷组

gluster volume start dis-rep

查看卷组的状态信息

[root@gfs-node158 ~]# gluster volume info

Volume Name: dis-rep

Type: Replicate

Volume ID: 5c75db30-e5a2-4b7f-9364-afc5e036307c

Status: Started

Snapshot Count: 0

Number of Bricks: 1 x 4 = 4

Transport-type: tcp

Bricks:

Brick1: gfs-node183:/gfs/vdb1/gv0

Brick2: gfs-node158:/gfs/vdb1/gv0

Brick3: gfs-node159:/gfs/vdb1/gv0

Brick4: gfs-node160:/gfs/vdb1/gv0

Options Reconfigured:

cluster.granular-entry-heal: on

storage.fips-mode-rchecksum: on

transport.address-family: inet

nfs.disable: on

performance.client-io-threads: off

客户端进行挂载

mount -t glusterfs gfs-node159:dis-rep /mnt

基本性能测试

for i in `seq 300`; do dd if=/dev/zero of=$i-$RANDOM.txt bs=1M count=100;done

创建纠删卷

创建命令

gluster volume create disperse-volume disperse 4 transport tcp \

gfs-node158:/gfs/vdb1/gv0 \

gfs-node159:/gfs/vdb1/gv0 \

gfs-node160:/gfs/vdb1/gv0 \

gfs-node183:/gfs/vdb1/gv0

disperse-volume为卷名称

出现问题

[root@gfs-node158 gv0]# gluster volume create disperse-volume disperse 4 transport tcp gfs-node158:/gfs/vdb1/gv0 gfs-node159:/gfs/vdb1/gv0 gfs-node160:/gfs/vdb1/gv0 gfs-node183:/gfs/vdb1/gv0

There isn't an optimal redundancy value for this configuration. Do you want to create the volume with redundancy 1 ? (y/n) y

volume create: disperse-volume: failed: The brick gfs-node158:/gfs/vdb1/gv0 is a mount point. Please create a sub-directory under the mount point and use that as the brick directory. Or use 'force' at the end of the command if you want to override this behavior.

创建卷失败:分散卷错误:brick gfs-node158:/gfs/vdb1/gv0 是一个挂载点。请在挂载点下创建一个子目录,并将其用作brick目录。或者,如果你想覆盖这种行为,可以在命令末尾使用 'force'。

修改创建命令

gluster volume create disperse-volume disperse 4 transport tcp \

gfs-node158:/gfs/vdb1/gv0 \

gfs-node159:/gfs/vdb1/gv0 \

gfs-node160:/gfs/vdb1/gv0 \

gfs-node183:/gfs/vdb1/gv0  force

查看状态

启动disperse-volume卷

[root@gfs-node158 gv0]# gluster volume start disperse-volume

volume start: disperse-volume: success

查看状态

[root@gfs-node158 gv0]# gluster volume info

Volume Name: disperse-volume

Type: Disperse

Volume ID: 404b9906-21cf-4d2c-aa99-f8bb8b24b4c4

Status: Started

Snapshot Count: 0

Number of Bricks: 1 x (3 + 1) = 4

Transport-type: tcp

Bricks:

Brick1: gfs-node158:/gfs/vdb1/gv0

Brick2: gfs-node159:/gfs/vdb1/gv0

Brick3: gfs-node160:/gfs/vdb1/gv0

Brick4: gfs-node183:/gfs/vdb1/gv0

Options Reconfigured:

storage.fips-mode-rchecksum: on

transport.address-family: inet

nfs.disable: on

在客户端进行挂载

mount -t glusterfs gfs-node159:disperse-volume /mnt

删除文件之后,df -h 查看磁盘占用未释放


http://www.kler.cn/a/273220.html

相关文章:

  • 漫途焊机安全生产监管方案,提升安全生产管理水平!
  • Kafka日志记录
  • 你知道Mac也能拥有丰富的右键菜单栏吗?
  • c++ 贪心算法
  • 面试题:JVM(三)
  • 「C/C++」C++设计模式 之 抽象工厂模式(Abstract Factory)
  • idea项目mapper.xml中的SQL语句黄色下划线去除
  • 高效使用git流程分享
  • css背景从上到下颜色渐变、css背景从左到右颜色渐变、 css框线展示外阴影、css框线展示内阴影
  • Java项目:62 基于ssm的校园驿站管理系统+jsp
  • 影响交易收益的因素有哪些?
  • 【蓝桥杯选拔赛真题69】python小松鼠运坚果 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • 编曲学习:如何编写钢琴织体 Cubase12逻辑预置 需要弄明白的问题
  • 高可用篇_A Docker容器化技术_IV Dockerfile的基本概念和应用
  • Vue通用后台管理项目实战-1
  • Day17 深入类加载机制
  • 杭州市医疗器械经营监督管理规定(景区分局)
  • 罗马数字转整数-力扣通过自己编译器编译
  • 计算机网络之网络层概念整理(上)
  • 算法笔记p328_并查集
  • LeetCode350:两个数组的交集Ⅱ
  • 腾讯云优惠券领取指南:让你省钱又省心
  • 文件系统I/O FATFS RW 源码分析
  • win修改图标自定义QQ桌面图标
  • 粤嵌6818开发板通过MobaXterm使用SSH连接开发板
  • 前端入职配置新电脑!!!