2011年8月21日,Netscape创始人马克·安德森(Marc Andreessen, 硅谷著名投资人, 投资了Facebook、Groupon、Skype、Twitter、Zynga和LinkedIn等高科技新秀),在华尔街日报上发表《软件正在吞噬整个世界》,认为当今的软件应用无所不在,并且正在吞噬整个世界: “越来越多的大型企业及行业将离不开软件,网络服务将无所不在,从电影、农业到国防。许多赢家将是硅谷式的创新科技公司,它们侵入并推翻了已经建立起来的行业结构。未来十年,我预计将有更多的行业被软件所瓦解”。安德森以亚马逊颠覆图书零售巨头Borders(已于2011年2月破产)、Netflix颠覆视频行业、苹果颠覆音乐行业、Skype颠覆电信行业、LinkedIn颠覆招聘、PayPal颠覆支付等为例,并指出基于互联网的服务,将让新创建全球性软件初创公司变得容易。
中国也是如此,包括BAT(百度阿里腾讯)、滴滴、快的、美团、大众点评等互联网公司在内的软件公司,深刻地影响了我们每一个人的生活,也已经或正在逐步地颠覆着教育、零售、通信、交通、医疗、政府等行业。
2013年10月Gartner发布2014年十大战略技术中,重要的组成部分就有:软件定义一切。Gartner认为:软件定义一切囊括了在基础设施可编程性标准提升下不断增长的市场势头、由云计算内在自动化驱动的数据中心互通性、DevOps和快速的基础设施提供等。软件定义一切还包括各种举措,如OpenStack、Open Flow、Open Compute Project和Open Rack,共享相同的愿景。开放性将成为供应商的目标,SDN(网络)、SDDC(数据中心)、SDS(存储)和SDI(基础架构)技术的供应商都力图成为所在领域的领导。
那么,什么是软件定义? 难道以前没有软件定义? 都是硬件定义吗?
我们先来看一下,什么是软件?
用户主要是通过软件与硬件进行交流。
最早的空调里面也有软件,但相对固化,不提供或者提供非常少的接口,缺乏灵活性。那时,我们只能选择温度,或者开关;后来出现了更多的选择,如风速、风向等的设定。到了智能家居的时代,通过向应用软件开放空调的编程接口,使得我们能在回家之前,就借助手机或者平板,开启并设置空调了。
软件定义,究其本质,就是将原来高度耦合的一体化硬件,通过标准化、抽象化(虚拟化),解耦成不同的部件。围绕这些部件,建立起虚拟化软件层,以API(应用编程接口)的方式,实现原来硬件才提供的功能。再由管理控制软件,自动地进行硬件资源的部署、优化和管理,提供高度的灵活性,为应用提供服务。
简而言之,就是更多地由软件来驱动并控制硬件资源。
需要注意的是,软件定义其实是一个过程,不是一蹴而就的目标,它分成不同阶段。软件定义逐渐将硬件与软件进行解耦,将硬件的可操控成分按需求,分阶段的,通过编程接口或者以服务的方式逐步暴露给应用,分阶段地满足应用对资源的不同程度、不同广度的灵活调用。
当我们讨论软件定义存储的时候,避免不了要先回顾一下软件定义这个词汇出现的历史。
在IT基础架构领域,最早出现的软件定义,是软件定义网络(Software Defined Network)。SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。通过将网络设备的控制平面与数据平面分离开来,并实现可编程化控制,实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。
随后,在2012年8月,VMware在其VMworld 2012大会上首次提出软件定义数据中心(Software Defined Data Center,简称SDDC)的概念。
VMware认为,软件定义的数据中心,是 IT 演变的下一个阶段,是迄今为止最有效、恢复能力最强和最经济高效的云计算基础架构方法。SDDC方法论将对存储、网络连接、安全和可用性应用抽象、池化和自动化,整个数据中心由软件自动控制。 基础架构提供的服务将聚合起来,并与基于策略的智能调配、自动化和监控功能结合在一起使用。应用编程接口和其他连接器支持无缝延展到私有云、混合云和公有云平台
总结一下,SDDC概念的核心包括:
作为VMware软件定义数据中心五大组成部分之一,软件定义存储(Software Defined Storage,简称SDS)的概念也在全球范围内,首次被提出。
VMware认为:软件定义的存储产品是一个将硬件抽象化的解决方案,它使你可以轻松地将所有资源池化并通过一个友好的用户界面(UI)或API来提供给消费者。一个软件定义的存储的解决方案使得你可以在不增加任何工作量的情况下进行纵向扩展(Scale-Up)或横向扩展(Scale-Out)。
实际上,SDS的定义出现至今已经三年多了,但仍没有统一的标准,VMware的定义也只是一家之言。各家权威咨询机构,各大厂商,都对这一概念有着不同的定义或描述。下面我们再来看看SNIA对SDS描述。SNIA是Storage Networking Industry Association的简称,也即全球网络存储工业协会,做为曾经制定过SAN,NAS,对象存储,云存储等标准的第三方协会,我们有理由相信,SNIA对SDS的看法比较权威。其内容也确实有助于大家更深刻地理解SDS。
SNIA在SDS的定义中提到,SDS允许异构的或者专有的平台。必须满足的是,这个平台能够提供部署和管理其虚拟存储空间的自助服务接口。除此之外,SDS应该包括:
SNIA认为,存储服务的接口需要允许数据拥有者(存储用户)同时表达,对于数据和所需服务水准的需求。数据的需求,就是SDS建立在数据路径(Data Path)的虚拟化,而控制路径(Control Path)也需要被抽象化成为存储服务。云、数据中心和存储系统,或者数据管理员能够被用于部署这个服务(指Control Path)。
在SNIA对SDS的看法中,贡献最大,也是最有价值的部分,应该是SNIA关于Data Path(数据路径)和Control Path(控制路径),以及手动传送数据请求和应用通过元数据来传送请求的的对比描述。它帮助大家清晰地了解了两者的的区别,并描绘了未来理想的SDS的蓝图,为如何发展SDS指明了方向。
SDS包括数据路径和控制路径。数据路径由以往的标准接口(块、文件和对象)组成。那么控制路径呢?在传统存储中,其实就是指存储管理员为数据提供部署数据的服务。在使用传统存储的大多数情况下,每一个数据服务有着各自的管理接口。变更数据服务,会导致所有存放在相应虚拟存储空间的数据都受到影响。
如图上所示,存储用户的控制路径是在带外,通过传统、人工的方式将数据请求传递给存储管理员,例如对于数据保护、可用性、性能、安全性的要求。存储管理员进入存储管理界面,按存储用户的请求分配存储资源。
这种情况是当前普遍存在的主流方式。其实是:存储管理员定义。
这种存储部署方式存在一个最大的问题,扩容或升级非常艰难。由于刚性架构限制系统资源只能静态分配,这就意味着后续新部署的资源难以归入原先存储体系。
如上图所示,理想的SDS,其传递数据请求的方式是:让应用通过元数据来请求相应的数据服务。如,空间部署,数据保护(快照、克隆),数据高可用(容灾、双活),性能,安全等。
理想的SDS实现了存储基础架构的自动化机制,极大地降低了人工管理运维成本,数据请求需直接传达至自动化软件。它能够直接应对请求,分配应用人员所需的存储资源,而无需人工干预。存储管理员可以从枯燥重复的建卷、映射卷等工作中,从疲于修补那些导致存储服务水准降低的突发故障中,脱身出来,转向更高级的任务,例如定义存储策略。
图4是SNIA关于理想的SDS的全局示意图,很好的概括了未来理想的SDS所涵盖的各个方面。
将来自服务器本地的闪存盘、机械盘,存储阵列,JBOD等存储资源,通过存储管理协议(如SMI-S等),进行特性描述和虚拟化,构建出存储资源池。
存储资源池化后,数据服务即可按照用户对存储服务级别(如金银铜)的要求提供。数据服务包含:空间部署、数据保护、数据可用性、性能、数据安全性。
存储资源的使用者,如软件开发人员通过数据管理接口(如CDMI),向SDS发起数据请求。由于SDS开放了丰富的API供调用,因此SDS能够满足用户的数据请求,按照服务级别,提供相应的存储资源。
除了VMware、SNIA之外,Gartner、IDC,以及EMC、IBM、HP、DELL等,都提出了各自对SDS的定义或阐述。虽然每家对SDS的定义都各有不同,但易于扩展(主要指在线横向扩展)、自动化、基于策略或者应用的驱动都几乎都成为大家定义中的必备特征。而这也是软件定义数据中心的重要特征,只有具备自动化的能力,才能实现敏捷交付,简单管理,节省部署和运维成本。自动化也成为各家SDS方案,是否愿意走向更高阶段的试金石。
软件定义存储的概念很大。我们所熟知的,存储虚拟化、Server SAN、超融合架构(HCI)都是SDS的一部分。
下面笔者不揣浅陋,尝试着对纷繁复杂的SDS进行分类,用来帮助大家对SDS进行深入理解。
在SDS Control Plane这一层,比较著名的有:
在SDS Data Plane这一层,比较复杂,组成部分较多。
其实,这一部分是最难分类的,种类繁多,命名还不容易。首先,笔者认为超融合架构(HCI)是Server SAN的一个子集。
另外想说明的是,Based on Commodity Hardware这个分类里,包括了IDC分类中Virtual Storage Appliance(简称VSA,存储控制器运行在虚机上)和Physical Storage Appliance两类,注意在这个分类里,后者并不包括传统的外置磁盘阵列。我们知道,控制平面与数据平面的分离之意义大于硬件与软件的分离。因此,部署方式的这两种不同,并没有带来本质的差异。举例来说,VSAN FS(VSAN File System)之于EVO:RAIL,NDFS(Nutanix Distributed File System)之于Nutanix一体机,差别仅在于是否与硬件捆绑,共同点在于都是基于商用的硬件,将分布式存储资源池化,且基于Hypervisor。所以,VSAN, EVO:RAIL, Nutanix都属于Server SAN的分类里,而且由于它们都不仅提供存储资源,还提供计算资源,所以还属于超融合架构这个子类里。
超融合架构里,比较著名的有: VMware VSAN或EVO:RAIL、EMC ScaleIO、Nutanix、Maxta、SimpliVity、Scale Computing、Pivot3;国内有:华为FusionStorage、志凌海纳SmartX、青云HCI、深信服HCI等;开源的有Open vStorage(类似Nutanix架构);
在Server SAN里,非超融合架构(也即不提供计算资源)的有DELL Fluid Cache、HP StorVirtual、RedHat Inktank Ceph、Microsoft Storage Spaces等,以及达沃时代、StorWind、大道运行SSAN等;还包括分布式文件系统,如GPFS、Lustre、Panasas等;
笔者认为Server SAN在它的原始定义里,应该是一个横向扩展的分布式存储,它至少需要支持3个以上节点。这样,对于那些仅支持两个控制器做为集群的存储,就不在Server SAN这个分类里了。不过,它们依然属于软件定义存储这个大的分类里。这类存储有:DataCore、Nexenta、国内的InfoCore(信核),还有其他支持Solaris ZFS的存储,如开源的FreeNAS、NAS4Free。
指的是传统的外置磁盘阵列,包括SAN存储或者NAS存储。例如:EMC VNX,NetApp FAS系列,HDS HUS, DELL SC系列和PS系列,HP 3PAR,IBM V系列和DS系列,华为OceanStor系列等。这些存储劲旅,不甘人后,也纷纷加入到SDS浪潮里,采取的方式有:
一是与Control Plane更多的API对接,例如,支持VMware SPBM之下的Virtual Volumes,再如,支持OpenStack Cinder等;
二是通过收购或自己研发,去逐步实现SDS抽象(解耦)、池化、自动化的阶段,典型的就有HP将LeftHand与原有硬件解耦,形成VSA版StorVirtual;NetApp推出Data ONTAP的VSA版ONTAP Edge VSA;IBM推出XIV的软件版Spectrum Accelerate;EMC推出VNX的虚拟化版本 vVNX等。另外,DELL的Fluid Cache脱胎于之前收购的内存虚拟化软件RNA,本身已经具备抽象池化的SDS基因。相信随着SDS的浪潮,会有越来越多的传统大牌存储厂商推出类似的方案。
它作为Data Plane的组成部分,实际上是以后端存储的身份为VM/App提供存储资源。
VM/App可以通过RESTful API等接口与对象存储进行数据的输入输出,目前有三种RESTful API:亚马逊S3、SNIA CDMI和OpenStack SWIFT。
从云存储来看,随着混合云的逐渐深入,用户自然会期待在自己的私有云和公有云之间,能够实现除了在VM/App级别,在存储级别,也能实现如同本地数据中心之间的同构存储之间的高级功能,例如备份、归档和容灾。此时,运行在公有云之上的VSA,也即虚拟存储控制器(其实与在Hypervisor之上的VSA相类似),即可与本地存储建立数据连接。
以NetApp的Cloud ONTAP为例。它是在AWS EC2的实例中运行Data ONTAP(FAS存储的操作系统)软件,充当虚拟存储控制器,对下接管AWS EBS作为自己的存储空间,对上给运行业务应用的EC2实例提供存储服务,包括块(iSCSI)和文件(NFS、CIFS)。
我们知道,把NetApp的FAS存储直接放到AWS或Microsoft Azure里去,是不太现实的。NetApp通过软件定义的方法,把存储控制器做成虚机,后端磁盘柜换成块存储服务(AWS EBS),为业务虚机提供专业的、高级的存储服务。
类似的还有SoftNAS,也是以虚机方式运行在AWS EC2实例上,可以为运行业务应用的EC2实例提供包括块(iSCSI)和文件(NFS、CIFS)的存储服务。
其实,谈到软件定义,无论SDN、SDS,都离不开控制平面Control Plane,数据平面Data Plane的提法。控制平面负责数据调度,实现自动化;而数据平面负责数据处理和数据优化,负责抽象和虚池化。
最近两年流行的概念 - Server SAN目前还只是围绕着数据平面做些工作,是当前阶段SDS的主要形态,离理想的SDS尚有一些距离。不过,我们也注意到,已经有一些Server SAN在控制平面做些工作了,例如尝试与VMware SPBM(主要指Virtual Volume),或者OpenStack Cinder对接。
可以肯定的是,在最近几年内,Server SAN仍然是充满着创业生机的沃土,与之相关的初创公司(包括HCI,也即超融合架构)会如同雨后春笋般冒出来。但是,需要注意的是,在数据中心三大基础架构中,存储相对于服务器和网络,是最难被替换的,因为它是数据的命脉。初创公司存储的安全性(数据不丢失)、稳定性是首要需要保证的。
人类各项发明、创新,大多都是为了更加的高效、方便、灵活,并且节省成本。例如,从种植业、畜牧业的出现,到蒸汽机的发明,到自来水、集中供电的出现,再到互联网的出现(信息传递更快更高效,更省成本),无一不是如此。IT也不例外,存储也不例外。
伴随着需求,还有两大背景:
一是,随着个性化、物联网、万联网的发展,数据以前所未有的速度迅猛增长;2014年4月,IDC发现数据的增长超过其在2012年的预期,预计2020年将达44ZB的数据量;因此,数据需要更高效,更省成本的方式存放。
二是,虚拟化、云计算和硬件技术的发展,使得软件定义成为可能;随着虚拟化和云计算的普及,用户的思维方式也发生了转变,逐渐意识到,快速、敏捷、灵活地获取计算资源已经成为可能,并且逐渐要求能按需使用,按需付费。因此,做为虚拟化和云计算里重要的组成部分,存储也应适应新的需求而不断完善,做到存储即服务,实现快速交付,动态调整。
下面我们就来剖析一下,是哪些技术的发展,使得SDS,尤其是SDS的重要组成部分Server SAN在未来5年内会成为主流?
二三十年前,CPU的处理能力较弱,内存较小,单块磁盘的性能和容量都较小。为了不抢占宝贵的CPU和内存资源,也为了提高数据的性能、可靠性(如RAID保护)、可用性(如快照,容灾,双活等)、扩展性,以及提供方便易用的集中管理,诞生了外置磁盘阵列(也叫集中存储),阵列本身自带智能控制器,能够组织管理数据,并提供快照、容灾等高级的软件功能。有些高端存储甚至能在一个单一阵列里提供1000乃至数千块盘,如EMC VMAX,HDS VSP和华为OceanStor等。
然而,近几年来,新的技术显著地改变了存储架构。包括:
例如,2014-04-30,SanDisk发布世界上第一款4TB SSD,并计划2015年发布8TB,2016年发布16TB SSD;2015年08月11日,三星在闪存峰会上公布世界容量最大的2.5英寸硬盘:16TB SSD PM1633a 。
可喜的是,除了国外Intel、Micron、Sandisk、SamSung、Seagate、Toshiba、HGST、Fusion-IO、Greenliant(绿芯)等SSD厂商之外,中国也涌现出不少SSD厂商,除了华为自研SSD之外,还有MemBlaze(忆恒创源)、Shannon(宝存,2015-04-24被Silicon Motion公司收购)、RunCore(源科)、苏州恒成芯兴等SSD厂商;
其实,前面提到的SDS分类其实已经涉及到了大部分内容。
目前,存储市场上更多的是做数据平面的。做控制平面的SDS厂商,尤其是初创厂商,是需要巨大的勇气和魄力,因为复杂度高,而且在短时间内很难看到回报。
这些做数据平面的厂商,绝大部分还在抽象、池化这两个阶段。
抽象做的是软硬件解耦。池化做的是存储虚拟化。
池化包括存储虚拟化和存储标准化,而存储虚拟化指所有存储资源的虚拟化,包括:
抽象是第一步,没有解耦,寸步难行;第二步,池化,这样才能灵活分配存储资源;
第三步是自动化,存储资源由软件(Hypervisor,云管理)来自动分配和管理。目前观察到的,自动化其实是根据不同的工作负载来动态分配或管理存储资源。那么,谁来判断工作负载的特点?最好是Hypervisor/OS,或者云管理软件,它们具有优势。所以,存储通过和Hypervisor、云管理软件对接,是一个比较现实可行的方法