【序言】

文章是一个系列,分成:Why, What, How,也就是

为何出现软件定义存储?

什么是软件定义存储?

软件定义存储应该怎样发展?

……


如果您感兴趣的话,可以通过关注“乐生活与爱IT” 微信公众号或者"百度百家”,获得以前或者后续的文章。也欢迎通过这个平台,提供建议、意见或补充。

欢迎扫描微信公众号:“乐生活与爱IT”

【PY原创】SDS 之二:什么是软件定义存储?_ide


最近两、三年,在IT圈里,除了云计算、大数据、人工智能之外,最火的就属“软件定义”了,先是有软件定义网络 (SDN, Software Defined Networking),继而有软件定义数据中心(SDDC, Software Defined Data Center)和软件定义存储(SDS, Software Defined Storage)。后来还陆续出现了软件定义基础架构 (SDI, Software Defined Infrastructure),软件定义一切(Software Defined Everything, 或者Software Defined Anything,有些简称SDX)。


那么,到底什么是软件定义呢?软件是相对于硬件而言,在出现这个词汇之前,我们购买的IT或智能设备,又是什么定义的呢?里面没有软件吗?

当然,里面也有软件,但相对固化,不提供或者提供非常少的接口,缺乏灵活性。以空调为例,很早以前的空调,通过遥控器,我们只能选择温度,或者开关;后来出现了更多的选择,如风速、风向等的设定。到了智能家居的时代,通过向应用软件开放空调的编程接口,智能家居服务商帮助我们达到,能在回家之前,就借助手机或者平板,开启并设置空调了。


【PY原创】SDS 之二:什么是软件定义存储?_数据_02



我们知道软件是用户与硬件之间的接口界面。用户主要是通过软件与硬件进行交流。早期为了大规模制造,降低制造的复杂度和成本。许多功能都固化在硬件里,我们可以称之为硬件定义。随着人民日益增长的多样化、个性化定制的需求,以及更加智能、更加灵活所需的自动化的需求,软件定义的需求将越来越多、越来越广。

软件定义其实是一个过程,不是一蹴而就的目标,它分成不同阶段。软件定义就是要将特定的硬件与软件进行解耦,将硬件的可操控成分按需求,分阶段的,通过编程接口或者以服务的方式逐步暴露给前端应用,分阶段地满足应用对资源的不同程度、不同方面的灵活调用。


那么,什么是软件定义存储呢?

在IT基础架构领域的软件定义,最早出现的是:软件定义网络(SDN)。SDN起源于2006年斯坦福大学的Clean Slate研究课题。2009年,Mckeown教授正式提出了SDN概念。通过将网络设备的控制平面与数据平面分离开来,并实现可编程化控制,实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。

2012年,VMware在其VMworld大会上首次提出软件定义数据中心(SDDC)的概念。作为VMware软件定义数据中心五大组成部分(计算、存储、网络、管理和安全)之一,软件定义存储(SDS)的概念也首次被提出。

EMC公司在当年的EMC World发布大会上也发布了SDS战略,引发了业界对SDS的大讨论,SDS迅速成为存储业界的研究热点。


不过,时至今日,SDS的定义并没有统一的标准,各家权威咨询机构,各大厂商等,都对这一概念有着不同的解释或描述。下面我们列出主要的机构和厂商对SDS的描述,看看有何共性和差异。


一、IDC

  IDC通过对SDS市场的深入了解和研究,对SDS定义如下:SDS将数据中心或者跨数据中心的各种存储资源抽象化、池化,以服务的形式提供给应用,满足应用按需(如容量、性能、QoS、SLA等)自动化使用存储的需求。


二、Gartner

Gartner副总裁Neil MacDonald在其位于Gartner网站的博客上撰写道:

SDS必备的四个基本特征是:

Abstraction (抽象化)– the decoupling of a resource from the consumer of the resource (also commonly referred to as virtualization when talking about compute resources). This is a powerful foundation as the virtualization of these resources should enable us to define ‘models’ of infrastructure elements that can be managed without requiring management of every element individually.

