2.5 为什么选择GlusterFS

了解到SDS的核心概念、存储集群,以及块存储、文件存储与对象存储之间的区别后,现在谈谈企业客户为什么喜欢用GlusterFS来满足存储需求。

前面说过,GlusterFS是一种SDS,也就是覆盖在传统的本地存储挂载点上的一种抽象层,它可以把多个节点中的存储空间合成一个存储实体或存储集群。GlusterFS既可以运行在现成的硬件上,也可以运行在私有云、公共云或混合云等云端平台。它主要与文件存储(file storage)搭配使用的,可以通过gluster-block插件作为块存储的后端,或通过gluster-swift插件作为对象存储来使用。

GlusterFS的主要特性有:

❑可以部署在商用硬件。

❑可以部署在私有云、公共云或混合云。

❑没有故障单点也可以说,不会发生单点故障。——译注

❑易于扩展。

❑支持异步的地域复制。

❑性能较高。

❑能够自我修复。

❑较为灵活。

2.5.1 GlusterFS的特性

现在讲解上述特征,告诉大家GlusterFS为什么很受企业客户欢迎。

1.几乎可以运行在任何一种商用硬件上面

ARM(Advanced RISC Machine)架构与x86架构的硬件,以及Raspberry Pi等设备,都可以运行Gluster,因为它只是把这些硬件当成放置存储卷的基础来使用,不要求有某项特殊的功能。

按照最基础的配置方法,凡是格式化成XFS的磁盘,都可以视为一个节点。尽管这并不是最好的配置方法,但可以稍后给该节点配备更多的资源,或是添加更多的节点。

2.可以部署在私有云、公共云或混合云上面

GlusterFS既能够以容器镜像(container image)的形式使用,也可以安排到专用的VM中。云平台的用户喜欢它的主要原因在于,GlusterFS仅仅是以软件实现而成的,可以部署在私有云、公共云或混合云中。由于它不受制于特定的厂商,所以可以让存储卷跨越多个云平台,并进行锁定。我们可以结合多家云平台所提供的存储卷,打造可用性较高的配置方案;即便其中某一个云平台出现问题,该方案也可以把要求访问存储卷的流量引导至别的云平台,从而缩短停机时间,甚至不停机。

3.没有故障单点

通过对存储卷进行配置,可以把数据分布在集群中的多个节点上,从而避免出现故障单点;因为不需要哪个节点充当head或master控制整个集群。

4.易于扩展

我们可以纵向扩展GlusterFS给某个节点添加更多资源,也可以横向扩展GlusterFS给集群添加更多节点。

这些扩展操作都可以在线完成,而且不会妨碍集群给客户端提供数据,因此,客户端与集群之间的通信是不会中断的。

5.支持异步的地域复制

由于GlusterFS不存在故障单点问题,可以实现地域复制(geo-replication),也就是将数据异步地复制到地理位置完全不同的数据中心。

图2-10演示了多个站点之间的地域复制。

6.性能较高

由于数据分布在多个节点上,因此多个客户端可以同时访问该集群。这种同时从多个源头发出数据访问请求的情况叫并行(parallelism)。为了提升并行效率,GlusterFS会把客户端发来的请求分派到不同的节点。还可以通过添加资源或节点(也就是通过垂直扩展与水平扩展)的办法提升性能。

图2-10

7.能够自我修复

在遭遇突发的停机状况时,保持正常运作的节点依然能够对流量做出处理。此时,如果有新的数据添加到了集群中,那么等故障节点重新上线后,必须将这些数据同步过去。

GlusterFS会在客户访问新文件时,自动进行自我修复,从而将故障后重新上线的节点所缺失的数据,给复制过去。这对用户及客户端来说是透明的也就是说,他们不会观察或感受到明显的影响。——译注

8.较为灵活

GlusterFS既可以部署在企业内部的实体硬件上,也可以部署在已有的虚拟基础设施中,还可以作为VM部署在云端或当成容器使用。它不要求客户用某种固定的方式部署,允许客户根据需求去决定。

9.能够实现远程直接内存访问(RDMA)

