本文经过对卷类型的分析对比,来帮助读者选取生产环境最符合服务的挂载存储,命令可结合《glusterfs详解及kubernetes 搭建heketi-glusterfs》进行实验,下面进入正题html
如下建立挂载卷,都可经过如下命令进行查看、启用、中止、删除node
#查看已建立挂载卷 gluster volume info #启动挂载卷 gluster volume start gv0 #删除前,先中止挂载卷 gluster volume stop gv0 #删除挂载卷 gluster volume delete gv0
分布式模式,既DHT,是GlusterFS的默认模式,在建立卷时,默认选项是建立分布式卷。在该模式下,并无对文件进行分块处理,而是经过hash算法分布到全部brick server上,只是扩大了磁盘空间,相似window中的跨区卷linux
distribute voulme特色算法
- 文件分布在不一样的服务器,不具有冗余性。
- 更容易且廉价地扩展卷的大小。
- 单点故障会形成数据丢失,不具有容错性。
- 依赖底层的数据保护。
gluster volume create gv0 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0
条带模式,既Striped,相似RADI 0,在该模式下,根据偏移量将文件分红N块(N个条带节点),轮询地存储在每一个Brick Server节点。节点把每一个数据块都做为普通文件存入本地文件系统,经过扩展属性记录总块数和每块的序号。在配置时指定条带数必须等于卷中Brick 所包含的存储服务器数,在存储大文件时,性能尤其突出,可是不具有冗余性。安全
stripe volume特色服务器
- 数据被分割成更小块分布到块服务器群中的不一样条带区。
- 分布减小了负载且更小的文件加速了存取的速度。
- 没有数据冗余,不具有冗余性。
单点故障会形成数据丢失,不具有容错性。网络
⚠️RAID0称为条带化存储,将数据分段存储在各个磁盘中,读写都可以并行处理,所以读写速率为单个磁盘的N倍,没有冗余功能,任何一个磁盘的损坏就会致使的数据不可用。并发
RAID 0的特色:
- 数据条带式分布
- 没有冗余,性能最佳(不存储镜像、校验信息)
- 不能应用于对数据安全性要求高的场合
gluster volume create gv0 stripe 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0
复制模式,既AFR,文件级别RAID 1,即同一文件保存一份或多份副本,每一个节点上保存相同的内容和目录结构。复制模式由于要保存副本,因此磁盘利用率较低,若是多个节点上的存储空间不一致,那么将按照木桶效应取最低节点的容量做为该卷的总容量。复制卷具备冗余性,即便一个节点损坏,也不影响数据的正常使用。分布式
replica volme特色ide
- 卷中全部的服务器均保存一个完整的副本。
- 卷的副本数量可由客户建立的时候决定。
- 磁盘利用率低。
具有冗余性
RADI1是镜像存储,没有数据校验,数据被同等的写入到2个或者多个磁盘中。
RAID 1的特色:
- 提供数据块冗余
- 写入速度相对慢, 可是读取速度比较快
gluster volume create gv0 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0
Dispersed Volume是基于ErasureCodes(纠错码)的一种新类型的Volume(3.6版本正式发布该特性),相似于RAID5/6。经过配置Redundancy(冗余)级别提升可靠性,在保证较高的可靠性同时,能够提高物理存储空间的利用率。
详细请查看《GlusterFS Dispersed Volume(纠错卷)总结》
gluster volume create gv1 disperse 4 redundancy 1 10.8.4.92:/var/lib/heketi/mounts/gv1 10.8.4.93:/var/lib/heketi/mounts/gv1 10.8.4.131:/var/lib/heketi/mounts/gv1 10.8.4.132:/var/lib/heketi/mounts/gv1
最少须要4台服务器才能建立。 brickserver数量是条带数的倍数,兼具distribute和stripe卷的特色,是DHT 与 Striped 的组合型。
gluster volume create gv0 stripe 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0
最少须要4台服务器才能建立。brickserver数量是镜像数的倍数,兼具distribute和replica卷的特色,能够在2个或多个节点之间复制数据,是DHT 与 AFR 的组合型。
gluster volume create gv0 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0
最少须要4台服务器才能建立。相似RAID 10,是 Striped 与 AFR 的组合型。
先组成RAID1,而后组成RAID0
RAID 10(又叫RAID 1+0)特色:
- 先按RAID 0分红两组,再分别对两组按RAID 1方式镜像
- 兼顾冗余(提供镜像存储)和性能(数据条带形分布)
gluster volume create gv0 stripe 2 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0
至少须要8台 服务器才能建立。三种模式的混合。
gluster volume create gv0 stripe 2 replica 2 10.8.4.92:/var/lib/heketi/mounts/gv0 s10.8.4.93:/var/lib/heketi/mounts/gv0 10.8.4.131:/var/lib/heketi/mounts/gv0 10.8.4.132:/var/lib/heketi/mounts/gv0 exampleNode5:/var/lib/heketi/mounts/gv0 exampleNode6:/var/lib/heketi/mounts/gv0 exampleNode7:/var/lib/heketi/mounts/gv0 exampleNode8:/var/lib/heketi/mounts/gv0
volumetype: replicate:3
概述:
- 单个节点或硬盘挂损,不影响存储使用,数据不会丢失
- 对于kubernetes的StatefulSet类型服务,如es这种自己具备数据同步功能的服务,虽然达到了自动建设volume目的,可是一份数据备份了node数量x复制卷的Brick1数,得不偿失。
volumetype: none
概述:
- 对于能够同步数据的高可用服务,推荐此卷。
- 对于普通服务(Deploy),此类型没有容错性和冗余数据。
- 方便扩展磁盘空间
volumetype: disperse:4:2
概述:
- 对于普通服务(Deploy),此类型具有了高可用,并且提高了存储空间利用率,推荐使用。
Gluster:Quick Start Guide
请按照官网搭建,很简单,便再也不赘述。
主要步骤:
- 建立罗磁盘
- 磁盘分区
- 磁盘挂载
glusterd peer probe server2
新增gluster pool节点- gluster建立volume
对于重要的数据存储,kubernetes提供的三种存储方式不能知足,可手动建立volume、PV。做者更趋向条带复制卷(stripe replica volume),一般状况用分布式条带复制卷(distribute stripe volume)较多。
⚠️整理分析不易,对您若是有帮助,关注做者,留下你的喜欢,后续还有技术干料!!!
如下内容引自《GlusterFS卷类型及数据分布分析》,能够直接在本文阅读或跳转阅读
在该模式下,并无对文件进行分块处理,文件直接存储在某个server节点上。“没有从新发明轮子”,这句话很好的归纳了这种GlusterFS的设计思路。由于使用了已有的本地文件系统进行存储文件,因此通用的不少linux命令和工具能够继续正常使用。这使得GlusterFS能够在一个比较稳定的基础上发展起来,也更容易为人们所接受。由于须要使用到扩展文件属性,因此其目前支持的底层文件系统有:ext三、ext四、ZFS、XFS等。
因为使用本地文件系统,一方面,存取效率并无什么没有提升,反而会由于网络通讯的缘由而有所下降;另外一方面,支持超大型文件会有必定的难度。虽然ext4已经能够支持最大16T的单个文件,可是本地存储设备的容量实在有限。因此若是有大量的大文件存储需求,能够考虑使用Stripe模式来实现,如考虑新建专门存储超大型文件的stripe卷。
功能:
将文件存放在服务器里,如上图,File1和File2存放在server1,而File3存放在server2,文件都是随机存储
其实Stripe模式至关于raid0,在该模式下,系统只是简单地根据偏移量将文件分红N块(N个stripe节点时),而后发送到每一个server节点。server节点把每一块都做为普通文件存入本地文件系统中,并用扩展属性记录了总的块数(stripe-count)和每一块的序号(stripe-index)。stripe数必须等于volume中brick所包含的存储服务器数,文件被分红数据块,以Round Robin的方式存储在bricks中,并发粒度是数据块,大文件性能好
功能:
将文件存放在不一样服务器里,如上图,File被分割为6段,一、三、5放在server1,二、四、6放在server2
Replicated模式,也称做AFR(AutoFile Replication),至关于raid1,即同一文件在多个镜像存储节点上保存多份,每一个replicated子节点有着相同的目录结构和文件。replicated模式通常不会单独使用,常常是以“Distribute+ Replicated”或“Stripe+ Replicated”的形式出现的。若是两台机的存储容量不一样,那么就如木桶效应,系统的存储容量由容量小的机器决定。replica数必须等于volume中brick所包含的存储服务器数,可用性高。建立一个两两互为备份的卷,存储池中一块硬盘损坏,不会影响到数据的使用,最少须要两台服务器才能建立分布镜像卷。
Replicated模式是在文件的级别上进行的(相比较于HDFS),并且在建立卷volume时就肯定每一个server节点的职责,并且只能人工的进行调整。这样的话就相对的不灵活,若是一个节点A出了问题,就必定要用新的节点去替代A,不然就会出现一些问题隐患。
在Replicated模式下,每一个文件会有以下几个扩展属性:
读写数据时,具体的状况以下:
- 读数据时:系统会将请求均衡负载到全部的镜像存储节点上,在文件被访问时同时就会触发self-heal机制,这时系统会检测副本的一致性(包括目录、文件内容、文件属性等)。若不一致则会经过changelog找到正确版本,进而修复文件或目录属性,以保证一致性。
- 写数据时:以第一台服务器做为锁服务器,先锁定目录或文件,写changelog记录该事件,再在每一个镜像节点上写入数据,确保一致性后,擦除changelog记录,解开锁。
若是互为镜像的多个节点中有一个镜像节点出现了问题,用户的读/写请求均可以正常的进行,并不会受到影响。而问题节点被替换后,系统会自动在后台进行同步数据来保证副本的一致性。可是系统并不会自动地需找另外一个节点来替代它,而是须要经过人工新增节点来进行,因此管理员必须及时地去发现这些问题,否则可靠性就很难保证。
功能:
将文件存放在服务器里,如上图,File1同时存在server1和server2,File2也是如此,至关于server2中的文件是server1中文件的副本。
分布式的条带卷,volume中brick所包含的存储服务器数必须是stripe的倍数(>=2倍),兼顾分布式和条带式的功能。每一个文件分布在四台共享服务器上,一般用于大文件访问处理,最少须要 4 台服务器才能建立分布条带卷。
功能:
将文件存到不一样服务器里,如上图,File被分割成4段,一、3在server1(exp1)中,二、4在server1(exp2)中。server2(exp3)一、3存放server1(exp1)中的备份文件,server2(exp4)二、4存放server1(exp2)中的备份文件。
分布式的复制卷,volume中brick所包含的存储服务器数必须是 replica 的倍数(>=2倍),兼顾分布式和复制式的功能。
功能:
将文件备份随机存放在服务器里,如上图,server1(exp1)存放File1文件,Server1(exp2)存放File2文件。server2(exp3)存放File1的备份文件,server2(exp4)存放File2的备份文件。
功能:
将文件分割并备份随机存放在不一样的服务器里,如上图,File被分割4段,一、3存放在server1(exp1)上,二、4存放在server2(exp4),server1上的(exp3)存放server2(exp4)的备份文件,server2上的(exp2)存放server1(exp1)的备份文件。
分布式条带复制卷分布条带数据在复制卷集群。为了得到最佳效果,你应该使用分布在高并发的条带复制卷环境下并行访问很是大的文件和性能是相当重要的。
功能: 将文件分割并备份随机存放在不一样服务器里,如上图,File被分割成4段,一、3存放在server1(exp1)中,二、4存放在server2(exp3)中。server1(exp2)存放server1(exp1)的备份文件,server2(exp4)存放server2(exp3)的备份文件。