GlusterFS 9.6 版本的变化(详解和安装~~~~)

文章目录

一、GlusterFS 9.6 版本部署与应用

1.1 GlusterFS 简介

GlusterFS 是一款高性能、开源的分布式文件系统,广泛应用于企业级存储需求。通过将多台服务器的存储资源整合成一个统一的全局命名空间,GlusterFS 提供了横向扩展能力,适合处理 PB 级别的大规模数据存储。

GlusterFS 的主要特性:

  1. 无元数据架构: 避免了传统分布式文件系统中因元数据服务器单点故障带来的问题。
  2. 高扩展性: 通过增加存储节点来扩展容量和性能,支持动态调整存储资源。
  3. 多种协议支持: 包括 NFS、SMB、FTP 等,且与 POSIX 标准完全兼容。
  4. 卷类型多样性: 支持多种卷类型,如分布式卷、复制卷和分布式复制卷,满足多样化的业务需求。

1.2 GlusterFS 9.6 版本的变化

GlusterFS 9.6 版本中,功能得到了进一步优化,同时对一些功能进行了调整和精简。以下是主要的变化:

  1. 条带卷和分布式条带卷取消
    • 条带卷(Stripe Volume)和分布式条带卷(Distribute Stripe Volume)在 6.0 版本后已被移除,不再支持。
    • 原因:这两种卷的可靠性较差,缺乏冗余机制,不适合现代存储需求。
  2. 优化的性能
    • 在高并发和大规模存储场景下性能提升显著,尤其是在 RDMA 网络环境中的数据传输效率进一步优化。
  3. 增强的兼容性
    • 提升了与 CentOS 7.9 及相关内核的兼容性,确保了客户端和服务端之间的无缝通信。
  4. 管理功能改进
    • 提供更灵活的卷管理功能,并增强了访问控制机制,可基于 IP 地址实现细粒度的权限管理。

1.3 实验环境准备

为展示 GlusterFS 9.6 的部署与应用,我们规划了以下实验环境。

1.3.1 系统环境

  • 操作系统:CentOS 7.9 x86_64
  • 主机规划
    • Server1: 192.168.78.22 (node01)
    • Server2: 192.168.78.3 (node02)
    • Server3: 192.168.78.4 (node03)
    • Server4: 192.168.78.5 (node04)
    • Client1: 192.168.78.11 (client)
  • 存储目录: 每台存储节点的存储目录规划为:
    • /data/ceshi1
    • /data/ceshi2
    • /data/ceshi3

1.3.2 主机配置

1. 修改主机名

在每台节点上,使用以下命令修改主机名:

hostnamectl set-hostname node01
hostnamectl set-hostname node02
hostnamectl set-hostname node03
hostnamectl set-hostname node04
2. 配置 /etc/hosts

在每台节点上,编辑 /etc/hosts 文件,添加以下内容:

echo "192.168.78.22 node01" >> /etc/hosts
echo "192.168.78.3 node02" >> /etc/hosts
echo "192.168.78.4 node03" >> /etc/hosts
echo "192.168.78.5 node04" >> /etc/hosts

1.3.3 安装 GlusterFS 服务端

1. 添加 GlusterFS YUM 源并安装相关组件:

在所有存储节点上执行以下命令:

# 添加官方源
yum -y install centos-release-gluster

# 安装服务端和客户端相关组件
yum -y install glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
2. 如果安装中出现版本冲突或兼容性问题,可先卸载再重新安装:
yum -y remove glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma
3. 启动 GlusterFS 服务并设置开机自启:
systemctl start glusterd.service
systemctl enable glusterd.service

1.3.4 配置存储信任池

node01 节点上,将其他节点添加到信任池:

gluster peer probe node02
gluster peer probe node03
gluster peer probe node04

验证节点状态:

gluster peer status

示例输出:

Number of Peers: 3

Hostname: node02
Uuid: <UUID>
State: Peer in Cluster (Connected)

Hostname: node03
Uuid: <UUID>
State: Peer in Cluster (Connected)

Hostname: node04
Uuid: <UUID>
State: Peer in Cluster (Connected)

1.3.5 创建存储目录

在所有存储节点上创建存储目录:

mkdir -p /data/ceshi{1..3}

1.3.6 创建卷

1. 创建分布式复制卷

分布式复制卷既具备分布式存储的扩展性,又具备复制卷的高可用性:

gluster volume create dis-rep replica 4 \
node01:/data/ceshi1 node02:/data/ceshi1 node03:/data/ceshi1 node04:/data/ceshi1 force
gluster volume start dis-rep
gluster volume info dis-rep
2. 创建复制卷

复制卷为所有文件创建冗余副本,提供高可用性:

gluster volume create rep-volume replica 2 \
node01:/data/ceshi2 node02:/data/ceshi2 force
gluster volume start rep-volume
gluster volume info rep-volume
3. 创建分布式卷

分布式卷将文件分散存储在多个节点上,适合对数据冗余性要求不高的场景:

gluster volume create dis-volume \
node01:/data/ceshi3 node02:/data/ceshi3 force
gluster volume start dis-volume
gluster volume info dis-volume
4. 查看所有卷的列表

