GlusterFS 9.6 版本的变化(详解和安装~~~~)
文章目录
一、GlusterFS 9.6 版本部署与应用1.1 GlusterFS 简介GlusterFS 的主要特性:
1.2 GlusterFS 9.6 版本的变化1.3 实验环境准备1.3.1 系统环境1.3.2 主机配置1. 修改主机名2. 配置 `/etc/hosts`
1.3.3 安装 GlusterFS 服务端1. 添加 GlusterFS YUM 源并安装相关组件:2. 如果安装中出现版本冲突或兼容性问题,可先卸载再重新安装:3. 启动 GlusterFS 服务并设置开机自启:
1.3.4 配置存储信任池1.3.5 创建存储目录1.3.6 创建卷1. 创建分布式复制卷2. 创建复制卷3. 创建分布式卷4. 查看所有卷的列表
1.3.7 客户端配置1. 安装客户端组件2. 创建挂载路径3. 挂载 GlusterFS 文件系统
二、测试 GlusterFS 卷的读写及文件分布2.1 测试环境准备2.1.1 创建测试文件2.1.2 复制文件到挂载目录
2.2 验证分布式复制卷文件分布验证:
2.3 验证复制卷文件分布验证:
2.4 验证分布式卷文件分布验证:
三、GlusterFS 常用命令总结3.1 集群管理命令查看所有节点信息添加节点删除节点
3.2 服务管理命令启动 GlusterFS 服务停止 GlusterFS 服务重启 GlusterFS 服务
3.3 卷管理命令创建卷查看卷信息查看卷状态启动卷停止卷删除卷
3.4 日志与调试查看日志文件检查自愈状态手动触发自愈
3.5 卷访问控制设置访问权限仅允许特定 IP 段访问拒绝特定 IP 地址访问
3.6 数据迁移与扩容添加 Brick(扩展卷容量)移除 Brick
3.7 挂载卷挂载 GlusterFS 文件系统永久挂载
3.7 挂载卷挂载 GlusterFS 文件系统永久挂载
一、GlusterFS 9.6 版本部署与应用
1.1 GlusterFS 简介
GlusterFS 是一款高性能、开源的分布式文件系统,广泛应用于企业级存储需求。通过将多台服务器的存储资源整合成一个统一的全局命名空间,GlusterFS 提供了横向扩展能力,适合处理 PB 级别的大规模数据存储。
GlusterFS 的主要特性:
无元数据架构: 避免了传统分布式文件系统中因元数据服务器单点故障带来的问题。高扩展性: 通过增加存储节点来扩展容量和性能,支持动态调整存储资源。多种协议支持: 包括 NFS、SMB、FTP 等,且与 POSIX 标准完全兼容。卷类型多样性: 支持多种卷类型,如分布式卷、复制卷和分布式复制卷,满足多样化的业务需求。
1.2 GlusterFS 9.6 版本的变化
在 GlusterFS 9.6 版本中,功能得到了进一步优化,同时对一些功能进行了调整和精简。以下是主要的变化:
条带卷和分布式条带卷取消:
条带卷(Stripe Volume)和分布式条带卷(Distribute Stripe Volume)在 6.0 版本后已被移除,不再支持。原因:这两种卷的可靠性较差,缺乏冗余机制,不适合现代存储需求。 优化的性能:
在高并发和大规模存储场景下性能提升显著,尤其是在 RDMA 网络环境中的数据传输效率进一步优化。 增强的兼容性:
提升了与 CentOS 7.9 及相关内核的兼容性,确保了客户端和服务端之间的无缝通信。 管理功能改进:
提供更灵活的卷管理功能,并增强了访问控制机制,可基于 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:
State: Peer in Cluster (Connected)
Hostname: node03
Uuid:
State: Peer in Cluster (Connected)
Hostname: node04
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 验证分布式复制卷
分布式复制卷具有数据冗余特性,所有文件在每个节点上都有完整副本。
文件分布验证:
在 node01、node02、node03 和 node04 节点的 /data/ceshi1 目录中验证文件分布情况:
[root@node01 ~]# ll -h /data/ceshi1
总用量 200M
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo1.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo2.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo3.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo4.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo5.log
同样在 node02、node03 和 node04 节点上查看文件:
[root@node02 ~]# ll -h /data/ceshi1
[root@node03 ~]# ll -h /data/ceshi1
[root@node04 ~]# ll -h /data/ceshi1
结果:
所有节点上的 /data/ceshi1 目录中均有完整的文件副本。特点:分布式复制卷提供了高冗余性,文件在每个节点上都有完整副本,适合对数据安全性要求较高的场景。
2.3 验证复制卷
复制卷同样具备冗余性,但副本数量和节点数量直接相关。
文件分布验证:
在 node01 和 node02 节点的 /data/ceshi2 目录中验证文件分布情况:
[root@node01 ~]# ll -h /data/ceshi2
总用量 200M
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo1.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo2.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo3.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo4.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo5.log
同样在 node02 查看:
[root@node02 ~]# ll -h /data/ceshi2
结果:
复制卷中,所有文件的副本均存储在 node01 和 node02 的 /data/ceshi2 目录中。特点:复制卷提供冗余,但副本数量受限于节点数量,适合需要一定容错能力的场景。
2.4 验证分布式卷
分布式卷无冗余,文件通过弹性哈希算法分布到不同节点上。
文件分布验证:
在 node01 和 node02 节点的 /data/ceshi3 目录中验证文件分布情况:
[root@node01 ~]# ls -lh /data/ceshi3
总用量 160M
-rw-r--r-- 2 root root 40M 4月 8 23:29 demo1.log
-rw-r--r-- 2 root root 40M 4月 8 23:29 demo2.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo3.log
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo4.log
[root@node02 ~]# ls -lh /data/ceshi3
总用量 40M
-rw-r--r-- 2 root root 40M 4月 8 23:30 demo5.log
结果:
文件分布情况:
node01 存储了 demo1.log 至 demo4.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
示例:允许 192.168.1.0/24 网段访问
gluster volume set dis-rep auth.allow 192.168.1.*
拒绝特定 IP 地址访问
gluster volume set <卷名称> auth.deny
示例:拒绝 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 <卷名称>
示例:移除 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 <卷名称>
示例:移除 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