GlusterFS部署 CentOS7环境下以及基本使用

23 篇文章 1 订阅
22 篇文章 1 订阅

只实验部署。 参考他人博客得来,侵权立删。
https://blog.csdn.net/zonelan/article/details/8468383
https://blog.csdn.net/JackLiu16/article/details/80648157
https://docs.gluster.org/en/latest/Quick-Start-Guide/Quickstart/
https://cloud.tencent.com/developer/article/1460283
https://www.cnblogs.com/hjc4025/p/9956673.html
https://blog.51cto.com/13447608/2386830?source=dra

GlusterFS 定义

GlusterFS
可扩展的开源分布式文件系统。能够轻松地为用户提供全局命名空间,分布式前端以及高达数百PB的可扩展性。

优点:
- 弹性存储 Gluster群集可根据业务需求灵活的增加或缩减数据存储以及增删存储池中的资源,而不会终端系统的运行。
- 横向扩展 Gluster群集可通过增加存储节点的方式来提升整个系统的容量或性能。
- 高可靠性 Gluster群集通过自动复制与自动修复来保证数据的可靠性(利用EXT3/ZFS等磁盘文件系统日志)

整体架构:
Gluster架构

  • 存储服务器主要提供基本的数据存储功能,最终的文件数据通过统一的调度策略分布在不同的存储服务器上。它们上面运行着Glusterfsd进行,负责处理来自其他组件的数据服务请求。

  • 由于没有了元数据服务器,客户端承担了更多的功能,包括数据卷管理、I/O调度、文件定位、数据缓存等功能。

  • GlusterFS存储网关提供弹性卷管理和NFS/CIFS访问代理功能

GlusterFS创建术语

  • Brick: 最基本的存储单元,表示为trusted storage pool中输出的目录,供客户端挂载用。
  • Volume: 一个卷。在逻辑上由N个bricks组成.
  • FUSE: Unix-like OS上的可动态加载的模块,允许用户不用修改内核即可创建自己的文件系统。
  • Glusterd: Gluster management daemon,要在trusted storage pool中所有的服务器上运行。
  • POSIX: 一个标准,GlusterFS兼容。

GlusterFS卷类型
为了满足不同应用对高性能、高可用的需求,GlusterFS 支持 7 种卷,即 distribute卷、stripe卷、replica卷、distribute stripe卷、distribute replica 卷、stripe Replica卷、distribute stripe replica 卷。其实不难看出,GlusterFS 卷类型实际上可以分为 3 种基本卷和 4 种复合卷,每种类型的卷都有其自身的特点和适用场景。

实验环境准备

VMware Workstation软件下, CentOS7虚拟机。 准备五台CentOS7虚拟机,4台做存储服务器,一台做客户端。

虚拟机设置 内存1G 硬盘大小10G即可

部署

  1. 设置五个CentOS的 /etc/hosts文件。
192.168.199.61	server-1
192.168.199.62	server-2
192.168.199.63	server-3
192.168.199.64	server-4
192.168.199.60	client
  1. 关闭SElinux 关闭防火墙
  • 关闭SELinux
setenforce 0
vi /etc/selinux/config

设置 SELINUX=permissive
重启虚拟机即可

  • 关闭防火墙
	systemctl stop firewalld
	systemctl disable firewalld
  1. 安装NTP服务并开启。ntp就是一个时间同步服务。 最后一行命令是因为ntp开机启动可能和chronyd自启动冲突。
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd

systemctl disable chronyd
  1. 为四个存储用虚拟机添加一块新硬盘。并挂载。四个都要添加

我新增的硬盘 名为 sdb ,因不同机器可能有不同。挂载点是/data/brick1

fdisk -l
mkfs.xfs /dev/sdb
mkdir -p /data/brick1
echo '/dev/sdb /data/brick1 xfs defaults 1 2' >> /etc/fstab 
mount -a

查看 当前磁盘状态 df -h

[root@server03 ~]# df -h
文件系统                                容量  已用  可用 已用% 挂载点
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.7M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sdb                                 10G   82M   10G    1% /data/brick1
/dev/sda1                              1014M  136M  878M   14% /boot
tmpfs                                    98M     0   98M    0% /run/user/0

  1. 4台存储节点安装glusterfs并启动服务
yum install centos-release-gluster
yum install -y glusterfs glusterfs-server glusterfs-fuse glusterfs-rdma

