2.3 什么是GlusterFS

GlusterFS是由Gluster设立的开源项目,2011年Red Hat,Inc.收购了Gluster,这并不是说你必须订购Red Hat的服务或是给Red Hat付费,才能使用GlusterFS,因为它依然是个开源项目。你还是可以免费安装并查看源代码,乃至给项目提交内容。尽管Red Hat也提供基于GlusterFS的付费解决方案,但本章要讲的是GlusterFS开源项目本身。

图2-2是Gluster项目的Contributor(贡献者)数量与Commit(提交)数量。

图2-2

为了理解GlusterFS,我们必须先知道它与传统的存储系统有什么区别;要想知道这种区别,我们又必须先知道SDS背后的理念,以及GlusterFS的本质。

传统的存储系统是由商业软件支持,并按照业界标准打造的存储阵列,它通常受制于某家具体的硬件厂商。这种存储系统是由该系统的提供商所制造的,因此会在以下几个方面受限:

①可扩展性

②硬件兼容性

③客户端操作系统

④配置

⑤厂商

SDS

如果改用SDS,那么就可以完全摆脱或者很大程度上摆脱上述限制,因为它的扩展能力很高,而且不需要依赖特定品牌的硬件。无论是哪家厂商制作的服务器,只要符合公认的标准并具备需要的存储能力,就可以加入存储池。你只需要从传统的存储机制切换到SDS,就可以摆脱上述4项限制。

1.降低成本

有很多人都过SDS大幅降低了营业费用(OPerating Expense,OPEX),因为他们不用为了扩充存储量而专门购买某家厂商的扩展盘架(expansion shelf),并花好几个星期去等待收货及安装。有了SDS可以迅速将数据中心的某台服务器添加到集群,从而把该服务器的存储空间提供给应用程序使用,这个过程叫插件式扩展(plug-in scalability),大多数的开源SDS项目都支持这种扩展方式。从理论上来说,只要不撑破就可以一直用SDS做扩展。

2.可扩展性

给存储池添加新的服务器,SDS不仅会增加集群的存储容量,还会提升它的弹性。因为它可以把数据分布在多个成员节点上,并根据所设定的配置参数,以镜像机制或奇偶校验机制来进一步提升可用性。

3.控制

SDS并不会凭空创造存储空间,也不会把存储与硬件相分离(硬件指硬盘驱动器、SSD(Solid State Drive,固态硬盘驱动器)或其他一些用来保存信息的设备)。就算用了SDS,实际的数据也还是要保存在硬件设备里面。SDS只不过是添加了一层逻辑,让用户能够控制数据的存放地点及存放方式。它通过一种最为基本的元件API(Application Programming Interface,应用程序编程接口)实现这种抽象效果,让用户能够对存储集群与逻辑卷进行管理与维护,从而把存储空间提供给其他的服务器、应用程序、监控代理去使用,让集群在系统以降级模式运行时能够自我修复。

4.SDS正在占领市场

SDS代表了存储行业的发展方向。有人预测接下来的几年里,70%的存储阵列都只能通过纯软件的解决方案,或者以VSA(Virtual Storage Appliance,虚拟存储设备)的形式来访问。传统的NAS(Network Attached Storage,网络附加存储)方案比SDS实现方案贵30%,而其他一些常规的磁盘阵列比NAS还要贵。除了这些因素,我们还要考虑到企业每年需要消费的数据,大约比上一年增加40%,但成本只能压低25%,于是会有越来越多的企业转向SDS。

运行在公共云、私有云与混合云上的应用程序越来越多,数据消费者及其消费的业务数据呈指数式增长。这些数据通常是运行相关任务必备的数据,而且要求存储系统具有很强的弹性。下面列举一些应用程序:

❑电子商务与网络商店。

❑财务应用。

❑企业资源规划(ERP)。

❑医疗卫生。

❑大数据。

❑客户关系管理。

公司在保存海量数据(bulk data)的时候,还要对其进行访问,并且要求尽量降低延迟。例如,你按照和医生的约定去照X光,但那里没有空间保存X光图像,必须再等一个星期。现实中这样的场景不会出现,因为医院都有高效的购买流程,会根据存储空间的消耗情况做出预判,以便及时购买并安装新硬件。上例想要表达的是不能等到没有空间保存数据的时候,才去找办法。要想更迅速、更有效地使用SDS,最好在抽象层上面安设一台符合POSIX标准的服务器。

5.高容量存储

一些公司需要使用数据湖泊(data lake)充当备用存储机制,因为想保存原始形式的数据以执行数据分析、实时分析与机器学习等任务。这样的备用存储机制很适合用SDS实现,这样做能够降低维护费用,解决成本问题。

SDS除了在价格与扩展能力方面的优势,还有一个重要、实际的优点灵活程度高。它可以对数据进行归档、存放多媒体数据、给VM(Virtual Machine,虚拟机)提供存储空间,还可以在私有云乃至容器里充当保存对象的端点。它可以部署在上述基础设施上,运行在公共云或企业内部的虚拟基础设施上,也可以运行在Docker容器乃至Kubernetes pod里面。你可以通过一套名为heketi的RESTful管理界面把Kubernetes与GlusterFS集成起来,等到pod需要使用持久存储卷的时候,再去动态地提供。