查看当前创建的所有卷:

gluster volume list

1.3.7 客户端配置

1. 安装客户端组件

client 节点上安装 GlusterFS 客户端:

yum install -y glusterfs glusterfs-fuse
2. 创建挂载路径

client 节点上创建挂载目录:

mkdir -p /ceshi/{dis,rep,dis_rep}
ls /ceshi
3. 挂载 GlusterFS 文件系统

临时挂载

mount.glusterfs node01:dis-volume /ceshi/dis
mount.glusterfs node01:rep-volume /ceshi/rep
mount.glusterfs node01:dis-rep /ceshi/dis_rep

验证挂载:

df -Th

永久挂载: 编辑 /etc/fstab 文件,添加以下内容:

node01:dis-volume		/ceshi/dis				glusterfs		defaults,_netdev		0 0
node01:rep-volume		/ceshi/rep				glusterfs		defaults,_netdev		0 0
node01:dis-rep			/ceshi/dis_rep			glusterfs		defaults,_netdev		0 0

执行以下命令挂载:

mount -a

二、测试 GlusterFS 卷的读写及文件分布

2.1 测试环境准备

在客户端节点进行以下操作,准备测试文件并复制到挂载的卷中:

2.1.1 创建测试文件

使用 dd 命令在 /opt 目录下生成多个测试文件:

cd /opt
dd if=/dev/zero of=/opt/demo1.log bs=1M count=40
dd if=/dev/zero of=/opt/demo2.log bs=1M count=40
dd if=/dev/zero of=/opt/demo3.log bs=1M count=40
dd if=/dev/zero of=/opt/demo4.log bs=1M count=40
dd if=/dev/zero of=/opt/demo5.log bs=1M count=40

验证文件生成:

ls -lh /opt

2.1.2 复制文件到挂载目录

将生成的测试文件分别复制到挂载的 GlusterFS 卷中:

cp /opt/demo* /ceshi/dis
cp /opt/demo* /ceshi/rep/
cp /opt/demo* /ceshi/dis_rep/

2.2 验证分布式复制卷

分布式复制卷具有数据冗余特性,所有文件在每个节点上都有完整副本。

文件分布验证:

node01node02node03node04 节点的 /data/ceshi1 目录中验证文件分布情况:

[root@node01 ~]# ll -h /data/ceshi1
总用量 200M
-rw-r--r-- 2 root root 40M 48 23:30 demo1.log
-rw-r--r-- 2 root root 40M 48 23:30 demo2.log
-rw-r--r-- 2 root root 40M 48 23:30 demo3.log
-rw-r--r-- 2 root root 40M 48 23:30 demo4.log
-rw-r--r-- 2 root root 40M 48 23:30 demo5.log

同样在 node02node03node04 节点上查看文件:

[root@node02 ~]# ll -h /data/ceshi1
[root@node03 ~]# ll -h /data/ceshi1
[root@node04 ~]# ll -h /data/ceshi1

结果

  • 所有节点上的 /data/ceshi1 目录中均有完整的文件副本。
  • 特点:分布式复制卷提供了高冗余性,文件在每个节点上都有完整副本,适合对数据安全性要求较高的场景。

2.3 验证复制卷

复制卷同样具备冗余性,但副本数量和节点数量直接相关。

文件分布验证:

node01node02 节点的 /data/ceshi2 目录中验证文件分布情况:

[root@node01 ~]# ll -h /data/ceshi2
总用量 200M
-rw-r--r-- 2 root root 40M 48 23:30 demo1.log
-rw-r--r-- 2 root root 40M 48 23:30 demo2.log
-rw-r--r-- 2 root root 40M 48 23:30 demo3.log
-rw-r--r-- 2 root root 40M 48 23:30 demo4.log
-rw-r--r-- 2 root root 40M 48 23:30 demo5.log

同样在 node02 查看:

[root@node02 ~]# ll -h /data/ceshi2

结果

  • 复制卷中,所有文件的副本均存储在 node01node02/data/ceshi2 目录中。
  • 特点:复制卷提供冗余,但副本数量受限于节点数量,适合需要一定容错能力的场景。

2.4 验证分布式卷

分布式卷无冗余,文件通过弹性哈希算法分布到不同节点上。

文件分布验证:

node01node02 节点的 /data/ceshi3 目录中验证文件分布情况:

[root@node01 ~]# ls -lh /data/ceshi3
总用量 160M
-rw-r--r-- 2 root root 40M 48 23:29 demo1.log
-rw-r--r-- 2 root root 40M 48 23:29 demo2.log
-rw-r--r-- 2 root root 40M 48 23:30 demo3.log
-rw-r--r-- 2 root root 40M 48 23:30 demo4.log
[root@node02 ~]# ls -lh /data/ceshi3
总用量 40M
-rw-r--r-- 2 root root 40M 48 23:30 demo5.log

结果

  • 文件分布情况:
    • node01 存储了 demo1.logdemo4.log
    • node02 存储了 demo5.log
  • 特点:分布式卷无冗余,文件分布在不同节点上,适合对数据冗余性要求较低但需要扩展存储容量的场景。

