一、GlusterFS简介

PB级容量、高可用、读写性能、基于文件系统级别共享、分布式、无metadata(元数据)的存储方式。

GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点。

2011年被红帽收购,之后推出了基于GlusterFS的Red Hat Storage Server,增加了针对KVM的许多特性,可用作为KVM存储image存储集群,也可以为LB或HA提供存储。

二、GlusterFS重要特性

全对称架构、支持多种卷类型(类似RAID0/1/5/10/01)、支持卷级别的压缩、支持FUSE、支持NFS、支持SMB、支持Hadoop、支持OpenStack、与oVirt深度整合(对应RHEL红帽企业级虚拟化)

三、GlusterFS重要概念

birck:GlusterFS的基本元素,以节点服务器目录形式展现;

volume:多个brick的逻辑集合;

metadata:元数据,用于描述文件、目录等的信息;

self-heal:用于后台运行检测副本卷中文件和目录的不一致性并解决这些不一致;

FUSE:Filesystem Userspace是一个可加载的内核模块,其支持非特权用户创建自己的文件系统而不需要修改内核代码通过在用户空间运行文件系统的代码通过FUSE代码与内核进行桥接;

Gluster Server:数据存储服务器,即组成GlusterFS存储集群的节点;

Gluster Client:使用GlusterFS存储服务的服务器,如KVM、OpenStack、LB RealServer、HA node。

四、GlusterFS内部架构

GlusterFS是模块化堆栈式的架构设计,如上图所示。模块称为Translator是GlusterFS提供的一种强大机制,借助这种良好定义的接口可以高效简便地扩展文件系统的功能。

1、服务端与客户端模块接口是兼容的,同一个translator可同时在两边加载。

2、GlusterFS中所有的功能都是通过translator实现,如Cluster, Storage,Performance, Protocol, Features等。

3、重点是GlusterFSClient端。

五、GlusterFS部署

1、环境准备

操作系统:CentOS Linux release 7.4.1708 (Core)

内核版本:3.10.0-693.el7.x86_64

能互相解析,并且添加互信机制,防火墙的24007端口,selinux关闭

192.168.1.191 node1

192.168.1.192 node2

192.168.1.193 node3

192.168.1.194 node4

192.168.1.195 node5

...

2、软件包准备

yum -y install centos-release-gluster

yum -y install glusterfs glusterfs-server glusterfs-fuse

客户端只需要

glusterfs

glusterfs-fuse

3、创建集群

分别启动glusterd服务(并添加开机自启动):

systemctl start glusterd

systemctl enable glusterd

创建集群(任意节点上执行一下操作,向集群中添加节点):

gluster peer probe node2

gluster peer probe node5

从集群中去除节点(该节点中不能存在卷中正在使用的brick)

gluster peer detach node5

不需要添加自己,只需要添加其他节点即可

查看集群状态:

gluster peer status

4、分布卷

分布式卷也成为哈希卷,多个文件以文件为单位在多个brick上,使用哈希算法随机存储。

应用场景:大量小文件

优点:读/写性能好

缺点:如果存储或服务器故障,该brick上的数据将丢失

不指定卷类型,默认是分布式卷

brick数量没有限制

创建分布式卷:

gluster volume create volume_name node1:/data/br1 node2:/data/br1

volumn_name:卷名

node1:节点名

/data/br1:可以理解为节点上的目录,这个目录最好是一个单独的分区(分区类型最好为逻辑卷的方式,这样易于操作系统级别的存储空间扩展)

启动这个卷:

gluster volume start volume_name

查看这个卷的信息:

gluster volume info volume_name

5、复制卷

多个文件在多个brick上复制多份,brick的数目要与需要复制的份数相等,建议brick分布在不同的服务器上。

应用场景:对可靠性高和读写性能要求高的场景

优点:读写性能好

缺点:写性能差

replica = brick

创建复制卷:

gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1

replica:文件保存的份数

启动这个卷:

gluster volume start volume_name

查看这个卷的信息:

gluster volume info volume_name

6、条带卷

将文件分成条带,存放在多个brick上,默认条带大小128k

应用场景:大文件

优点:适用于大文件存储

缺点:可靠性低,brick故障会导致数据全部丢失

stripe = birck

创建条带卷:

gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1

stripe:条带个数

启动这个卷:

gluster volume start volume_name

查看这个卷的信息:

gluster volume info volume_name

7、分布式条带卷

多个文件在多个节点哈希存储,每个文件再多分条带在多个brick上存储