RDMA(Remote Direct Memory Access)技术让Gluster服务器与Gluster客户端之间能够进行延迟极低、性能极高的网络通信。GlusterFS可以利用RDMA实现HPC(High-Performance Computing,高性能计算)应用,或处理并发度较高的工作。

2.5.2 Gluster存储卷的类型

了解GlusterFS的核心特性后,现在来看它支持哪几类存储卷。可以帮助我们在下一章设计实际的GlusterFS解决方案。

GlusterFS允许自行选择与工作最为契合的卷类型。例如,如果对可用性的要求比较高,可以使用replicated类型的卷;这种卷会在两个或多个节点之间复制数据,让节点上面的数据完全相同。

下面先把这几种类型罗列出来,然后分别讨论每一种类型的优点与缺点:

❑分布式卷

❑复制卷

❑分布式复制卷

❑分散卷

❑分布式分散卷

1.分布式卷

分布式卷是把数据分布到各节点中,可以通过较低的开销平滑地扩充可用空间。其主要缺点在于没有数据冗余,因为所有的文件都分布在同一节点或多个节点的某个brick中,并没有在其他的brick上面留存复本。分布式卷主要用于对存储量要求比较高的并发应用程序。

分布式卷只是一批磁盘(Just A Bunch Of Disks,JBOD)或一个线性的逻辑卷管理器(Logical Volume Manager,LVM),它仅仅把空间简单地聚合起来,而不会包含数据分段或奇偶校验机制。

图2-11描述了分布式卷的工作原理。

图2-11

2.复制卷

复制卷是把数据拷贝到不同节点的不同brick中。对复制卷进行扩充时,必须增加相同数量的复本。例如,如果对含有两份复本的复制卷做扩充,那么扩充后有4份复本。

复制卷有点像RAID1,后者会把数据镜像到所有可用的节点上。复制卷的缺点是扩展性相对有限,优点是可用性比较高,即便出现了突发的停机状况,依然有复本能够提供客户所需的数据。

使用复制卷时,必须采用某种机制来防止裂脑(split-brain)问题。裂脑问题指的是不同的客户端可能要求写入同一份数据,从而导致其中某一批节点上面的值,可能会与另一批节点上面的值不符。为此,需要引入server quorum意思是说,读取或写入等操作,必须获得一定的票数(或者说,为一定数量的节点所许可)才能加以执行。——译注这样的机制,以防止产生数据冲突的情况。

图2-12演示了复制卷的工作原理。

图2-12

3.分布式复制卷

分布式复制卷与普通的复制卷类似,主要区别在于分布式复制卷本身是以分布的形式存在的。例如,有两个不同的复制卷均带有10TB空间,如果把这两个卷合起来,那么可以构成一套总容量为20TB的分布式复制卷。

分布式复制卷主要用在对可用性与冗余要求都比较高的场合,当其中某些节点发生故障时,整个集群依然能够正常运作。

图2-13演示了复制卷的工作原理。

图2-13

4.分散卷

分散卷具备分布式卷与复制卷的优势,它把数据散布在所有可用的brick上面,同时提供冗余机制。这些brick的大小相同,否则,当最小的brick写满后,整个卷就无法继续处理写入操作。分散卷可以想象成RAID 5或RAID 6磁盘阵列,把数据分段存放到每块磁盘中并创建奇偶校验信息,以便在数据出错时,能够根据这些信息把正确的数据重新构造起来。上述类比可以帮我们理解分散卷的好处,但分散卷的实际运作过程却与那两种磁盘阵列完全不同,因为分散卷是根据纠错码(erasure code)给数据分段的。分散卷能够合理地顾及性能、空间与可用性等因素。

5.分布式分散卷

在分布式分散卷中,数据会分布在其中每一个小的分散卷里。这可以在分散卷的层面实现冗余,优势与分布式复制卷类似。

可以把分布式分散卷想象成两组RAID 5磁盘阵列,它们以JBOD形式拼接。虽然每个小分散卷的尺寸未必相同,但为了避免某些复杂的问题,最好是能够令其一致。