Instrumentation – opening up of the decoupled infrastructure elements with programmatic interfaces (typically XML-based RESTful APIs).

Automation (自动化) – using these APIs, wiring up the exposed elements using scripts and other automation tools to remove “human middleware” from the equation. This is an area where traditional information security tools are woefully inadequate.

Orchestration (编排)– beyond script-based automation, automating the provisioning of data center infrastructure through linkages to policy-driven orchestration systems where the provisioning of compute, networking, storage, security and so on is driven by business policies such as SLAs, compliance, cost and availability. This is where infrastructure meets the business.

Software defined anything


另外,2013年10月Gartner发布2014年十大战略技术中,重要的组成部分就有:软件定义一切。Gartner认为:软件定义一切囊括了在基础设施可编程性标准提升下不断增长的市场势头、由云计算内在自动化驱动的数据中心互通性、DevOps和快速的基础设施提供等。软件定义一切还包括各种举措,如OpenStack、OpenFlow、Open Compute Project和Open Rack,共享相同的愿景。开放性将成为供应商的目标,SDN(网络)、SDDC(数据中心)、SDS(存储)和SDI(基础架构)技术的供应商都力图成为所在领域的领导,但在恪守开放性和标准方面却可能各有各的打算。


三、VMware

VMware做为SDS概念的创造者,对SDS定义如下:

软件定义的存储产品是一个将硬件抽象化的解决方案,它使你可以轻松地将所有资源池化并通过一个友好的用户界面(UI)或API来提供给消费者。一个软件定义的存储的解决方案使得你可以在不增加任何工作量的情况下进行纵向扩展(Scale-Up)或横向扩展(Scale-Out)。

软件定义存储是VMware软件定义数据中心的五大组成部分之一。VMware认为,软件定义的数据中心,是 IT 演变的下一个阶段,是迄今为止最有效、恢复能力最强和最经济高效的云计算基础架构方法。SDDC方法论将对存储、网络连接、安全和可用性应用池化、抽象化和自动化,整个数据中心由软件自动控制。 基础架构提供的服务将聚合起来,并与基于策略的智能调配、自动化和监控功能结合在一起使用。 应用编程接口和其他连接器支持无缝延展到私有云、混合云和公有云平台。


【PY原创】SDS 之二:什么是软件定义存储?_数据_03


四、EMC

2015年5月7日,在EMC World 2015大会上,传来软件定义存储界最具爆炸性的消息:EMC将ViPR控制器软件开源。也正是在两年前的5月7日,也即EMC World 2013大会上,EMC发布了最新的软件定义存储平台ViPR。下图能够一窥全貌:


【PY原创】SDS 之二:什么是软件定义存储?_数据中心_04


下面我们来看下,EMC对SDS的定义。

EMC高级存储业务总裁Amitabh Srivastava在2013年5月6日的官方博客撰写到:

When “defining” SDS, we need to take a holistic view of storage – across all vendor arrays and across all commodity hardware – to provide a complete solution that meets the requirements of the Software-Defined Data Center. SDS separates the storage management services (or control plane) from the storage infrastructure (or data plane) while still retaining and extending the unique value, characteristics, and intelligence of each vendor array(s). This approach provides choice and flexibility to enterprises – so they can run their business with the necessary speed and agility required to be successful in today’s world.


当我们定义SDS的时候,我们需要以全局的观点来审视存储:

SDS能够跨越所有厂商的阵列,跨越所有的商品服务器,为达到软件定义数据中心的需求,提供完整的方案。SDS将存储管理服务(控制平面)从存储架构(数据平面)里剥离出来,但仍然保持并扩展每个阵列的独特价值、特点和智能。这种方法,为企业提供了选择和灵活性,因此在今天,他们可以成功地运行其业务,并满足必须的速度和敏捷性。


Amitabh认为SDS必须包含如下特征:

1) Simple: Policy-driven Automation – 简单:策略驱动的自动化

