GlusterFS 笔记
一、简介
GlusterFS 是近年兴起的一个高性能开源分布式文件系统,其目标是全局命名空间、分布式前端的高性能文件系统,目前已被 RedHat 看中,GlusterFS 具有高扩展、高可性、高性能、可横向扩展等特点,并且 GlusterFS 没有元数据服务器的设计,使其没有单点故障问题。
二、GlusterFS 集群搭建
2.1、环境准备
由于资源有限,所以以虚拟机测试,故性能上无法体现,毕竟是一块硬盘,搭建环境如下
主机 | 域名 | 磁盘 | 大小 |
---|---|---|---|
192.168.1.100 | gfs-server1 | /dev/sdb | 50G |
192.168.1.107 | gfs-server2 | /dev/sdb | 50G |
192.168.1.126 | gfs-server3 | /dev/sdb | 50G |
192.168.1.217 | gfs-server4 | /dev/sdb | 50G |
2.2、安装 GlusterFS
CentOS7 默认官方 yum 源中有 GlusterFS 相关的 rpm 包,但是发现没有 server 端的,官方给出的安装命令如下
1 |
|
2.3、基础环境配置
2.3.1、ntp 时钟同步
由于 GlusterFS 需要进行节点间同步,所以各节点时间要保证一致性,故需要安装 ntp 时钟同步工具
1 |
|
安装完成后应进行时钟同步,这里暂时使用 windows 的时钟授权服务器,也可以选择其他时钟授权服务器,安装时测试国内的清华大等全部超时……
1 |
|
同步完成后最好设置定时同步,以下为每天 0 时开始没 3 小时进行一次时钟同步
1 |
|
2.3.2、host 定义
由于使用域名方式访问,所以需要修改本地 hosts 文件,也可以通过自建 dns 服务器来解决,不过据说 dns 服务器方式会有一点点延迟,所以推荐修改本地 hosts(没证明过)
1 |
|
2.4、启动并加入节点
GlusterFS 安装完成后可直接通过 systemd 启动
1 |
|
启动完成后便可在任意节点上将其他节点加入进来,组建集群
1 |
|
2.5、磁盘预处理
GlusterFS 集群服务启动并加入其他节点后,就需要为下一步创建卷(volume)准备磁盘,以下以一块 50G 的磁盘为例,在每个节点上执行如下
1 |
|
分区创建完成后需要对其进行格式化
1 |
|
最后准备接下来要使用的相关挂载目录
1 |
|
为了保证磁盘一直挂载,最好设置一下开机自动挂载
1 |
|
到此集群基本部署完成
三、GlusterFS 存储卷设置
GlusterFS 集群搭建完成后,便需要创建存储卷(volume)来整合各个集群磁盘存储资源,以便后面进行挂载和使用
3.1、创建分布式 Hash 卷
分布式 Hash 卷其原理是当向 GlusterFS 写入一个文件时,GlusterFS 通过弹性 Hash 算法对文件名进行计算,然后将其均匀的分布到各个节点上,因此分布式 Hash 卷没有数据冗余,创建分布式 Hash 卷命令如下
1 |
|
3.2、创建复制卷
复制卷相当于 RAID1,在向 GlusterFS 中存储文件时,GlusterFS 将其拷贝到所有节点,并且是同步的,这会极大降低磁盘性能,并呈线性降低,但是复制卷随着节点数量增加,起数据冗余能力也在增加,因为每个节点上都有一份数据的完全拷贝,创建复制卷命令如下
1 |
|
3.3、创建分布式 Hash 复制卷
顾名思义,分布式 Hash 复制卷就是将 Hash 卷与复制卷整合一下,通过 replica 参数指定复制份数,以下例子为使用4个节点创建,每两个节点组成一个复制卷,然后两对节点再组成 Hash 卷
1 |
|
3.4、其他卷
- 条带卷: 条带卷既将文件切分成块,分布存放在各个节点,将
replica
替换成stripe
即可 - 分布式 Hash 条带卷: 同分布式 Hash 复制卷一样,保证节点数量是
stripe
的整数倍即可
由于条带卷使用并不多,所以不做演示,一般条带卷适用于单个大文件超过磁盘大小时使用
四、GlusterFS 挂载及测试
无论创建的哪种卷,最终创建完成后都可以通过如下命令查看
1 |
|
4.1、GlusterFS 卷挂载
卷创建完成后,只需要像正常磁盘一样挂载即可使用,不同的是文件系统类型指定为 glusterfs
而已,操作如下
1 |
|
为保证一直可用,同样最好设置开机自动挂载
1 |
|
4.2、测试 GlusterFS
以下以分布式 Hash 卷为例,由于准备了 4 各节点,并且 replica 为 2,所以理论上向 GlusterFS 写入一个文件应该会在任意两个节点上都有一份
1 |
|
五、其他相关
没有任何通用的文件系统,通用意味着通通不能用,关于 GlusterFS 适用场景以及缺点可参考 换个角度看GlusterFS分布式文件系统 文章,关于 GlusterFS 性能与监控可参考 GlusterFS性能监控&配额