应用场景:读/写性能高的大量大文件场景

优点:高并发支持

缺点:没有冗余,可靠性差

brick数是stripe的倍数

创建分布式条带卷:

gluster volume create volume_name stripe 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

启动这个卷:

gluster volume start volume_name

查看这个卷的信息:

gluster volume info volume_name

创建时没有具体的选项,来指定卷的类型,只根据stripe和brick数量分配

8、分布式复制卷

多个文件在多个节点上哈希存储,在多个brick复制多份存储。

应用场景:大量文件读和可靠性要求高的场景

优点:高可靠,读性能高

缺点:牺牲存储空间,写性能差

brick数量是replica的倍数

gluster volume create volume_name replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

启动这个卷:

gluster volume start volume_name

查看这个卷的信息:

gluster volume info volume_name

创建时没有具体的选项,来指定卷的类型,只根据replica和brick数量分配

9、条带式复制卷

一个大文件存储的时候划分条带,并且保存多份

应用场景:超大文件,并且对可靠性要求高

优点:大文件存储,可靠性高

缺点:牺牲空间写性能差

brick数量是stripe、replica的乘积

gluster volume create volume_name stripe 2 replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1

启动这个卷:

gluster volume start volume_name

查看这个卷的信息:

gluster volume info volume_name

10、分布式条带复制卷

多个大文件在多个节点哈希存储,存储是分成条带,并且保存多份

应用场景:大量大文件并且对可靠性要求高的场景

优点:读/写/可靠性比较均匀

缺点:牺牲存储空间,写性能相对差

brick的数量是stripe、replica的乘积的倍数

gluster volume create volume_name stripe 2 replica 2 node1:/data/br1 node2:/data/br1 node3:/data/br1 node4:/data/br1 node5:/data/br1 node6:/data/br1 node7:/data/br1 node8:/data/br1

11、配置客户端使用卷

将卷挂载到本地的mysql目录:

mount –t glusterfs node1:/volume_name /mysql

设置开机自动挂载

vim /etc/fstab加入:

node1:/volume_name  /mysql  glusterfs  defaults,_netdev 0 0

使用mount -a检测并挂载测试

其他挂在方式(NFS、Samba)参考:

http://www.mamicode.com/info-detail-1925105.html

六、卷管理

1、扩容卷(Expanding Volumes)

您可以根据需要扩展卷,而集群是联机和可用的。例如,你可能想添加一个砖的分布量,从而增加了分配和增加的GlusterFS卷的容量。

同样,你可能想添加一组砖分布式复制量,增加的GlusterFS卷的容量。

注意:

在扩展分布式复制和分布式分散卷时,需要添加多个副本或离散计数的砖块。例如,要使用复制计数为2扩展分布式复制卷,需要在2的倍数(例如4, 6, 8)中添加砖块。

(1)、将节点添加到集群中

gluster peer probe node3

gluster peer probe node4

(2)、扩展volume

gluster volume add-brick volume_name node3:/data/br1 node4:/data/br1

(3)、检查添加信息

gluster volume info volume_name

(4)、Rebalance(不要在业务繁忙的情况下进行)

gluster volume rebalance volume_name start

(5)、查看rebalance的状态

gluster volume rebalance volume_name status

2、缩减卷(Shrinking Volumes)

您可以根据需要缩小卷,而集群是联机和可用的。例如,您可能需要删除由于硬件或网络故障而在分布式卷中无法访问的砖块。

注意:

只有配置信息被删除——您可以继续从砖块直接访问数据。

当收缩分布式复制和分布式离散卷时,需要删除多个副本或条形数的多个砖块。例如,如果以复制计数2缩小分布式复制卷,则需要以2的倍数删除砖块(例如4, 6, 8)。另外,您要移除的砖块必须来自相同的子卷(相同的副本或分散集)。

使用“开始选项”运行“移除砖块”将自动触发重新平衡操作,将数据从已移除的砖块迁移到卷的其余部分。

(1)、移除brick

gluster volume remove-brick volume_name node3:/data/br1 node4:/data/br1 start

(2)、查看移除状态

gluster volume remove-brick volume_name node3:/data/br1 node4:/data/br1 status

(3)、提交

gluster volume remove-brick volume_name node3:/data/br1 node4:/data/br1 commit

(4)、查看brick是否被移除

gluster volume info volume_name

(5)、Reblance(不要在业务繁忙的情况下进行)

gluster volume rebalance volume_name start

3、Replace brick

(1)、将节点添加到集群中

