1.3 心中的存储系统
在了解了存储系统的演变历程,感受了一波概念的冲击之后,我们不禁要问:什么样的存储系统才算好呢?
可能有些读者会说:对于存储服务,要求无非就是稳定、稳定再稳定。如何理解和细化所谓的稳定呢?本书以为,首先考虑的应该就是所谓的高可用性(HA)和可扩展性;其次,在性能满足的前提下,还隐含了一个低成本的要求;再次,作为一个软件定义存储,开源和标准接口(API)也是至关重要的。
1.高可用(HA)
通俗点讲,高可用性(High Availability,HA)就是说系统的停用时间短,可供使用的时间长。业界通常的做法,也是非常有效的做法,就是采用集群系统(Cluster),将各个主机系统通过网络或其他手段有机地组成一个群体,共同对外提供服务。
创建集群系统,通过高可用性的软件将高可用性的硬件结合起来,消除单点故障。例如:当一台主机出现故障时,服务出口将自动转移到其他正常使用的主机上,总体不会影响服务的对外提供。
2.可扩展
对于存储系统,可扩展性就是基于扩展系统的存储容量,即当系统的存储空间不够时,能够平滑地扩容。扩展通常包括两种:纵向扩展(Scale-up)和横向扩展(Scale-out)。
纵向扩展可以理解为节点能力的扩展,例如:存储不够时,添加一块硬盘;横向扩展就是集群中节点数量的扩展,例如:存储不够时,再添加一台主机。
图1-3所示是存储服务横向扩展示意。
图1-3 存储服务横向扩展示意
图1-3中,横向扩展方式非常适用于按“池”的方式来进行资源的统合管理。显而易见,考虑到设备硬件限制(例如扩展插槽和老化回收),横向扩展更加能够满足系统的扩展性。
3.低成本
通过图1-1和图1-2,不难看出,存储系统的成本主要体现在那些“高大上”的硬件设备上面。所以,如果存储系统能够支持通用的商用硬件,那么无疑会大大降低部署成本。
4.开源
当前很多互联网公司(例如亚马逊、阿里巴巴等)都提供了商业化的云存储服务,而要搭建企业自己的私有云,则需要走开源路线。OpenStack Swift项目正是一个成熟的开源项目,采用Apache 2.0许可协议,可用来开发商用系统。
5.对开发的支持
按照软件定义存储(SDS)的要求,目标系统应该提供标准接口(API)来管理和维护存储设备和服务。例如使用标准HTTP方法或特定语言的API等。
标准接口的好处显而易见:能够被开发者更好地使用,从而可以更好地引入到实际的项目中去。