SDS creates a single pool of storage from a heterogeneous set of storage arrays (commodity hardware and multi-vendor) and allows storage administrators to construct virtual storage arrays via policy. A virtual storage array can span multiple physical arrays and may be more powerful than the underlying physical arrays as new software capabilities can be added to the virtual array. Once storage is extracted into a pool of virtual storage arrays, storage administrators can then manage at the virtual layer according to automated policies. Storage administrators define various Virtual Storage Pools that represent storage performance characteristics and capabilities suited for particular workloads. With SDS, storage administrators can also provide users with instant, self-service access to storage. This gives users immediate access to storage instead of waiting days (or even weeks). It also frees up the administrators time to focus on the business.


2) Extensible: Adding new array capabilities in software – 易于扩展:容易增加新的存储服务

Adding new capabilities (i.e., a data service such as object on file) to each multi-vendor storage array is a time consuming, tedious and costly process (as only the array vendor can add new capabilities to their array). Instead, SDS provides a platform on which new data service capabilities can be built once and used by all arrays under its management. SDS also provides access to resources through a uniform set of APIs that can be used for the development of new data services.


3) Open Environment: Building a Community – 开放平台:社区共建

SDS is designed as an open platform where it is easy to add support for new arrays or add new capabilities to the storage infrastructure through data services built in software. Therefore, all management functions are exposed through APIs enabling SDS to integrate with any management stack, VMware, OpenStack, Microsoft, etc. Similarly, SDS exposes APIs so any storage array can be added to SDS by its vendor or 3rd party, and also provides APIs so any data service can easily build in software by anyone.


下图表现了EMC的ViPR在策略驱动的自动化方面,有了较深入的研究和尝试:


【PY原创】SDS 之二:什么是软件定义存储?_数据_05

五、IBM

2015年2月底,IBM软件定义存储产品系列-光谱存储(Spectrum Storage)正式发布。IBM把XIV打造成像Spectrum Accelerate一样的软件定义存储。同时,它还将大型机里面的GPFS(通用并行文件系统)更名为Spectrum Scale。我们看下,在此之前,IBM眼里的SDS应该是怎样的?

• SDS is enterprise class storage that uses standard hardware(标准硬件) with all the important storage and management functions performed in intelligent software.

• SDS delivers automated (自动化), policy-driven (策略驱动), application-aware(应用感知) storage services through orchestration of the underlining storage infrastructure in support of an overall software defined environment.

与EMC ViPR类似,IBM SDS也分成控制平面与数据平面。如下图所示:


【PY原创】SDS 之二:什么是软件定义存储?_ide_06


后来,IBM将软件定义存储分为三步走战略:

第一步,“软件定义存储”1.0时代---指虚拟化和优化;

第二步为“软件定义存储”2.0时代--可延伸性及具行业导向;

第三步为“软件定义存储”3.0时代---分析及应用驱动。

如下图所示:


【PY原创】SDS 之二:什么是软件定义存储?_数据_07


六、SNIA (全球网络存储工业协会)

实际上,最权威的SDS的定义莫过于SNIA对SDS的定义了,作为一家非盈利的行业组织,SNIA拥有420多家来自世界各地的公司成员以及7,100多位个人成员,遍及整个存储行业。SNIA曾先后定义了DAS, SAN, NAS, 对象存储及云存储等标准。

SNIA认为,SDS需要满足的是:提供自助的服务接口,用于分配和管理虚拟存储空间;

SDS应该包括如下功能:

•自动化 Automation– Simplified management that reduces the cost of maintaining the storage infrastructure.

• 标准接口 Standard Interfaces – APIs for the management, provisioning and maintenance of storage devices and services.

• 虚拟数据路径 Virtualized Data Path – Block, File and Object interfaces that support applications written to these interfaces.

• 扩展性 Scalability – Seamless ability to scale the storage infrastructure without disruption to availability or performance.

• 透明性Transparency – The ability for storage consumers to monitor and manage their own storage consumption against available resources and costs.


