一、关于控制平面
1.ViPR与存储虚拟化
▲传统的带内(In-band)和带外存储虚拟化原理示意图
EMC提出ViPR是一种(高级的)存储虚拟化,IBM则认为目前的软件定义存储(SDS)属于存储虚拟化2.0,未来还会有3.0。不过我们也看到ViPR的控制平面和OpenStack的Cinder项目,与传统存储虚拟化还是有着明显的差别。
存储虚拟化,是位于后端存储和前端服务器之间的一个抽象层。带内块级虚拟化的代表有IBM SVC、EMC VPLEX,以及可以安装在x86服务器上的赛门铁克Storage Foundation卷管理器软件等,它们的特点是数据路径和控制路径都要经过存储虚拟化设备,这个环节上有缓存,但也可能增加延时、形成性能瓶颈,以及新的故障点。
带外SAN存储虚拟化的代表产品,比如早年被LSI收购的SVM(OEM给惠普的SVSP)、EMC Invista等已经基本消声匿迹。它们的特点是控制路径与数据路径分离,在后端存储与前端服务器连接的基础上,增加专门的元数据服务器,以及定制的光纤交换机或者数据路径管理器(DPM)。昆腾的StorNext SAN文件系统尽管架构上有点类似,但它向上呈现的是一个共享文件系统,而不是块设备-块设备。
带外存储虚拟化理论上可以减少延时的产生,但元数据服务器却容易成为瓶颈,特别是在高IOPS的交易型数据存储应用中。最初这些产品不能支持精简配置(thin-provisioning),另外由于不像带内虚拟化那样具备缓存,包括复制在内的数据保护等高级功能也很难实现。
EMC ViPR的控制平面与以上两者都不同。尽管也是带外的控制路径,但它并不处理元数据,抽象的只是存储设备的管理功能,完全不参与服务器到存储之间的数据访问。
在EMC的资料中这样写道:
“ViPR 将存储及其所有独特功能从物理阵列中抽象出来,并创建单个虚拟存储池。ViPR 将存储控制路径与数据路径分开,数据路径可帮助 ViPR 集中所有数据调配和数据管理任务,而且支持应用程序访问数据块和文件数据,因为它们始终具有并且继续使用底层阵列的独特功能... ViPR 数据块和文件服务保留了阵列的所有高级功能,如镜像、克隆、快照、多站点高可用性以及复制。”
ViPR也宣称掩盖了底层存储的复杂性,但它实际上调用的都是那些阵列的功能。相比之下,SVC、VPLEX这些才是真的将后端阵列当作标准块设备来使用,事实上后者更多地用于数据镜像,远程复制、容灾等用途,也包括EMC宣传的“双活数据中心”概念。这部分是ViPR之类的软件定义存储产品所无法替代的,也就是传统存储虚拟化继续存在的价值。
最后一个问题,IBM SVC、EMC VPLEX使用标准的FC协议仿真主机的形式来连接后端阵列,因此它们比较容易拥有一套庞大的设备兼容性(互操作性)列表。而ViPR则不同,即使EMC自己的不同产品线也使用不同的操作系统,像VMAX和VNX的FAST(全自动存储分层)功能可能还有代码上的通用性,而Isilon集群NAS的OenFS则完全是收购来的技术。要想通过ViPR实现所有高级功能,针对每个家族的阵列应该都要通过一些专用的API来实现,因此要做的工作很多。关于这些我在后面还会有具体一些的讨论。
2.ViPR与存储管理
我听说过IBM TPC(Tivoli Storage Productivity Center)、NetApp OnCommand等存储资源管理软件,NetApp的FAS/V产品线相对单一,而TPC每次升级版本,加入自家新产品支持都不只是做些兼容性测试那么简单的事情。ViPR与这些传统的存储管理软件有什么不同呢,我在EMC中文技术社区中看到了下面这个问答:
Uehara Y.问道:“与比如Storage Essentials (HP)这样的软件相比,ViPR的优势是什么?它们都能提供存储虚拟化,但区别在哪?”
Mark_Prahl 回答:“Storage Essentials是类似与EMC Resource Management Suite的解决方案,用来监控并报告存储性能、容量使用情况以及可用性,帮助你了解存储环境。
ViPR创建虚拟存储池,以服务目录的形式呈现给用户,这可以通过自助服务网站访问。与Storage Essentials此类仅提供存储环境信息的存储资源管理软件不同的是,ViPR能将性能度量信息告知存储资源管理解决方案软件,而且ViPR可以集成EMC Storage Resource Managment Suite。”
3.VMAX Cloud Edition的扩展?
在“自助服务网站”,以及根据用户的性能需求SLA分配存储资源的特性方面,我觉得ViPR可能是之前的VMAX Cloud Edition(最早叫VMAX SP)的进一步延伸,或者说受到后者的启发——即EMC尝到了甜头之后,把这些功能推广到各条产品线。
ViPR与“Cloud Edition”共同的特点是:简化部署,并使管理工作智能化。
4.ViPR与OpenStack
记得在EMC刚宣布ViPR的时候,国内一位熟悉OpenStack的专家曾表示:“所谓控制平面和数据平面,不就相当于Cinder和Swift吗?”关于OpenStack的Swift对象存储服务,我们在后面还会谈到,这里先看看Cinder块存储服务与ViPR的差异。
▲OpenStack Cinder连接EMC VNX/VMAX提供iSCSI访问模型
由上图我们看到,用户通过REST连接到Cinder的Volume API(Cinder是从Nova Volume发展而来),而Volume Manager则使用EMC提供的驱动连接到SMI-S Server,再通过REST连接到阵列——这样的一个控制路径。Cinder同样只负责存储资源的分配,而不参与到数据访问路径中。
▲OpenStack Cinder连接NetApp FAS提供iSCSI访问模型
上图中的NetApp Filer指的就是FAS系列,由于做NAS出名了人们习惯将它称为文件管理器,在这里也是提供iSCSI访问(OpenStack后来的Cinder版本已经支持FC了)。我们看到稍有不同的是,NetApp的Cinder驱动不像EMC那样通过业内标准的SMI-S管理规范来实现与阵列的对接,而是使用了自家的OnCommand管理平台。相应的,在Cinder驱动和管理服务之间的接口也由CIM换成了REST。
EMC ViPR同样能够支持SMI-S和REST,后面的一个图片中有简单说明。
这张图,是在EMC发布ViPR之前对软件定义存储的描述,其中浅蓝色的部分正是今天的ViPR。或许它描述了ViPR与OpenStack之间的关系——既然ViPR已经实现了对底层不同产品线的支持,向上就可以使用几个通用的适配器驱动来分别支持Swift对象、Glance虚拟机镜像和Cinder卷服务?即而ViPR充当中间层,不用再为每个系列的存储单独写驱动了?
5.扩展阵列支持
上图中可以看到ViPR与存储阵列之间的几种接口,以及对第三方阵列开放支持的架构。下面我摘录了EMC资料中的一些文字:
“要成为真正意义上的软件定义的存储,平台必须能够可编程。ViPR 提供简单而强大的表述性状态转移 (REST) API,从而与多供应商存储资源建立了连接,就好像它们是一个大的存储池一样。”
“使用 SMI-S 和供应商阵列提供的大量 API,EMC 为不同的阵列构建了适配器,并且提供了简单一致的 API,用于构建新适配器以支持新阵列。这将创建一个可扩展的“即插即用”存储环境,该环境可以自动连接到、发现和映射阵列、主机以及 SAN 连接结构。管理员和开发人员还可以开发跨阵列并且支持混合数据类型(如文件中对象)的独特新数据服务。”
“EMC 将发布 ViPR API,以帮助添加新阵列适配器和新数据服务。这样,开发人员可以专注于添加的功能和价值,而不必操心底层存储的细枝末节。ViPR 还支持企业和服务提供商建立开发人员社区,吸引开发人员和 ISV 加入进来,进而不断扩大增值数据服务的规模。”
OpenStack最大的优势在于开源,因此主流厂商纷纷支持并提供驱动,但相对松散的联盟使它在存储管理方面暂时还只能实现一些相对基本的功能,比如Cinder项目还不够成熟完善,由NetApp提出的文件服务还处于Beta阶段,Swift不适合一些场景(没有适合所有场景的吧?)等。
ViPR则恰恰相反,尽管还未正式发布并处于完善的过程中,但可以预料它在OpenStack不足的那些方面可能会做的更好。但是友商们会积极支持ViPR,并愿意看到它成为业内标准吗?