当我们讨论软件定义存储的时候,首先要回顾一下软件定义这个词汇在IT领域出现的历史。
在IT领域,最早出现的软件定义,是软件定义网络(Software Defined Network,SDN)。SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。他将网络设备的 控制平面与数据平面分离开来 ,并通过可编程化控制,实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。
在2012年8月,VMware在其举办的VMworld 2012大会上首次提出软件定义的数据中心(Software Defined Data Center,SDDC)的概念。其结构图如图1-1所示。
图1-1 VMware SDDC(软件定义的数据中心)结构图
VMware认为,软件定义的数据中心,是IT演变的下一个阶段,是迄今为止最有效、恢复能力最强和最经济高效的云计算基础架构方法。 SDDC方法论将对存储、网络连接、安全和可用性应用抽象、池化和自动化,整个数据中心由软件自动控制 。基础架构提供的服务将聚合起来,并与基于策略的智能调配、自动化和监控功能结合在一起使用。应用编程接口和其他连接器支持无缝延展到私有云、混合云和公有云平台。
总结一下,SDDC概念的核心包括:①软件定义的数据中心由软件自动控制;②软件定义包括三个阶段:抽象、池化和自动化;③软件定义的数据中心包括五大组成部分:计算、存储、网络、管理和安全。
作为VMware软件定义数据中心五大组成部分之一,软件定义存储(Software Defined Storage,SDS)的概念也在VMworld 2012大会上,首次在全球范围内被提出。
VMware认为: 软件定义的存储是将工业标准服务器的存储提供出来并通过软件控制层面实现存储的自动化和池化 。它将存储的置备和管理的方法简化到了极致,并利用工业标准服务器的存储大大降低了成本。
而软件定义的存储产品是一个将硬件抽象化的解决方案,它使你可以轻松地将所有资源池化并通过一个友好的用户界面(UI)或API来提供给消费者。一个软件定义的存储的解决方案使得你可以在不增加任何工作量的情况下进行纵向扩展(Scale Up)或横向扩展(Scale Out)。
VMware的软件定义存储主要分为两大部分,如图1-2所示。
1)控制平面,即Storage Policy Based Management(基于存储策略的管理),简称SPBM。
2)数据平面,即Virtual Data Services。分别由三个子类构成:Virtual SAN,Virtual Volumes和Cloud Object Storage。
图1-2 VMware软件定义存储结构图
实际上,SDS的定义出现至今已经3年多了,但仍没有统一的标准,VMware的定义也只是一家之言。各家权威咨询机构和各大厂商都对这一SDS的定义有着不同的解读或阐述。
2013年5月7日,在EMC World 2013大会上,EMC发布了最新的软件定义存储平台ViPR。EMC ViPR是存储虚拟化软件平台,它将物理阵列中的存储(无论是基于文件、块还是对象)抽象为虚拟共享存储资源池,并将存储划分为多个虚拟存储阵列,以存储服务目录的方式向上层操作系统或应用提供存储空间。比较独特的是,ViPR保留了底层阵列的功能。
2013年7月11日,EMC收购以色列存储初创企业ScaleIO。ScaleIO是一种分布式存储(将数据分散存储在多台独立的设备上的存储)软件,能够将服务器内的硬盘或闪存池化,并把它作为可扩展的块存储来使用。2015年5月5日,EMC宣布推出开源版本EMC ViPR控制器Project CoprHD(copperhead),同时宣布,可“无限制地”免费下载EMC ScaleIO软件用于非生产环境。
下面我们来看看EMC对SDS的定义。EMC高级存储业务总裁Amitabh Srivastava在2013年5月6日的官方博客撰写到:当我们定义SDS的时候,我们需要以整体的观点来审视存储。
SDS能够横跨所有厂商的阵列,横跨所有的商用硬件,为达到软件定义数据中心的需求,提供完整的方案。SDS将存储管理服务(控制平面)从存储架构(数据平面)里剥离出来,但仍然保留并扩展每个阵列的独特价值、特性和智能。这种方法,为企业提供了选择和灵活性,因此在今天,它们可以在满足必需的速度和敏捷性的情况下,成功地运行其业务。
Amitabh认为SDS必须包含如下特征:
1.简单:策略驱动的自动化
SDS从异构磁盘阵列(商业硬件和多家提供商)系列中创建一个简单的存储池,允许存储管理员通过策略创建虚拟存储。一个虚拟存储能过横跨多个物理阵列,甚至比底层的物理阵列功能更为强大,因为虚拟存储能够添加更多新的软件特性。一旦阵列集成到虚拟存储池里,存储管理员能够在虚拟层,根据自动化的策略来管理物理阵列。存储管理员定义了不同种类的虚拟存储池,以满足适合特定工作负载所需的存储的性能或功能。有了SDS,存储管理员可以向用户提供快捷的、自助的存储服务。这帮助用户能快速地访问存储资源,而不是等待几天甚至几周的时间。而且,它还帮助用户节省了管理时间,从而将更多精力专注在业务应用上。
2.易于扩展:容易增加新的存储特性
为多个存储阵列增加新的存储特性(例如某种数据服务)是一件烦琐的、耗资巨大的过程,如同阵列提供商为其阵列增加新功能一样。然而,SDS提供了一个平台,新的数据服务只需创建一次,就可以被所有它管理的存储使用到。SDS还通过一致的API提供资源的访问,这些API用于新的数据服务的开发。
3.开放平台:社区共建
SDS被设计为开放平台,可以轻松地增加对新阵列的数据服务,或者为软件基础架构增加新的特性。因此,所有的管理功能都开放了API,使SDS能够与各种上层管理软件,如VMware、OpenStack、Microsoft等相结合。与之类似地,SDS通过开放API,使得任何存储都能够被阵列厂商或者第三方厂商加入到SDS平台里,而且提供API可以使得任何数据服务能够被任何人轻松地内嵌在软件里。
图1-3所示为EMC ViPR的体系结构图。
图1-3 EMC ViPR的体系结构
ViPR是控制平面,能够管理EMC所有存储,包括VMAX、VNX、Isilon、VPLEX、Atmos、Centera和XtremIO;以及部分第三方存储,如HDS、NetApp、HP、IBM、Dell、LeftHand、Oracle、SolidFire。而图中右下角的商用硬件,可以视为EMC ScaleIO。
本书中将设专门的章节详细介绍EMC ViPR和ScaleIO,在此不再赘述。
2013年,时任IBM存储全球副总裁的Jeff Barber解释了IBM软件定义存储的三步走战略(图1-4):
图1-4 IBM SDS的三步走战略
第一步,“软件定义存储”1.0时代,虚拟化和优化;
第二步,“软件定义存储”2.0时代,开放、可延伸性及具行业导向;
第三步,“软件定义存储”3.0时代,开放、分析及应用驱动。
而第三步,IBM期望达到的是,通过基础架构的分析、运营的分析及业务的分析,实现由应用驱动的软件定义存储,也即分析驱动的数据管理(图1-5)。
图1-5 IBM SDS的第三步:应用驱动
2015年2月底,IBM软件定义存储产品系列,也即光谱存储(Spectrum Storage)正式发布。其中,Spectrum Virtualize即SVC,Spectrum Accelerate即XIV,Spectrum Scale就是GPFS,更多详情如表1-1所示。
表1-1 IBM Spectrum Storage系列及其对应的原有产品
来源:Enterprise Strategy Group from IBM materials,2015年
2015年4月,IBM与ESG联合发布的白皮书《IBM在软件定义存储领域的能力与创造性》提到:“实际上,SDS大概就不应拥有公认的定义。将其简单视为一种围绕将存储功能再定位至软件的概念,而非将存储智能当作硬件的一项功能更合理。根据ESG的研究,IT专业人员似乎发觉,如果停止聚焦于‘什么是SDS’,转而考虑具体‘SDS能做什么’以帮助改进现实世界的IT运营,反而更能凸显SDS的价值。SDS的优势——包括弹性以及可能将期望存储功能动态映射到特定工作量中——这些通常都高居决策制定者的愿望清单榜首,他们需要确定将来如何对其存储基础架构进行管理。”
2015年5月,IBM官方网页上对SDS有如下描述:
软件定义存储是一种使用标准的硬件的企业级存储,同时拥有所有重要的存储功能和管理功能,在内执行着智能的软件。它通过对底层存储基础架构的编排,交付了自动、策略驱动、应用感知等存储服务。
似乎华为并没有直接阐述软件定义存储的定义。不过,其产品线里最接近本书所要讨论的SDS产品主要有以下几种。
1.FusionStorage
这个分布式存储软件大约在2013年上市,比VMware VSAN上市还要早,它的架构与EMC ScaleIO比较类似。FusionStorage早期是为融合基础设施FusionCube打造的分布式存储软件产品,适合计算和存储融合的系统,它在FusionCube的整体架构中所处的位置如图1-6所示。
图1-6 华为FusionStorage作为FusionCube的一部分
2.OceanStor DJ
2015年9月华为云计算大会上,华为存储部门高调发布OceanStor DJ。其实这早在2014年12月的中国存储峰会上,华为就公布过。OceanStor DJ是一个基于OpenStack的轻量级的编排系统,它可以把各种存储功能抽象出来,变成一种服务交付给客户,如图1-7所示。
图1-7 华为OceanStor DJ
需要注意的是,如果底层硬件设备不具备相关功能,OceanStor DJ的功能抽取是无法实现的,像快照、复制,以及数据完整性、可靠性等相关功能还是要依靠存储设备来保证。OceanStor DJ是在存储控制和管理层面的创新,并不涉及数据层面,它不能直接创造新的存储。由此可见,OceanStor DJ主要实现的是存储管理和底层存储功能调用的功能。
华为把OceanStor DJ视为SDS Controller。华为还提出了与本书SDS所涵盖的子集非常类似的概念:存储功能虚拟化,也即Storage Functions Virtualization,简称SFV。SFV对应的,其实是本书SDS所涵盖的子集,也即指数据平面(Data Plane)部分,主要指存储虚拟化。
华为认为,分布式的云数据中心是企业业务和数据资产的核心载体,最好的选择是以统一的物理基础设施来实现规模经济效益,同时通过端到端的虚拟化来满足特定行业的个性化需求。端到端虚拟化,指的是计算、存储、网络都实现虚拟化,其关键在于软件定义。
计算是最先实现虚拟化的。网络则紧随其后,通过网络功能虚拟化(NFV)和软件定义网络(SDN)实现了网络功能的虚拟化和敏捷的业务发放。存储的发展相对滞后。目前存储还处于从专用硬件向通用硬件的转型期,并通过业务驱动的存储控制器(SDS controller)实现敏捷的存储业务发放。然而,存储并没有类似NFV这样的机制,去完成敏捷的存储设备的实例化部署。也就是说,当客户需要不同的存储功能时,必须使用手动的方式去把专用硬件或者通用硬件部署起来。这样的话,就极大地影响了业务发放的灵活性和效率。
为此,华为提出存储功能虚拟化(SFV),就是要在存储领域实现类似网络功能虚拟化(NFV)的功能,使得不同的存储功能也能按需部署、共享硬件资源,实现业务的快速灵活发放。图1-8即华为在未来5年的SDS发展的路线图。
图1-8 华为在未来5年的SDS发展的路线图
华为提出存储功能虚拟化(SFV)包含以下内容。
1.软硬件解耦
随着通用CPU、虚拟机性能的提升以及软件架构的变化,原来承载在专用硬件上的应用现在可以运行在通用硬件甚至虚拟机里。云计算的理念已经深入人心,敏捷的业务发放、软硬件解耦等也成为客户的重要诉求。容器或虚拟机的性能以及安全隔离性是关键技术点。
2.存储基础与高级功能解耦
存储基本功能,即物理存储设备的池化功能,预先部署在各个服务器的虚拟机或容器中,作为一个基础服务对外提供。
存储高级功能,包括文件/对象/块等接口层,复制、备份、重删等特性,也包括Oracle、NoSQL、Hadoop等存储强相关的应用。
基础功能模块与高级功能模块可以独立加载与升级,相互隔离,按需部署。
3.按需部署
目前的存储设备都是按照过量配置的方式部署的,容量和性能都极大地超过了实际需求,原因就是部署和扩容周期长,也无法按照存储的实际使用情况减少资源。
然而通过SFV机制,用户可以快速创建存储资源,在几分钟内就可以投入使用。同时,可以实现灵活地扩容和缩容,也就是存储应用的auto scaling能力。
SDS将源于物理或虚拟设备或存储服务的存储能力抽象出来,提供敏捷性和交付QoS的同时,还可以优化成本。存储服务通过分为控制平面(管理和策略实施)和数据平面(基础架构和数据传输)的软件层,凭借互操作的、可编程的接口进行编排,来满足预先定义好的策略或者SLA。它与数据存放的位置无关。
SDS请求会将存储能力转化成存储服务,以满足预先定义好的策略或SLA。
存储虚拟化将存储资源抽象出来,这是SDS的基础。基于策略的自动化和编排,可能会被应用或者Hypervisor触发和管理,这对于SDS非常关键。
SDS的目标是,提供比传统实施方式更多的业务价值,凭借存储与应用更紧密的联系、敏捷性的提高、成本的优化以及被策略管理驱动的高级功能,自动化和存储管理得到简化,极大地减少了人工管理的工作量。
在Gartner的观点里,SDS绝不仅仅是在商用硬件上交付存储软件,也绝不只是将已有的存储功能重新包装(例如VSA技术)。更重要的是,策略管理扩展了整个数据服务提供商的潜在生态圈,能够随同存储硬件降低成本。其实,SDS是一个随着成熟度曲线不断进化的概念(图1-9)。
图1-9 Gartner 2015年7月发布的存储技术成熟度曲线
2014年11月,IDC谈到了对SDS的定义:
SDS是能安装在任何标准产品(如X86硬件、Hypervisor或云)的软件堆栈和买来即用的计算硬件,能够用于提供全套的存储服务和整合,以及底层存储资源之间的数据流动。
SDS的主要特征如下:
1)运行在标准硬件之上,不需要特殊的硬件或组件。
2)提供全套的存储服务,与传统存储系统一样的服务。
3)整合多种存储资源,如内部磁盘、云、其他外置存储系统或者云/对象存储平台。
4)利用非共享架构(有时可能会采用部分共享或全共享架构),纵向扩展或横向扩展。
5)广泛地分为基于文件、基于对象和基于块的存储。
图1-10是IDC 2014年对SDS的分类。
图1-10 IDC 2014年对SDS的分类
可以看出IDC将SDS分为两大部分:Data Plane(数据平面)和Control Plane(控制平面)。交付模式包括纯软件、物理存储设备、虚拟存储设备(VSA)、基于云和超融合等各种形态。
SNIA是Storage Networking Industry Association(全球网络存储工业协会)的缩写,作为一家非营利的行业组织,SNIA拥有420多家来自世界各地的公司成员以及7100多位个人成员,遍及整个存储行业。SNIA曾先后定义了DAS、SAN、NAS、对象存储及云存储等标准。所以,SNIA对SDS的看法非常有参考价值。
SNIA认为,SDS是带有服务管理接口的虚拟化存储。SDS包括具有数据服务特性的存储池,这些服务特性可以通过服务管理接口去实现,以满足需求。
SDS需要满足的是: 提供自助的服务接口 ,用于分配和管理虚拟存储空间。
SDS应该包括如下功能。
1)自动化:简化管理,降低存储基础架构的维护成本。
2)标准接口:API(应用编程接口),用于管理、部署和维护存储设备与服务。
3)虚拟化数据路径:块级、文件级和对象级接口,这些接口支持应用写入。
4)扩展性:无须中断业务,即可无缝扩展存储基础架构,达到预期的可用性或性能。
5)透明性:存储用户对存储消耗、可用资源以及成本进行监控和管理。
传统存储部署中,存储管理员需要为数据所在的虚拟设备部署数据服务,多数情况下,每一个数据服务需配备属于自己所有的管理接口。改变这些数据服务将影响所有存放在虚拟设备的数据。数据请求的通信通常在任何存储接口之外,以带外的方式传输,一般是直接传输给存储管理员,如图1-11所示:
图1-11 SNIA SDS观点:传统方式——手动传送数据需求
如图1-11所示,该存储并不是“软件定义”,而是“存储管理员”定义和部署。这种方式的问题是,请求存储的过程非常麻烦,而且耗时。因此存储空间的消费者倾向于在一开始时申请过量的存储空间,以防将来麻烦存储管理员。这通常意味着存储空间一旦部署,超额的部分不再返还给存储管理员。这种传统存储部署方式会导致较高的存储TCO(总体拥有成本)。
为了将自动化引入存储基础架构,降低人工管理的成本,需要有一种方法,将数据请求直接传输给自动化软件。这些请求的粒度至少需在当前常见的独立虚拟化存储设备级别。为了达到未来的自动化,每个数据对象需独立传达自己的请求,独立于其所在的虚拟存储设备。数据对象应被分组和抽象,使得用户能够理解他们的选择。否则,用户必须是存储专家。
为将请求传输至存储系统,应用或用户需将请求标记至每个文件或对象。采用元数据,或数据的“数据”的方式,是非常完美的机制。将元数据(记录了请求)标记在数据对象上,存储系统能够定位这些含有数据服务的请求信息。如图1-12所示。
图1-12 SNIA SDS观点:理想方式——通过元数据传送数据需求
如图1-12所示,理想的SDS,其传递数据请求的方式是:让应用通过元数据来请求相应的数据服务。如空间部署、数据保护(快照、克隆)、数据高可用(容灾、双活)、性能、安全等。
理想的SDS实现了存储基础架构的自动化,极大地降低了人工管理运维成本,数据请求需直接传达至自动化软件。它能够直接应对请求,分配应用人员所需的存储资源,而无须人工干预。存储管理员可以从枯燥重复的建卷、映射卷等工作中,从疲于修补那些导致存储服务水准降低的突发故障中,脱身出来,转向更高级的任务,例如定义存储策略。
图1-13是SNIA关于理想的SDS的全局示意图,很好地概括了未来理想的SDS所涵盖的各个方面。
1.存储管理
将来自服务器本地的闪存盘、机械盘、存储阵列、JBOD等存储资源,通过存储管理协议(如SMI-S等),进行特性描述和虚拟化,构建出存储资源池。
2.数据服务
存储资源池化后,即可按照用户对存储服务级别(如金银铜)的要求提供数据服务。数据服务包含空间部署、数据保护、数据可用性、性能、数据安全性等。
3.数据请求
存储资源的使用者,如软件开发人员通过数据管理接口(如CDMI),向SDS发起数据请求。由于SDS开放了丰富的API供调用,因此SDS能够满足用户的数据请求,按照服务级别,提供相应的存储资源。
图1-13 SNIA SDS观点:全局示意图
综上所述,我们可以看到,无论谁眼里的SDS,都具有如下共同点:抽象、解耦、标准化;虚拟化、池化;策略驱动、应用驱动、自动化;可扩展;等等。为了方便理解,我们的综述如表1-2所示。
表1-2 软件定义存储(SDS)综述
SDS与SDDC类似,包括三个阶段:第一步是抽象,也即解耦,因为如果硬件被锁定,存储资源则无法被灵活调用;第二步是池化,也即虚拟化,这样才能随需分配,动态扩展;第三步是自动化,存储资源由软件(Hypervisor或云管理软件)来自动分配和管理。
软件定义的存储(SDS)是一个不断进化的概念,在现阶段看来,是指存储资源由软件自动控制,通过抽象、池化和自动化,将标准服务器内置存储、直连存储、外置存储或云存储等存储资源整合起来,实现应用感知,或者基于策略驱动的部署、变更和管理,最终达到存储即服务的目标。
软件定义存储包含两个部分,一部分是控制平面,基于策略或者基于应用的存储资源分配、变更和管理;另一部分是数据平面,负责数据的存放、处理和优化。