从广义来看,其实拿物理盘做 RAID,然后在其之上划 LUN,呈现给 OS,这也是一种存储虚拟化。
存储虚拟化往前还可以溯源到 IBM AIX LVM(逻辑卷管理器),和 HP EVA 的 vDisk 技术。HP 的 EVA 技术,准确说是源于 Compaq,甚至是 DEC 的 VA,在当时的存储界,非常厉害和前瞻的技术。
大约在 2004、2005 年左右,新兴的存储厂商 Compellent 和 EqualLogic(这两个公司后来被 DELL 收购)、3PAR 和 LeftHand(这两个公司后来被 HP 收购)、XIV(后来被 IBM 收购)、Pillar(后来被 Oracle 收购)的块级存储虚拟化,打破了以往 RAID Group 的限制,支持精简配置(Thin Provisioning)的功能,无需预先分配物理空间,实现写多少分配多少空间的机制。
下面我们系统、全面地介绍一下存储虚拟化,以 SNIA 的阐述为主。
SNIA 对存储虚拟化的解释
SNIA 认为,存储虚拟化通过对存储(子)系统或存储服务的内部功能进行抽象、隐藏或隔离,使存储或数据的管理与应用、服务器、网络资源的管理分离,从而实现应用和网络的独立管理。对存储服务和设备进行虚拟化,能够在对下一层存储资源进行扩展时进行资源合并、降低实现的复杂度。存储虚拟化可以在系统的多个层面实现。
SNIA 提供的存储虚拟化模型(如下图),包括三部分:
SNIA 存储虚拟化模型
一、虚拟化什么
针对不同的存储设备和数据形态,有多种形式的虚拟化资源:虚拟数据块、虚拟磁盘、虚拟磁带或磁带库、虚拟文件系统或者其他虚拟设备。
二、在哪里虚拟化
存储虚拟化可以在不同的层面上进行。
(1)基于主机/服务器的虚拟化
主要用途:使服务器的存储空间可以跨越多个异构的磁盘阵列,常用于在不同磁盘阵列之间做数据镜像保护。
实现方式:一般由操作系统下的逻辑卷管理软件完成(安装客户端软件),不同操作系统的逻辑卷管理软件也不相同。
常见产品:IBM AIX LVM,Linux LVM,VeritasVolume Manager 等
(2)基于网络的虚拟化
主要用途:异构存储系统整合和统一数据管理。
实现方式:通过在存储域网(SAN)中添加虚拟化引擎实现。
常见产品: EMC VPLEX、IBM SVC、飞康 FreeStor
(3)存储子系统虚拟化
主要用途:在磁盘阵列内部实现灵活调用存储资源。
实现方式:块级虚拟化,精简配置等。
常见产品:DELL EqualLogic、DELL Compellent、HP 3PAR、HP LeftHand、IBM V 系列等。
三、如何进行虚拟化
根据数据流与虚拟化引擎的相对关系,可以分为以下两种。
(1) 带内 In-Band
是目前使用最多的方式,它可以在存储系统、网络、主机、文件系统上实现。
(2) 带外 Out-of-Band
需要在存储网络(SAN)上实现。
SNIA 之存储标准化建议:SMI-S
有些朋友会误以为软件定义存储就是类似 IBM SVC、EMC VPLEX 这类基于网络的存储虚拟化,而实际上它是存储虚拟化的一部分,是软件定义存储非常小的一部分。
基于网络的存储虚拟化,能够跨越异构的磁盘阵列,在更大的范围,如数据中心内,形成一个大的存储资源池,统一分配和监控来自不同存储厂商的存储资源。
当我们讨论池化,也即异构存储之间的管理的时候,一定会涉及到存储标准化,只有当大家开放的接口遵循共同的标准(也即规范)的时候,也就是用相同的“语言”对话时,才有可能被调用、被管理。
随着用户的数据不断增加,为了不被单一厂商锁定,规模较大的用户的存储网络往往包含了来自多个存储厂商的外置磁盘阵列,每个阵列都有自己的存储管理软件,这些阵列之间缺乏互联互通,管理复杂度增加。为了解决这一个问题,十五年前(也就是 2002 年),SNIA(全球网络存储工业协会)就提出了存储管理建议规范 SMI-S(Storage Management Initiative Specification),希望在存储网络中的存储设备和管理软件之间提供标准化的通信方式,从而使存储管理实现厂商无关性,使得存储管理系统能够实现鉴别、分类、监控和控制物理及逻辑资源的能力,提高管理效率、降低管理成本,促进存储的发展。
SMI-S 是一种中间件性质的规范,定义了存储管理软件和受管对象之间的交互机制。它提供了多种特性以简化 SAN 的管理。首先,在 SMI-S 标准中定义了统一的数据模型,使用基于 Web 的企业管理(Web-Based Enterprise Management,WBEM)技术和公共信息模型规范(Common Information Model, CIM),SMI-S 的代理可以与交换机、磁盘阵列等各种支持 CIM 的设备进行交互,获取其管理相关的数据并返回给请求方。使用 SMI-S 可以免除设计管理数据传输机制的麻烦,对各种设备和组件直接进行带内或带外的管理,甚至两者并用。SMI-S 还提供了基于 HTTP 的 CMI-XML 传输机制,以增强适用性。
SNIA 对于 SMI-S 标准寄予了很高的期望,跨越的版图非常宏伟。从下图(摘自《Storage Management from SMI-S to Management Frameworks》),可以看出来,它希望做到,存储管理软件能够识别磁盘阵列、光纤交换机、IP 交换机、磁带库、FC HBA 卡、iSCSI HBA 卡等各种各样与存储相关的设备,并通过存储管理服务,自动发现、部署和配置存储资源。
SNIA SMI-S 标准
SMI- S 标准发布以后,得到了大多数主要存储供应商的支持,截止 2016 年,已经 1000 多个存储产品支持 SMI-S 标准。最新的标准是在 2016 年 3 月 8 日公布的 SMI-S v1.7.0,在 SNIA 官网能够下载到详细的规范,规范包括 8 篇文章,其中的一篇《Storage Management Technical Specification, Part 4 Block Devices , Version 1.7.0, Revision 5》,长达 958 页。仅仅关于 Automated Storage Tiering 的描述就长达 82 页。
在推行这一标准的过程中,SNIA 也曾直言不讳地提到了它面临的问题:
1、SMI-S 标准走向市场的时间漫长;
2、存储厂商研发新特性的过程中,规范的确立花费 1 年,厂商实施再需要 6 个月(笔者持怀疑态度,认为需要更长时间),用户方接受并实施需要 2 年甚至遥遥无期;
3、需要加速标准走向用户的过程;
存储虚拟化实例剖析
下面我们以基于网络的存储虚拟化为例,详细剖析一下它是如何实现存储虚拟化的。
从市场上看,基于网络的存储虚拟化比较知名的有:EMC VPLEX、IBM SVC、HDS VSP、Symantec Storage Foundation 等。他们都能或多或少的将其他厂商的存储纳入自己的存储平台之下进行管理。但这种管理,也只是将异构存储的逻辑卷做为一个外来设备使用,把它视为一个普通的存储容器,不知道它能提供多大的性能,也丧失了异构存储内嵌的丰富的软件特性,例如自动分级、快照、容灾等。
以 IBM SVC 为例,如下图,IBM SVC 针对其内部盘,按照 RAID 方式(如 8 块盘)创建出 Mdisk,再将多个 Mdisk 形成存储池,在池上创建逻辑卷 VDisk(Virtual Disk,现更名为 Volume)。
IBM SVC 中物理盘、逻辑卷、Mdisk、extent 的关系
在 IBM SVC 这个存储管理体系下,也能管理异构存储,支持对HP(MSA, EVA, XP), EMC(CX, DMX),NetApp(FAS),Hitachi(AMS,WMS,99xx系列)和 DELL(Compellent)等异构存储的虚拟化。以 DELL Compellent 为例,将 Compellent 逻辑卷纳入 SVC 之下,需要经过如下步骤:
1、业务停机;
2、在 Compellent 图形管理界面中,去掉卷与主机的映射关系(un-mapping);
3、在 Compellent 图形管理界面中,创建新的服务器对象:SVC Cluster;
4、在 SVC 图形管理界面中,执行 MDisk 发现操作;
5、将新发现的 MDisk(其实就是 Compellent 逻辑卷)以 Image Mode MDisk 方式导入;
6、将这个 Image Mode MDisk 映射到原主机上;
无论是内部盘还是外部盘,IBM SVC 都可以按照 VDisk 为单位,实施本地的数据复制服务(快照、克隆、镜像)。利用 SVC,可以将被其虚拟化的低端存储,增加一些高级功能。不过,存储发展到现在,高端存储和中端存储的丰富的软件功能都已经逐渐下移到低端存储,SVC 的这部分作用就意义不大了。
对于用户而言,基于网络的存储虚拟化,利旧,方便管理(只是少部分程度的),仍有一定的现实意义。
存储标准化之互操作性
十几年前,存储行业里,有一个经常被提及的概念是互操作性,正是因为各家厂商的存储管理各自为政,缺乏互联互通,使得用户面临存储管理的巨大挑战,用户一直希望存储厂商解决互操作性:各家的存储管理软件都能管理并灵活调用其他异构存储的资源。
实际上,早在 SMI-S v1.6.1 的标准《Storage Management Technical Specification,Part 4 Block Devices》中,就已经包含了对镜像、快照、克隆、容灾的描述,如下图所示。但时至今日,极少存储厂商的存储虚拟化平台可以驱动受管对象的这些高级软件功能。
SMI-S v1.6.1 标准中对镜像、快照和克隆的描述
截止2015年底,逐渐有更多的存储厂商适配Hypervisor(VMware)或 DCOS(OpenStack),越来越多地支持SMI-S标准。
不过,十五年时间并不短暂。但是,基于网络的存储虚拟化(异构存储的管理)并未在用户实际环境中广泛的部署。原因在于存储厂商根本不可能投入足够的精力和财力去遵循这一标准。从经济利益、投入产出比来看,存储厂商能获益的机会很少。存储厂商投入精力去改造自己,开放 API 出去,适配其他存储厂商的存储虚拟化平台,回报明显不大。而且,当存储厂商变成受管对象,也即被虚化后,它对于用户的重要性就下降了。所以单纯靠存储厂商与存储厂商之间,是很难解决互操作性的。
那么,这个互操作性谁来解决更合适呢?
答案是 Hypervisor 厂商、操作系统(OS)厂商,或者数据中心操作系统(Data Center Operating System,简称DCOS),或者云计算(Cloud)提供商、云管理软件提供商。用户只要构建软件定义的数据中心,必不可免的是,大多数存储资源都必须纳入到 Hypervisor/OS/DCOS/Cloud 的版图之内。在云计算、软件定义数据中心的日益兴盛的背景下,存储资源被虚机使用的规模将远大于被物理机使用。因此,存储厂商可以考虑与 VMware 等 Hypervisor 厂商,以及其他 DCOS 软件的互操作性。我们也看到 Hypervisor 厂商也在努力实现与存储的互联互通,例如 VMware vROps 云管理软件利用 SMI-S 等协议进行存储分析。
VMware vROps 利用 SNIA SMI-S 协议进行存储分析