下面引用天玑数据 – “小编爱翻译”的《SNIA软件定义存储白皮书2015汉化先行版》部分内容来对比一下传统存储与软件定义存储的区别,这将有助于更好的理解SNIA对SDS的看法。该汉化版的全文可参考Dostor网站 http://www.dostor.com/article/043037204.html 。也可通过关注天玑数据的微信公众号 PHEGDA查看往期历史文章。


传统存储部署往往离不开存储管理员亲自创建各种虚拟存储设备(块存储逻辑单元,文件系统共享,对象容器)供应用使用。

在后台,存储管理员还得为这些虚拟设备部署数据服务。通常情况下,单独数据服务需配备属于它的单独管理接口。一旦数据部署发生变更,存储在虚拟设备上的所有数据均会受到影响。数据请求通信经常发生其它存储接口带外传输。



下图是传统人工传达数据的请求方式


【PY原创】SDS 之二:什么是软件定义存储?_数据_08


如上图所示,该存储并不太“软件定义”,反而“存储管理员定义”更贴切。这种存储部署方式存在一个最大的问题,扩容艰难。由于刚性架构限制系统资源只能静态分配,这就意味着后续新部署的资源无法归入原先存储体系。该传统存储部署方式会导致较高的存储TCO(总体拥有成本)。


为实现存储基础架构的自动化机制,降低人工管理运维成本,数据请求需直接传达至自动化软件,且数据请求的粒度至少需在当前常见的个体虚拟化存储设备级别。随着后续自动化机制的进一步发展,每个数据对象需独立传达自我请求,不再依赖虚拟存储设备。数据对象经由分组和抽象后,可向 “用户”直接传达其选择,“用户”不必再是存储专家了。

为将请求传达至存储系统,应用或用户需将请求信息标记至每个文件或对象,而元数据,或称作关于数据的“数据”,正好符合这一需求。采用记录请求信息的元数据来标记数据对象,存储系统可轻易定位获取请求信息。如图所示:



下图是利用元数据传达数据的请求方式


【PY原创】SDS 之二:什么是软件定义存储?_ide_09


存储请求信息有时仍存在数据路径带外传输,但自动化机制终将消除这一现象。有了软件定义存储,存储管理员可转向定制策略这类更高阶的工作,不再将时间精力囿于即时突发问题的处理上,而降格自身的服务级别。



下列这张综合信息图涵盖了软件定义存储的全部要点:


【PY原创】SDS 之二:什么是软件定义存储?_数据_10


七、各家对SDS定义的共性

虽然每家对SDS的定义都不尽相同,各有侧重点。但可以看出来,易于扩展(主要指在线横向扩展)、自动化、基于策略或者应用的驱动都几乎都成为大家在SDS定义中的必备特征。而这也是软件定义数据中心的重要特征,只有具备自动化的能力,才能实现敏捷交付,简单管理,节省部署和运维成本。自动化也成为各家SDS方案,是否愿意走向更高阶段的试金石。


下一篇将讲述:软件定义存储应该怎样发展?

可以通过关注百度百家”或 订阅 “乐生活与爱IT” 微信公众号,获得以前或者后续的文章。



部分内容和数据来源:

梅宏:云计算之软件定义—思考和探索

http://tech.sina.com.cn/it/2014-05-21/16549391707.shtml


http://www-03.ibm.com/systems/infrastructure/us/en/software-defined-environment/


http://blogs.gartner.com/neil_macdonald/2013/01/29/software-defined-data-centers-and-securitywhats-in-a-name/


Gartner Identifies the Top 10 Strategic Technology Trends for 2014

http://www.gartner.com/newsroom/id/2603623


http://cto.vmware.com/vmwares-strategy-for-software-defined-storage/


http://reflectionsblog.emc.com/2013/05/what-is-software-defined-storage/


http://public.dhe.ibm.com/common/ssi/ecm/dc/en/dcm03004usen/DCM03004USEN.PDF


https://www.ibm.com/developerworks/community/blogs/ibmsyssw/entry/how_do_you_define_software_defined_storage?lang=en