#启动gluster服务
systemctl start glusterd.service
systemctl enable glusterd.service
  1. 配置受信任的池。 一旦建立了这个池,只有受信任的成员才能探测到新的服务器到池中。新服务器无法探测池,必须从池中探测它。
    如在 server-1节点操作
    server-2 等都是节点的IP。
gluster peer probe server-2
gluster peer probe server-3
gluster peer probe server-4

添加完成可以查看当前受信任池的状态,可在server-1 server-2 server-3 server-4节点任一个中查看。如server-2

[root@server02 ~]# gluster peer status
Number of Peers: 3

Hostname: server-1
Uuid: 37bf921e-15b9-4685-a6a7-551818d43066
State: Peer in Cluster (Connected)

Hostname: server-3
Uuid: 789acb33-1ee5-432a-a1f6-d612b222dec2
State: Peer in Cluster (Connected)

Hostname: server-4
Uuid: eec5b569-7494-480e-8c19-cf74b25e9c28
State: Peer in Cluster (Connected)
[root@server02 ~]# 

  1. 设置GlusterFS卷。 可以先设置一个简单的分布式卷。可设置distribute, stripe, replica及复合卷
  • 在四个服务器上设置

mkdir -p /data/brick1/gv0

  • 在任一个服务器上设置
gluster volume create gv0 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

设置卷名为gv0, 使用的brick包括server-1:/data/brick1/gv0…
启动卷

gluster volume start gv0

查看卷信息状态

gluster volume info
gluster volume status

状态信息如下。

[root@server01 ~]# gluster volume start gv0
volume start: gv0: success
[root@server01 ~]# gluster volume info
 
Volume Name: gv0
Type: Distribute
Volume ID: 16c2bc7d-e1ff-4a8a-887a-f6f4f5e632a4
Status: Started
Snapshot Count: 0
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: server-1:/data/brick1/gv0
Brick2: server-2:/data/brick1/gv0
Brick3: server-3:/data/brick1/gv0
Brick4: server-4:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
[root@server01 ~]# gluster volume status
Status of volume: gv0
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick server-1:/data/brick1/gv0             49152     0          Y       2025 
Brick server-2:/data/brick1/gv0             49152     0          Y       11641
Brick server-3:/data/brick1/gv0             49153     0          Y       1807 
Brick server-4:/data/brick1/gv0             49152     0          Y       11655
 
Task Status of Volume gv0
------------------------------------------------------------------------------
There are no active volume tasks

  1. 客户端安装 Gluster
yum install centos-release-gluster
yum -y install glusterfs glusterfs-fuse
  1. 测试GlusterFS卷。可以将其挂载到客户端的 /mnt 目录进行测试,也可以自己新建一个挂载目录。
    注 这里 server-1可以是任一存储节点,ruserver-2,server-3效果一样
mount -t glusterfs server-1:/gv0 /mnt

可以看到挂载成功。。。

[root@gluster-client ~]# df -h
文件系统                                容量  已用  可用 已用% 挂载点
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   33M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
[root@gluster-client ~]# mount -t glusterfs server-1:gv0 /mnt
[root@gluster-client ~]# df -h
文件系统                                容量  已用  可用 已用% 挂载点
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   33M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
server-1:gv0                             40G  539M   40G    2% /mnt
[root@gluster-client ~]# 

  1. 接下来在 测试在/mnt 添加一些文件。客户端执行
for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done

查看 挂载点 /mnt 发现有100 新文件。

