- 写给架构师的Linux实践:设计并实现基于Linux的IT解决方案
- (哥斯)丹尼斯·萨拉曼卡 埃斯特班·弗洛雷斯
- 2637字
- 2023-05-17 17:12:24
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形式拼接。虽然每个小分散卷的尺寸未必相同,但为了避免某些复杂的问题,最好是能够令其一致。