前几天某大厂的用户大会让“软件定义”系列话题再次攀上了新浪潮。软件定义计算自不必说,已经进入成熟应用阶段。软件定义网络(SDN)和软件定义存储(SDS)亦方兴未艾,获得越来越多用户市场的认可。尤其是软件定义存储,在去年的维基百科上,其还被认为是“一个营销术语”,而仅相隔一年的时间,随着越来越多厂商的加入,以及相关产品的推出,软件定义存储这一概念已经越来越被用户市场认可,维基百科上也与时俱进,承认了“Software Define Storage”这一概念。
软件定义存储之所以能够如此蓬勃的发展,得益于越来越多解决方案供应商的不断宣传教育,以及用户对于新型存储解决方案的旺盛需求,更为重要的事实是:软件定义存储是存储行业的必然趋势,并且是经过多年一步一步演进而来。
早在大机时代,存储就作为一个单独的IT分支行业向前发展。但那个时候的存储系统大多采用专用系统软件和硬件,比如PPC芯片就是当时的主流存储处理器。当时的存储系统并没有太多的高级功能,常见的功能主要是快照、复制等,这一类软件功能的共同特点都是逻辑简单,对CPU的计算需求并不高,PPC芯片所具有的特点能够很好地满足这一时代的存储需求。
自2000年以后,IT行业迎来了蓬勃发展,作为IT行业的支柱行业之一,存储行业也迎来新一轮的创业高潮,3PAR(后被HP收购)、Equallogic(后被Dell收购)、Lefthand(后被HP收购)、DataDomain(被EMC收购)以及Isilon(被EMC收购)都先后推出各自的存储产品。这一时期的存储产品都注重软件功能,除了拥有快照、复制等功能之外,还出现了自动精简配置、自动分层存储、重复数据删除以及存储虚拟化等新的功能。
新存储功能的加入,意味着对存储阵列的计算能力提出了更高的要求,同时也提升了运算的复杂度。例如DataDomain备份产品中所使用的重复数据删除技术,对计算性能要求较高,且运算逻辑相对更加复杂,所以使用了更善于复杂逻辑运算的x86处理器。而未采用x86处理器的3PAR早期产品,则使用了专用的ASIC芯片用以提供自动精简配置技术。
存储巨头EMC在很早的时候就将x86处理器用在CLARiiON CX系列之中,但高端存储系列DMX仍使用的PPC处理器,直到DMX的替代者——VMAX的发布, VMAX系列也全面采用Intel Xeon处理器。其他的如Isilon、LeftHand和IBM在2009年所发布的Storwize等系列产品全部都基于x86标准硬件。这主要是因为x86处理器的性能提升速度越来越明显,为各种需要复杂逻辑运算的高级存储功能提供了条件,标准化的硬件也给产品研发带来了便利性。
随着存储行业的不断发展,存储高级功能逐渐开始普及,各种高端存储产品所具有的软件功能开始在中低端存储产品上出现,基于x86的标准化硬件逐步替代专用硬件,进而一统存储市场,这使得“软件”成为各存储厂商的核心竞争点。从本质上讲,存储本身就是一个软件行业,但即使是这样,这一时期的存储解决方案仍称不上是软件定义存储。
之所以如此说,原因在于,尽管上述存储产品都强调软件在其中所发挥的作用,也是基于x86标准硬件,但其弹性是由硬件提供,这里的弹性包括可用性(Availability)和可扩展性(Scalability)两个方面。
传统存储阵列双控制器间的互联及数据访问路径
如上图所示,这是一个很典型的双控制器存储阵列,不管是Active-Passive还是Active-Active,其都可以用这张图来表示。两个控制器之间必须要使用特定的物理连接线路(如NTB,非透明桥),由存储操作系统识别并按需切换。同时,为了保证系统中的两个控制器都能访问到每一个驱动器,其驱动器接口必须是支持双端口的SAS驱动器(或FC-AL),即使支持SATA驱动器,也需要经多路复用器(Multiplexer,MUX)转为双端口,也就是说每个控制器都必须有一条“唯一”的硬件通路来连接到存储系统中的每一块驱动器,典型的基于硬件的可用性。
这种存储大多采用Scale-up的扩展方式,因为控制器性能的约束,其扩展性会受到限制。当然也可以向Scale-out方向演变。例如较为典型的EMC VMAX存储产品和HP收购的3PAR存储产品。
EMC Symmetrix VMAX的虚拟矩阵(Virtual Matrix)架构,相当于8台双控的VNX(CLARiiON CX)以RapidIO互联
VMAX通过RapidIO连接8台VMAX引擎,每台引擎的硬件配置可能高度接近一台特定型号的VNX,但“软件”的不同则使得这两款产品千差万别。VNX使用的OS是FLARE,支持块、文件和对象协议的“统一存储”;而VMAX使用的OS则是Enginuity,支持SRDF远程复制。软件的作用巨大,但明显还是对硬件有着严重的依赖性。不管是VMAX还是3PAR,其实都没有脱离对特定硬件的依赖,比如VMAX各个引擎之间需要RapidIO进行互联,而3PAR则需要PCIe全网状背板进行互联。
软件定义存储的核心在于,用软件解决原先由硬件解决的(弹性)问题,让VNX达到与VMAX相当甚至更高的扩展能力,而不是让VNX运行VMAX的软件——变成一台单引擎的VMAX,这并不意味着规模的增加。而EMC所发布的ViPR,与其存储阵列所组成的解决方案则可称之为软件定义存储。通过将存储阵列的控制权上交给ViPR进行统一的管理和分配,在与商用硬件组合时,利用ScaleIO为商用硬件提供存储高级功能,以此补足ViPR只有控制平面缺乏数据平面的“不足”。
尽管EMC对ViPR有更多的改进和升级,但更多意义在于对其自家存储产品的整合。ViPR是首个被正式命名为“软件定义存储”的产品,从其发布到现在,也不过短短一年多时间,但在这一年多时间里,却涌现出了无数的符合“软件定义存储”的产品。比如目前风头正劲的Nutanix、SimpliVity和VMware最新推出的EVO:RAIL。
这类产品都是基于x86标准硬件而重新设计的“计算存储一体”产品。从软件定义的角度来看,它们都是由软件提供弹性。比如Nutanix集群通过以太网联接,集群中任意一个CVM故障,可由集群中其他任一物理主机上的CVM接管,这意味着Nutanix的扩展和CVM的高可用并不依赖于特定的物理硬件;存储资源池中的具体数据可根据需要迁移到离应用虚拟机最近的物理位置,这意味着其数据存储位置实现了与特定硬件的解耦。并且,源自MapReduce的分布式计算框架使得整个解决方案在理论上没有扩展上限。
虽然Nutanix出于商业考虑,用软硬一体机的形式进行销售,但其与Dell的合作则表明软件和硬件可以分开销售(Dell提供硬件,Nutanix提供软件)。VMware的EVO:RAIL实际上也是分开售卖,VMware将软件提供给合作伙伴(如超微、浪潮),再由合作伙伴提供硬件,并将软件与硬件捆绑销售。
这种人为捆绑销售的方式并不能作为评判其是否属于SDS产品的标准。譬如IBM之前收购的XIV存储产品,整个产品也是基于标准的x86架构,其弹性(可用性和可扩展性)都是以软件方式实现。尽管其软硬件都紧密捆绑销售,但这并不妨碍其自身具有的SDS特性。
从上述可以看出,存储行业本身的软件技术革新正推动着存储行业朝着软件定义存储的方向发展;而另一方面,硬件方面的技术更新也起着重要的推动作用,譬如闪存的普及。众所周知,未使用闪存的存储系统,其性能瓶颈大多在于磁盘本身。而即使是采用SATA/SAS接口的闪存,其性能几乎是磁盘的100倍以上。这就意味着存储系统的性能瓶颈由磁盘转移到了处理器之上。
并且,随着闪存及相关技术的进一步发展,其性能优势将越发明显,譬如目前已经趋于主流的PCIe SSD产品,将PCIe接口的闪存产品直接与处理器连接。或者目前由Intel公司主导推动的NVMe技术,以及相关的接口技术SFF-8639,其将更加充分地发挥出闪存的性能优势,这必将是闪存行业的必然趋势之一。
尽管闪存的优势巨大,但从目前来看,尽管闪存的容量提升迅猛,但其每GB成本还是远远高于磁盘。为了提高单位空间内的数据存储密度,采用软件的方式减少数据存储量也是趋势之一,譬如重复数据删除与数据压缩技术都能有效降低数据的存储容量需求。但这也会对计算能力提出更高的需求。
即使是采用基于磁盘的存储系统,随着数据存储量的增大,也必然将由硬件提供的弹性向着由软件代替硬件提供弹性的方向发展,意味着专用存储硬件必然被商用硬件所替代。这就注定了“软件定义存储”是存储行业发展的必然趋势,存储软硬件技术的革新共同推动其不断向前发展。