[root@gluster-client ~]# for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
[root@gluster-client ~]# ls /mnt/
copy-test-001  copy-test-016  copy-test-031  copy-test-046  copy-test-061  copy-test-076  copy-test-091
copy-test-002  copy-test-017  copy-test-032  copy-test-047  copy-test-062  copy-test-077  copy-test-092
copy-test-003  copy-test-018  copy-test-033  copy-test-048  copy-test-063  copy-test-078  copy-test-093
copy-test-004  copy-test-019  copy-test-034  copy-test-049  copy-test-064  copy-test-079  copy-test-094
copy-test-005  copy-test-020  copy-test-035  copy-test-050  copy-test-065  copy-test-080  copy-test-095
copy-test-006  copy-test-021  copy-test-036  copy-test-051  copy-test-066  copy-test-081  copy-test-096
copy-test-007  copy-test-022  copy-test-037  copy-test-052  copy-test-067  copy-test-082  copy-test-097
copy-test-008  copy-test-023  copy-test-038  copy-test-053  copy-test-068  copy-test-083  copy-test-098
copy-test-009  copy-test-024  copy-test-039  copy-test-054  copy-test-069  copy-test-084  copy-test-099
copy-test-010  copy-test-025  copy-test-040  copy-test-055  copy-test-070  copy-test-085  copy-test-100
copy-test-011  copy-test-026  copy-test-041  copy-test-056  copy-test-071  copy-test-086
copy-test-012  copy-test-027  copy-test-042  copy-test-057  copy-test-072  copy-test-087
copy-test-013  copy-test-028  copy-test-043  copy-test-058  copy-test-073  copy-test-088
copy-test-014  copy-test-029  copy-test-044  copy-test-059  copy-test-074  copy-test-089
copy-test-015  copy-test-030  copy-test-045  copy-test-060  copy-test-075  copy-test-090
[root@gluster-client ~]# 

接下来查看每个服务器的 Gluster brick 挂载点。可能会发现每个点上大约有25个文件。因为默认是分布式存储,文件会经统一策略调度策略分发到不同的存储服务器。

[root@server01 ~]# cd /data/brick1/gv0/
[root@server01 gv0]# ls
copy-test-004  copy-test-017  copy-test-033  copy-test-065  copy-test-086  copy-test-095
copy-test-006  copy-test-023  copy-test-046  copy-test-078  copy-test-087  copy-test-099
copy-test-015  copy-test-024  copy-test-048  copy-test-079  copy-test-088
copy-test-016  copy-test-029  copy-test-052  copy-test-082  copy-test-093
[root@server01 gv0]# 

测试分布式复制卷。

部署已经成功,创建的卷是最基础的分布式卷。一般应用商最常用的应该是分布式复制卷, 是混合卷。可以将以上卷停掉删除。重新创建一个卷。

GlusterFS客户端常用命令
命令 功能
gluster peer probe 添加节点
gluster peer detach 移除节点
gluster volume create 创建卷
gluster volume start $VOLUME_NAME 启动卷
gluster volume stop $VOLUME_NAME 停止卷
gluster volume delete $VOlUME_NAME 删除卷
gluster volume quota enable 开启卷配额
gluster volume quota disable 关闭卷配额
gluster volume quota limitusage 设定卷配额

  • 客户端先终止挂载
umount -l /mnt
  • 服务器端停止卷并删除
gluster volume stop gv0
gluster volume delete gv0

查看

[root@server01 gv0]# gluster volume stop gv0
Stopping volume will make its data inaccessible. Do you want to continue? (y/n) y
volume stop: gv0: success
[root@server01 gv0]# gluster volume delete gv0
Deleting volume will erase all information about the volume. Do you want to continue? (y/n) y
volume delete: gv0: success
[root@server01 gv0]# gluster volume info
No volumes present
[root@server01 gv0]# 

  • 四个服务器端将 /data/brick1/gv0文件夹删除后新建,不然重新创建卷的时候可能会报错volume create: gv0: failed: /data/brick1/gv0 is already part of a volume
  • 创建分布式复制卷 分布式的复制卷,volume 中 brick 所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能 一般来说建议复制卷的存储服务器大于等于3 因为2份容易导致脑裂,数据恢复时不知哪一份是正确的。。。
gluster volume create gv0 replica 2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

镜像数是2 一份数据会保存在两个地方。

  • 启动卷并在客户端挂载 测试
gluster volume start gv0
gluster volume info

状态如下

[root@server01 brick1]# gluster volume start gv0
volume start: gv0: success
[root@server01 brick1]# gluster volume info
 
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: 7ebb9c84-d0c4-42cb-a6e5-e0d1240f90d4
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: server-1:/data/brick1/gv0
Brick2: server-2:/data/brick1/gv0
Brick3: server-3:/data/brick1/gv0
Brick4: server-4:/data/brick1/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off
[root@server01 brick1]# 

类型 Type变成了 Distributed-Replicate

客户端挂载测试

mount -t glusterfs server-1:gv0 /mnt
for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
[root@gluster-client ~]# df -h
文件系统                                容量  已用  可用 已用% 挂载点
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   33M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
server-1:gv0                             20G  270M   20G    2% /mnt