gluster peer probe node3

(2)、替换brick

gluster volume replace-brick volume_name node1:/data/br1 node5:/data/br1 commit force

(3)、查看卷的状态

gluster volume info volume_name

GlusterFS部署的更多相关文章

  1. GlusterFS学习之路(二)GlusterFS部署及卷类型使用

    一.环境说明 主机名 IP地址 角色 磁盘 gluster-node1 192.168.56.11 Server.Client /dev/sdb./dev/sdc./dev/sdd gluster-n ...

  2. 在Kubernetes中部署GlusterFS+Heketi

    目录 简介 Gluster-Kubernetes 部署 环境准备 下载相关文件 部署glusterfs 部署heketi server端 配置heketi client 简介 在上一篇<独立部署 ...

  3. GlusterFS分布式文件系统部署

    GlusterFS是一个可伸缩的网络文件系统,使用常见的现成的硬件,您可以创建大型分布式存储流媒体解决方案.数据分析.和其他数据相关的任务.GlusterFS是自由和开源软件. 详细参考官网:http ...

  4. CentOS7 GlusterFS文件系统部署

    一.GlusterFS简介 GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点 ...

  5. CentOS 7.6 部署 GlusterFS 分布式存储系统

    文章目录 GlusterFS简介 环境介绍 开始GlusterFS部署 配置hosts解析 配置GlusterFS 创建文件系统 安装GlusterFS 启动GlusterFS 将节点加入到主机池 创 ...

  6. k8s使用Glusterfs动态生成pv

    一.环境介绍 [root@k8s-m ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4 ...

  7. kubernetes 数据持久化之Glusterfs

    1.GlusterFS  部署过程请参考上篇文章 2.配置endpoints [root@manager ~]# cat glusterfs-endpoints.json { "kind&q ...

  8. kubernetes资源使用glusterfs卷进行数据持久化

    1.GlusterFS部署 安装GlusterFS集群的主要目的是为k8s集群提供分布式持久化存储. GlusterFS部署使用2台服务器,服务名称与IP如下: 1 db-storagea 10.1. ...

  9. 分布式存储之GlusterFS

    公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 1.glusterfs概述 GlusterFS系统是一个可扩展的网络文件系统,相比其他分布式文件系统,GlusterFS具有 ...

随机推荐

  1. This表示当前对象

    This表示当前对象. Public void printNum(){ Int number=40: System.out.println(this.number); } 此时打印的是实例变量,而非局 ...

  2. 项目中遇到的direct3d问题,设备丢失

    今天在调试项目的时候,遇到一个问题,之前在写代码的时候,调试都是在本地的电脑上进行调试,然而今天是通过远程登陆到电脑进行调试的,所以在调试的过程中遇到了一个问题. 其实开始的时候,有同事反应说,当远程 ...

  3. php -- PDO异常处理

    异常处理: PHP:默认为直接报错 MYSQL:默认为静默模式,错就错,不报错 PDO:默认为静默模式,错就错,不报错 以前,当PHP碰到错误的时候,会直接报错,错误处理会变得相当麻烦.后来,当错误发 ...

  4. git 怎么看某个commit 修改的代码

    详细的更改: git show commitid 只列出文件名:git show --pretty="format:" --name-only commitid 转自: http: ...

  5. hdu 1174:爆头(计算几何,三维叉积求点到线的距离)

    爆头 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  6. 【cb2】扩展硬盘

    1.硬盘为sata串口 2.参考 http://docs.cubieboard.org/tutorials/ct1/installation/moving_rootfs_from_nandflash_ ...

  7. leetcode 153: Majority Element

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  8. 复习及总结--.Net线程篇(3)

    不幸的发现,原来多线程的东西还有好多. 不只是一个Thread就能把事情做完的,好吧,孤陋寡闻了 这里总结下  复习及总结--.Net线程篇(2)里的两个概念AppDomain和ThreadPool ...

  9. Maven编译失败,提示No compiler is provided in this enviroment. Perhaps you are running on a JRE rathen a JDK ?

    用maven对项目进行构建时,提示No compiler is provided in this enviroment. Perhaps you are running on a JRE rathen ...

  10. 修改DedeCMS图片上传路径命名规则的具体方法步骤

    收藏到:0时间:2013-08-23   文章来源:马海祥博客   访问次数:2350 最近在整理网站根目录下文件的时候,发现马海祥博客网站已经有上千个文件夹了,其中光图片文件夹就占了近一半.这个主要 ...