概述
1 | GlusterFS (Gluster File System) 是一个开源的分布式文件系统,主要由 Z RESEARCH 公司负责开发。GlusterFS 是 Scale-Out 存储解决方案 Gluster 的核心,具有强大的横向扩展能力,通过扩展能够支持数PB存储容量和处理数千客户端。GlusterFS 借助 TCP/IP 或 InfiniBand RDMA 网络将物理分布的存储资源聚集在一起,使用单一全局命名空间来管理数据。GlusterFS 基于可堆叠的用户空间设计,可为各种不同的数据负载提供优异的性能。 |
1 | GlusterFS 总体架构与组成部分如图1所示,它主要由存储服务器(Brick Server)、客户端以及 NFS/Samba 存储网关组成。不难发现,GlusterFS 架构中没有元数据服务器组件,这是其最大的设计这点,对于提升整个系统的性能、可靠性和稳定性都有着决定性的意义。 |
GlusterFS总体架构
GlusterFS卷类型
1 | 为了满足不同应用对高性能、高可用的需求,GlusterFS 支持 7 种卷,即 distribute 卷、stripe 卷、replica 卷、distribute stripe 卷、distribute replica 卷、stripe Replica 卷、distribute stripe replica 卷。 |
GlusterFS常见术语
1 | 名称 解释 |
部署
环境
1 | 服务器: |
安装/验证/启动【全节点配置】
1 | GlusterFS项目被Redhat收购,官方提供repo可以直接安装。 |
Trusted Storage Pools可信存储池-【在server1配置】
1 | 在开始创建ClusterFS卷之前,需要创建一个称之为Trusted Storage的池,是一个可信的网络存储服务器,可以理解为集群。为卷提供bricks。 |
1 | 例如要创建一个包含3个服务器的存储池,则需要从第一个服务器server1中把另外两个服务器加入存储池中(不要添加server1服务器,默认就已经添加了的)。 |
1 | 从存储池移除服务器 |
GlusterFS逻辑卷(Volume)创建
1. 创建分布式卷
1 | 特点: |
创建Distributed逻辑卷
1 | 【server1配置】 |
客户端client-挂载使用
1 | #创建挂载目录 |
Distributed逻辑卷-文件存储测试
1 | [root@gluster_client ~]# cd /mnt/dis/ |
server tree测试
1 | #server1存储的文件 |
2. 创建复制卷
复制卷架构示意图
1 | 特点:文件同步复制到多个 brick 上,文件级 RAID1,具有容错能力,写性能下降,读性能提升。Replicated 模式,也称作 AFR(Auto File Replication),相当于 RAID1,即同一文件在多个镜像存储节点上保存多份,每个 replicated 子节点有着相同的目录结构和文件,replica volume 也是在容器存储中较为推崇的一种。 |
1 | 测试之前,我们先删除刚才创建的分布式卷 |
1 | # 创建卷test-volume |
1 | 启动卷 |
客户端client-挂载使用
1 | #创建挂载目录 |
Distributed逻辑卷-文件存储测试
1 | [root@gluster_client ~]# cd /mnt/test/ |
server tree测试
1 | #server1测试 |
3. 创建条带卷
1 | 特点: |
1 | 测试之前,我们先删除刚才创建的分布式卷 |
1 | #创建条带卷stri-volume |
客户端client-挂载使用
1 | #创建挂载目录 |
Distributed逻辑卷-文件存储测试
1 | [root@gluster_client ~]# cd /mnt/stri/ |
server tree测试
1 | [root@gserver1 ~]# tree /data/A |
4. 创建分布式+复制卷(推荐)
1 | 特点: |
分布式复制卷架构示意图:
1 | 测试之前,我们先删除刚才创建的分布式卷 |
1 | # 创建卷test-volume |
1 | 启动卷 |
客户端client-挂载使用
1 | #创建挂载目录 |
测试结果:
1 | [root@gluster_client ~]# tree /data/A |
5. 创建分布式+条带卷
1 | 特点: |
6. stripe replica volume条带复制卷
1 | 特点:类似 RAID 10,同时具有条带卷和复制卷的特点。 |
7. distribute stripe replica volume分布式条带复制卷
1 | 特点:三种基本卷的复合卷,通常用于类 Map Reduce 应用。 |
Docker GlusterFS Volume 插件
1 | Docker Volume是一种可以将容器以及容器生产的数据分享开来的数据格式,我们可以使用宿主机的本地存储作为Volume的提供方,也可以使用Volume Plugin接入许多第三方的存储。 GitHub就有一个Docker GlusterFS Volume Plugin,方便我们将GlusterFS挂载到容器中。 |
安装Docker GlusterFS Volume 插件
1 | # (1). 获取docker-volume-glusterfs |
管理GlusterFS卷
1 | #停止卷 |
扩展卷(GlusterFS支持在线进行卷的扩展)
1 | #加入可信任存储池 |
收缩卷
1 | 收缩卷和扩展卷相似据以Brick为单位。 |
迁移卷
1 | 进行卷迁移前需要确保迁移目标已经加入集群。或者迁移的Brick目录存在。迁移卷可以执行暂停和中止的操作。 |
替换brick
1 | gluster volume replace-brick VOLNAME BRICKNEW-BRICK start/pause/abort/status/commit |
系统配额
1 | 开启/关闭系统配额 |
I/O信息查看
1 | Profile Command 提供接口查看一个卷中的每一个brick的IO信息。 |
Top监控
1 | Top command 允许你查看bricks的性能例如:read, write, file open calls, file read calls, file write calls, directory open calls, and directory real calls |
客户端挂载
1 | GlusterFS支持三种客户端类型。Gluster Native Client、NFS和CIFS。官方推荐使用Native Client,可以使用GlusterFS的全部功能。 |
Gluster Native Client
1 | Gluster Native Client是基于FUSE的,所以需要保证客户端安装了FUSE。这个是官方推荐的客户端,支持高并发和高效的写性能。 |
1 | 挂载参数: |
NFS挂载
1 | NFS默认是使用的UDP进行通信,由于GlusterFS不支持UDP。所以需要设置为TCP的方式挂载。 |
基于GlusterFS实现MySQL数据持久化
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/09/24/GlusterFS分布式存储/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!