挂载点容量变为了20G

  • 查看服务节点挂载点的数据。。。server-1和server-2数据是相同的互为复制点,server-3和server-4的数据也是相同的。server-1和server-3各自大约保存了50份数据。

注:不一定是这样描述的,但是有必要提醒自己一下。

存储服务器不等于节点 一个节点上可以有多个存储服务器。或者应该说 一个存储服务器上可以有多个brick点。 如果有多个磁盘的话

或者说即时没有多余的真实硬盘,一个硬盘下可以放许多个Brick。。。也就是说,这些个组成gluster 的 volume的brick可以在一个真实的硬盘上共存。。。而且挂载 gluster volume时,互相不会影响,但是受真实的空间容量影响。。。如果真的在一块真实的硬盘上设置了多个brick,有可能挂载gluster volume时,显示磁盘大小是10G 已用 9G 可用1G而实际上你还没向挂载点添加任何内容。。产生这样情况的原因当然是真是的硬盘上有其他内容存在。。。。

测试 将现有的volume再次删除,然后为server-1和server-2新增一块硬盘。将其挂载到/data/brick2中

fdisk -l
mkfs.xfs /dev/sdc
mkdir -p /data/brick2
echo '/dev/sdc /data/brick2 xfs defaults 1 2' >> /etc/fstab
mount -a 

查看磁盘使用情况

[root@server01 gv0]# df -h
文件系统                                容量  已用  可用 已用% 挂载点
devtmpfs                                475M     0  475M    0% /dev
tmpfs                                   487M     0  487M    0% /dev/shm
tmpfs                                   487M  7.6M  479M    2% /run
tmpfs                                   487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_gluster--model-root  8.0G  1.4G  6.7G   17% /
/dev/sda1                              1014M  136M  878M   14% /boot
/dev/sdb                                 10G   82M   10G    1% /data/brick1
tmpfs                                    98M     0   98M    0% /run/user/0
/dev/sdc                                 10G   33M   10G    1% /data/brick2

创建一个分布式复制卷,复制份数为2 用上/data/brick2/gv0

gluster volume create gv0 replica 2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0 server-1:/data/brick2/gv0 server-2:/data/brick2/gv0

详情如下

[root@server01 ~]# gluster volume info
 
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: e13710ef-936e-41f4-8f27-4f39d1817f74
Status: Created
Snapshot Count: 0
Number of Bricks: 3 x 2 = 6
Transport-type: tcp
Bricks:
Brick1: server-1:/data/brick1/gv0
Brick2: server-2:/data/brick1/gv0
Brick3: server-3:/data/brick1/gv0
Brick4: server-4:/data/brick1/gv0
Brick5: server-1:/data/brick2/gv0
Brick6: server-2:/data/brick2/gv0
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off
创建不同类型卷命令实例

基本卷就是分布式卷

gluster volume create gv0 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

复制卷 就要设置replicate count 如果复制的数量等于Brick的数量,就是一个复制卷,如果小于Brick(但是使用的Brick数一定要是副本数量的倍数) 如下就是分布式复制卷。。。副本数量为2

gluster volume create gv0  replica 2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

条带卷 要设置 stripe count 条带卷适用于解决大文件高并发下带来的高负载和低性能问题。count表示一个文件会被切割成几条放在不同的服务器中。如果count等于Brick数,那就是条带卷,如果小于Brick数(但是使用Brick数一定要是count数量的倍数) 如下就是分布式条带卷。。。切割数为2 似乎6.1之后条带卷已经废除了。这个。废除就废除吧。

gluster volume create gv0  stripe  2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0

三种结合的话同时设置 replicate count1 stripe count2。。。如果Brick数大于count1Xcount2那就是分布式条带复制卷,前提同样是Brick数是count1 X count2 的倍数。。。那就是至少八个存储服务器。。。如下

gluster volume create gv0  stripe  2 server-1:/data/brick1/gv0 server-2:/data/brick1/gv0 server-3:/data/brick1/gv0 server-4:/data/brick1/gv0 server-5:/data/brick1/gv0 server-6:/data/brick1/gv0 server-7:/data/brick1/gv0 server-8:/data/brick1/gv0

6.1废除striped后似乎多了一个disperse []。 分散卷,这个还不是太清楚如何使用,是什么意思。。。和条带卷有点类似。。。

采用副本复制卷时 手动恢复误删的文件命令

gluster volume heal VOLNAME full

感觉挺有用的。也挺神奇。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值