通过上述测试可以得出以下结论:

卷类型冗余性文件分布特点适用场景
分布式复制卷高冗余性所有文件在每个节点上都有完整副本,提供最高的数据安全性。适合对数据安全性和高可用性要求较高的场景。
复制卷一定的冗余性文件在部分节点上有副本,冗余数量取决于副本因子,读性能较高但写性能受限。适合需要容错能力但副本数量有限的场景。
分布式卷无冗余性文件通过哈希算法分布到不同节点,无副本,扩展性强但数据可靠性较低。适合对存储容量需求较大,但对冗余性要求较低的场景。

三、GlusterFS 常用命令总结

3.1 集群管理命令

查看所有节点信息

查看当前集群中所有节点的状态:

gluster peer status

添加节点

将新的节点添加到 GlusterFS 信任池中:

gluster peer probe <节点名或IP地址>

删除节点

从 GlusterFS 信任池中移除某节点:

gluster peer detach <节点名或IP地址>

3.2 服务管理命令

启动 GlusterFS 服务

使用以下命令启动 GlusterFS 服务:

/etc/init.d/glusterd start

或者在 systemd 环境中:

systemctl start glusterd.service

停止 GlusterFS 服务

停止 GlusterFS 服务:

/etc/init.d/glusterd stop

或者:

systemctl stop glusterd.service

重启 GlusterFS 服务

重启 GlusterFS 服务:

/etc/init.d/glusterd restart

或者:

systemctl restart glusterd.service

3.3 卷管理命令

创建卷

根据需求创建不同类型的卷:

gluster volume create <卷名称> [卷类型] <存储路径列表>

示例:创建一个分布式复制卷

gluster volume create dis-rep replica 4 \
node01:/data/ceshi1 node02:/data/ceshi1 node03:/data/ceshi1 node04:/data/ceshi1 force

查看卷信息

查看集群中所有卷的信息:

gluster volume info

查看卷状态

查看所有卷的状态信息:

gluster volume status

启动卷

启动指定的卷:

gluster volume start <卷名称>

停止卷

停止指定的卷:

gluster volume stop <卷名称>

删除卷

在删除某卷前,需要先停止该卷。删除卷的命令如下:

gluster volume delete <卷名称>

3.4 日志与调试

查看日志文件

GlusterFS 的日志文件通常位于 /var/log/glusterfs 目录下,可以查看相关日志排查问题:

tail -f /var/log/glusterfs/glusterd.log

检查自愈状态

当使用复制卷或分布式复制卷时,可以检查卷的自愈状态:

gluster volume heal <卷名称> info

手动触发自愈

手动修复卷中的不一致数据:

gluster volume heal <卷名称>

3.5 卷访问控制

设置访问权限

可以通过 IP 地址设置卷的访问控制策略:

仅允许特定 IP 段访问
gluster volume set <卷名称> auth.allow <IP地址或网段>

示例:允许 192.168.1.0/24 网段访问

gluster volume set dis-rep auth.allow 192.168.1.*
拒绝特定 IP 地址访问
gluster volume set <卷名称> auth.deny <IP地址或网段>

示例:拒绝 192.168.1.100 访问

gluster volume set dis-rep auth.deny 192.168.1.100

3.6 数据迁移与扩容

添加 Brick(扩展卷容量)

在已有卷的基础上增加存储节点:

gluster volume add-brick <卷名称> <新增Brick路径> force

示例:为 dis-volume 增加一个 Brick

gluster volume add-brick dis-volume node03:/data/newdir force

移除 Brick

从卷中移除某个 Brick:

gluster volume remove-brick <卷名称> <Brick路径> force

示例:移除 node03:/data/newdir

gluster volume remove-brick dis-volume node03:/data/newdir force

3.7 挂载卷

挂载 GlusterFS 文件系统

在客户端使用 mount.glusterfs 命令挂载 GlusterFS 卷:

mount.glusterfs <服务器>:<卷名称> <挂载路径>

示例:挂载 dis-volume

mount.glusterfs node01:dis-volume /mnt/glusterfs

永久挂载

编辑 /etc/fstab 文件,添加以下内容:

node01:dis-volume	/mnt/glusterfs	glusterfs	defaults,_netdev	0 0

然后执行以下命令挂载:

mount -a

ata/newdir force


### 移除 Brick

从卷中移除某个 Brick:

```bash
gluster volume remove-brick <卷名称> <Brick路径> force

示例:移除 node03:/data/newdir

gluster volume remove-brick dis-volume node03:/data/newdir force

3.7 挂载卷

挂载 GlusterFS 文件系统

在客户端使用 mount.glusterfs 命令挂载 GlusterFS 卷:

mount.glusterfs <服务器>:<卷名称> <挂载路径>

示例:挂载 dis-volume

mount.glusterfs node01:dis-volume /mnt/glusterfs

永久挂载

编辑 /etc/fstab 文件,添加以下内容:

node01:dis-volume	/mnt/glusterfs	glusterfs	defaults,_netdev	0 0

然后执行以下命令挂载:

mount -a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值