作者 程小微
软件定义存储的最终目的是在应用程序和物理存储资源之间建立一个独立于硬件并与工作负载无关的存储应用层。这里,“层“的概念,至关重要。当然,你也可以理解为将存储独立化。
说起来容易,但在实际实施中可就没有这么容易了。本文将与您一同探讨软件定义存储的实施问题,同时需要说明的一点是,我们所说的部署,并不是指软件的具体安装,而是一种业务上的部署,类似于如何定制软件包、要不要增量式发布等问题并不在我们讨论的范围,我们说的会更为抽象一点。
首先,我们来看一下软件定义存储的常见实施方式:
方法之一是使用存储硬件的应用程序接口(API),或者采用硬件自带的hooks(挂钩)
机制,自行对软件修正(更新),这也是较为传(过)统(时)的一种方式。
这种方法的的短板在于:
1、与多个厂商的基本套件的更新保持同步,需要高昂的成本,最明显的就是软件更新问题。
2、软件的更新权利在存储虚机管理程序的厂商手中。比如,当市场上出现一种新技术之后,用户只能被动等待软件的更新之后才可以使用。这就是说我们上面所说的“hooks(挂钩)
机制“。
这个问题的解决方法是:
当实施软件定义存储等新技术的时候,用户必须考虑访问点、应用程序接口(API)和初始格式化,以达到取得最佳性能和容量的效果。
一个有效的建议就是,尽量寻求更为独立的软件定义存储产品,这样的产品没有仅限于与特定厂商的硬件或者服务器虚拟化软件进行连接。这可以理解为业务合作上的解耦。优先与那些可以为客户提供单一的SKU,包括硬件、软件以及全套软件支持的企业合作。此外,很多软件定义存储产品的最大价值在于,能够兼容多种存储设备且无需考虑它们具体来自哪家供应商。
在“不可知的“具体业务部署中,“黑天鹅“会经常出现。所以,应该尽量选择那些既可以作为集中式服务器又可以作为联合资源管理器进行实施的产品。
在存储专家Jon Toigo看来,集中式服务器支持单点或多点的集群故障切换,即使在复杂的SAN基础设施中也能够易于管理和控制。联合部署能力将有助于满足虚拟化存储服务必须靠近应用程序工作负载进行交付的要求,大多数服务器端的固态部署模式也是同样的情况。最佳的软件产品将通过跨越多个软件部署的集中式配置管理工具,同时支持集中式和联合式部署实施。
方法二,则是融合,不过现在大家更习惯叫“超融合“,其实质是通过在存储设备上安装软件来实现软件的数据管理于硬件存储的融合。软件定义存储的最终效用就是节省成本,并与现有的基础设施相融合。
相比于方法一是将单独的存储器、服务器和网络设备捆绑到单一机架上,形成一个松散的融合(这一过程并没有增加什么新的东西),方法二是将计算、存储、网络三层架构归结到一个架构单元里面之后,通过软件的“融合“(即所谓的软件定义层)解决了扩展性、成本等问题。所以在性能方面也会更为稳定。
这种方法的的短板在于:
1、作为一种新增加的模块,首次使用软件定义存储(不管是软件还是硬件)在部署上可能需要一些时间;
2、各节点的存储容量控制进行有效管理和解析;
这两个问题的解决方法是:
1、有专门的人来协助部署,这一点,最好在合作初期就确定下来;同时,需要说明的是,同一品牌不同型号的超融合设备之间也会存在较大的差异,比如在具体的场景定位、可扩展的节点数、节点上的处理器型号、物理尺寸等方面。
2、采用一个在管理、运维等方面更为高效、灵活的管理系统。通过统一的管理系统,对存储进行统一的管理。比如一个能够直观显示存储加载容量变化过程的管理工具。如果是基于开源Ceph所做的管理系统,目前还没有做到十分的完善。
从实施结果上看,成功的软件定义存储的实施应该取得2-4倍的应用程序的性能的改善,就像固态I/O排队的功能出现在磁盘式的基础设施面前一样,这并不神奇。高速缓存内存置于任何网络附加存储
或者网络化存储设备面前的时候也是一样的。
除了性能的改善,软件定义存储(层)还可以对数据保护、容量管理等服务进行托付,这样,就不用再为每台阵列上的增值软件签订单独的、昂贵的年度合同了。这样,你在软件定义存储业务上的预算,可能就不仅是为了单独的存储业务而设定了,请相信,这会极大的增加你的预算的通过率。