存储虚拟化可以将用户与存储资源中大量的物理特性隔绝开来,就好像我们去仓库存放或者提取物品一样,只要跟仓库管理员打交道,而不必关心我们的物品究竟存放在仓库内的哪一个角落。对于用户来说,虚拟化的存储资源就像是一个巨大的“存储池”,用户不会看到具体的存储磁盘、磁带,也不必关心自己的数据经过哪一条路径通往哪一个具体的存储设备。
存储虚拟化减少了物理存储设备的配置和管理任务,同时还能够充分利用现有的存储资源。存储虚拟化的方式是将整个云系统的存储资源进行统一整合管理,为用户提供一个统一的存储空间。如下图所示:
1.传统存储面临的挑战
传统的数据中心里,存储的类型大致可分为以下几种:服务器内置磁盘、直接附加存储、存储区域网络及网络附加存储。
服务器内置磁盘包括SCSI、SATA及IDE磁盘等,这些磁盘可能直接由操作系统管理,也可能通阵列卡等RAID管理器进行配置使用(常见的有RAID 1、RAID 10、RAID 5、RAID 6等)。内置磁盘作为最简单直接的存储方式,在目前数据中心里仍然到处可见。服务器磁盘RAID阵列数据组织模式如下:
直接附加存储(Directed Attached Storage,DAS)作为一种最简单的外接存储方式,通过数据线接连接在各种服务器或客户端扩展接口上。它本身是硬件的堆叠,不带有任何存储操作系统,因而也不能独立于服务器对外提供存储服务。DAS常见的形式是外置磁盘阵列,通常的配置就是RAID控制器+一堆磁盘。DAS安装方便、成本较低的特性使其特别适合于对存储容量要求不高、服务器数量较少的中小型数据中心。如下图所示:
存储区域网络(Storage Area Network,SAN)是一种高速的存储专用网络,通过专用的网络交换术连接数据中心里的所有存储设备和服务器。在这样的存储网络中,存储设备与服务器是多对多的服务关系:一台存储设备可以为多台服务器同时提供服务,一台服务器也可以同时使用来自多台存储设备的存储服务。不同于DAS,SAN中的存储设备通常配备智能管理系统,能够独立对外提供存储服务。SAN存储网络系统结构图如下:
典型的SAN利用光纤通道(Fiber Channel,FC)技术连接节点,并使用光纤通道交换机(FC Switch)提供网络交换。不同于通用的数据网络,存储区域网络中的数据传输基于FC协议栈。在FC协议栈之上运行的SCSI协议提供存储访问服务。与之相对的iSCSI存储协议,则提供了一种低成本的替代方式 即将SCSI协议运行于TCP/IP协议栈之上。为了区别这两种存储区域网络,前者通常称为FC SAN,后者称为IP SAN。由于SAN存储采用网络架构和光纤传输,使它具有易部署、扩展强、传输快等优势,传输速率可达8~16Gbps。数据中心常见的SAN交换机如下图所示:
网络附加存储(Network Attached Storage,NAS)提供了另一种独立于服务器的存储设备访问方(相对于内置存储与DAS)。类似于SAN,NAS也是通过网络交换的方式连接不同的存储设备与服务器。同样,存储设备与服务器之间也一种多对多的服务关系。NAS服务器通常也具有智能管理系统,能够独立对外提供服务。与SAN不同的是,NAS基于现有的企业网络(即TCP/IP网络),不需要额外搭建昂贵的专用存储网络(FC)。此外NAS通过文件I/O的方式提供存储,这点也不同于SAN的块 I/O访问方式。NAS存储的架构示意图如下:
常见的NAS访问协议有NFS(Network File System)和CIFS(Common Internet File System),因此允许多台服务器以共享的方式访问同一个数据存储单元LUN。而且,由于NAS内部嵌入了一个精简的专门用于存储的操作系统,集成了网络传输和I/O访问等协议,因此NAS存储独立于用户操作系统,可在线扩展,且部署容易,管理成本低(相对SAN存储)。实际中的常见的NAS产品,比如群晖NAS产品实物图如下:
随着云计算与软件定义数据中心的出现,对存储管理有了更高的要求,传统存储也面临着诸多前所未有的挑战:
对于服务器内置磁盘和DAS来说,单一磁盘或阵列的容量与性能都是有限的,而且也很难对其进行扩展。另外这两种存储方式也缺乏各种数据服务,例如数据保护、高可用性、数据去重等。最大的麻烦在于这样的存储使用方式导致了一个个的信息孤岛,这对于数据中心的统一管理来说无疑是一个噩梦。
对于SAN和NAS来说,目前的解决方案首先存在一个厂商绑定的问题。与服务器的标准化趋势不同,存储产品的操作系统(或管理系统)仍然是封闭的。不仅不同厂商之间的系统互不兼容,而且一家厂商的不同产品系列之间也不具有互操作性,这必然导致高价和技术壁垒。此外,管理孤岛的问题依旧存在,相对于DAS来说只是岛大一点,数量少一点而已。最后,SAN与NAS的扩展性也仍然是个问题。
另外,一些全新的需求,比如:对多租户(Multi-Tenancy)模式一致性支持、云弹性(Cloud-Scale)的动态迁移服务支持、动态定制的数据服务(Data Service)以及直接服务虚拟网络的应用等。这些需求并不是通过对传统存储架构的简单修修补补就可以满足的。
2.存储虚拟化的定义
为了解决上述挑战,存储虚拟化和软件定义存储SDS的概念日趋火热,但是需要注意一点---存储虚拟化并不等于软件定义存储SDS,准确点讲存储虚拟化是软件定义存储的一个具体实现。存储虚拟化的本质是存储整合的一个重要组成部分,它能减少管理问题,而且能够提高存储利用率,这样可以降低新增存储的费用。权威机构SNIA(存储网络工业协会)给出的定义为:通过将存储系统/子系统的内部功能从应用程序、计算服务器、网络资源中进行抽象、隐藏或隔离,实现独立于应用程序、网络的存储与数据管理。
总结起来就是:存储虚拟化技术将底层存储设备进行抽象化统一管理,向服务器层屏蔽存储设备硬件的特殊性,而只保留其统一的逻辑特性,从而实现了存储系统的集中、统一、方便的管理。
与传统存储相比,虚拟化存储的优点主要体现在:
- 磁盘利用率高,传统存储技术的磁盘利用率一般只有30-70%,而采用虚拟化技术后的磁盘利用率高达70-90%;
- 存储灵活,可以适应不同厂商、不同类别的异构存储平台,为存储资源管理提供了更好的灵活性;
- 管理方便,提供了一个大容量存储系统集中管理的手段,避免了由于存储设备扩充所带来的管理方面的麻烦;
- 性能更好,虚拟化存储系统可以很好地进行负载均衡,把每一次数据访问所需的带宽合理地分配到各个存储模块上,提高了系统的整体访问带宽。
如下图所示为华为存储虚拟化的解决方案架构图。
在华为的存储虚拟化解决方案中,有三个概念,分别是:存储资源、存储设备和数据存储。
- 存储资源:表示物理存储设备,例如IPSAN、Advanced SAN、NAS等。
- 存储设备:表示存储资源中的管理单元,类似LUN、 Advanced SAN存储池、NAS共享目录等。
- 数据存储:表示虚拟化平台中可管理、操作的存储逻辑单元。
各类存储资源的特性对比如下,其中,存储卸载是指将部分存储操作(模板部署、删除清零等操作)下移到存储侧进行,这样做可以不浪费主机侧资源,同时也可以提升操作效率。
华为的虚拟化存储栈全景图如下,可以将不同存储设备进行格式化,屏蔽存储设备的能力、接口协议等差异性,将各种存储资源转化为统一管理的数据存储资源,可以用来存储虚拟机磁盘、虚拟机配置信息、快照等信息,使得用户对存储的管理更加同质化。
3.存储虚拟化的技术实现分类
虚拟化存储有多种分类方法,从大的方面可以分为:根据在I/O路径中实现虚拟化的位置不同进行分类和根据控制路径和数据路径的不同进行分类。
根据在I/O路径中实现虚拟化的位置不同,虚拟化存储可以分为主机的虚拟存储、网络的虚拟存储、存储设备的虚拟存储。根据控制路径和数据路径的不同,虚拟化存储分为对称虚拟化与不对称虚拟化。
3.1 基于主机的虚拟存储
基于主机的虚拟存储完全依赖存储管理软件,无需任何附加硬件。基于主机的存储管理软件,在系统和应用级上,实现多机间的共享存储、存储资源管理(存储媒介、卷、文件管理)、数据复制和数据迁移、远程备份、集群系统、灾难恢复等存储管理任务。
基于主机的虚拟存储又可分为数据块以上虚拟层和数据块存储虚拟层:数据块以上虚拟层(ViAualizationaboveBlock)它是存储虚拟化的最顶层,通过文件系统和数据库给应用程序提供一个虚拟数据视图,屏蔽了底层实现。数据块存储虚拟层(BlockStorageVirtualzation)通过基于主机的卷管理程序和附加设备接口,给主机提供一个整合的存储访问视图。卷管理程序为虚拟存储设备创建逻辑卷,井负责数据I/O请求的路由。如下图所示,为基于主机的虚拟化存储示意图,主要应用于服务器的存储空间可以跨越多个异构的磁盘阵列场景,常用于在不同磁盘阵列之间做数据镜像保护。
一般由操作系统下的逻辑卷管理软件完成(安装客户端软件),不同操作系统的逻辑卷管理软件也不相同。
- 优点是:支持异构的存储系统。
- 缺点是:占用主机资源,转发性能差,与主机OS兼容性差,数据迁移复杂。
3.2 基于存储设备的虚拟存储
基于存储设备的存储虚拟化方法依赖于提供相关功能的存储模块。如果没有第三方的虚拟软件,基于存储的虚拟化经常只能提供一种不完全的存储虚拟化解决方案。对于包含多厂商存储设备的SAN存储系统,这种方法的运行效果并不是很好。利用这种方法意味着最终将锁定某一家单独的存储厂商。如下图所示,为基于存储设备的虚拟化示意图,主要应用于在同一存储设备内部,进行数据保护和数据迁移的场景。
通过在存储控制器上添加虚拟化功能实现,只有中高端存储设备具备此功能。
- 优点是:与主机无关,不占用主机资源,数据管理功能丰富。
- 缺点是:只能对本设备内的磁盘虚拟化,厂商绑定不能异构,多套存储设备软件不兼容,需多部署,成本高。
比较常见的基于设备的存储虚拟化应用就是精简配置虚拟磁盘,能够提供远远大于物理磁盘容量的虚拟空间。不管虚拟机磁盘分配了多少空间,如果没有数据写到虚拟磁盘上,就不会占用任何物理磁盘空间。精简配置虚拟磁盘的示意图如下所示,可以用小的物理容量为操作系统提供超大容量的虚拟存储空间。并且,随着应用数据量的增长,实际存储空间也可以及时扩展,而无须手动扩展。总之,自动精简配置提供的是“运行时空间”,可以显著减少已分配但是未使用的存储空间。
如果采用传统的磁盘分配方法,如上图左边。需要用户对当前和未来业务发展规模进行正确的预判,提前做好空间资源的规划。在实际中,由于对应用系统规模估计得不准确,往往会造成容量分配的浪费。
自动精简配置磁盘,如上图右边。有效地解决了存储资源的空间分配难题,提高了资源利用率。采用自动精简配置技术的数据卷分配给用户的是一个逻辑的虚拟磁盘,而不是一个固定的物理空间,只有当用户真正向该逻辑资源写数据时,才按照预先设定好的策略从物理空间分配实际空间容量。
3.3 基于网络的虚拟存储
网络虚拟层包括了绑定管理软件的存储服务器和网络互联设备。基于网络的虚拟化是在网络设备之间实现存储虚拟化功能,它将类似于卷管理的功能扩展到整个存储网络,负责管理Host视图、共享存储资源、数据复制、数据迁移及远程备份等,并对数据路径进行管理避免性能瓶颈。如下图所示,基于网络的虚拟存储示意图,主要用应用与异构存储系统的整合和统一管理场景。
通过在存储域网(SAN)中添加虚拟化引擎实现。
- 优点是:与主机无关,性能好、能够异构主机和存储设备、管理统一、功能丰富。
- 缺点是:各厂商产品品质参差不齐,部分厂商产品想能差,兼容性差。
基于网络的虚拟存储可采用对称或非对称的虚拟存储架构。在非对称架构中,虚拟存储控制器处于系统数据通路之外,不直接参与数据的传输。服务器可以直接经过标准的交换机对存储设备进行访问。虚拟存储控制器对所有存储设备进行配置,并将配置信息提交给所有服务器,如下图所示,服务器在访问存储设备时,不再经过虚拟存储控制器,而是直接访问存储设备并发工作,同样达到了增大传输带宽的目的,这种架构也称为存储虚拟化的带外虚拟引擎(out-of-band)。
一般用于不同存储设备之间的数据复制。
- 优点是:虚拟化设备发生故障,整个系统将不会中断。
- 缺点是:主机资源占用大,数据配置、同步复杂,缺乏统一管理。
而对称式架构中,虚拟存储控制设备直接位于服务器与存储设备之间,利用运行其上的存储管理软件来管理和配置所有存储设备,组成一个大型的存储池,其中的若干存储设备以一个逻辑分区的形式,被系统中所有服务器访问,这种架构也称为带内存储虚拟化引擎(in-band)。如下图所示,虚拟存储控制设备有多个数据通路与存储设备连接,多个存储设备并发工作,所以系统总的存储设备访问效率可达到较高水平。
主要用于异构存储系统整合,统一数据管理,在业务运行同时完成复制、镜像、CDP等各种数据管理功能。
- 优点是:兼容性好,不占主机资源,配置简单,功能丰富。
- 缺点是:虚拟化设备发生故障,整个系统将中断。
4.软件定义存储SDS
上面提到过存储虚拟化并不等于软件定义存储SDS,其实存储虚拟化也可以归入软件定义存储的类别,实际上很多虚拟化存储厂商也是这么做的。但是严格意义上来说,这两者又略有不同,存储虚拟化一般只能在专门的硬件设备上使用,它的控制平面和存储数据平面是紧耦合的,很多厂商都要使用专门量身定做的设备才能实现存储虚拟化,而软件定义存储则没有设备限制,其控制平面和存储数据平面是松耦合,其本质上只定义控制平面的“软化”,而存储数据平面仍由各厂商去各自实现。可以简单理解成就是一个存储的管理程序。
软件定义存储实际上存在更大的适用范围,它的目标是从存储硬件中分离出存储控制功能和服务并提供编程接口,如 OpenStack Cinder, EMC ViPR,华为的Fusion Sphere和Fusion Storage都是这个范畴。如下图所示:
再具体一点,软件定义存储是把存储硬件或软件提供的控制能力抽象出来,并与数据层面的能力(数据访问)分开,这些控制能力包括卷管理,RAID,QoS,数据复制,监控,快照和备份等等,这个举动意义在于这些控制能力抽象出来以后,任何厂商提供的存储能力控制都是接近的,避免对厂商的绑定。
然后它通过这些控制能力进一步为管理员提供自定义、基于策略的虚拟存储层,这些策略可以是基于空间、性能、费用等等因素。它的优势在于与存储虚拟化相比更加轻量,通常可以保留底层存储系统如SAN,阵列的特性并仍然发挥作用,而且部署和实现难度都大幅度下降,可以采用更小的代价实现管理存储基础设施的能力,如下图所示:
OpenStack Cinder是一个典型的软件定义存储产品,它目前支持大量的存储厂商设备,它定义了一些卷管理,快照,备份,简单统计等特性,用户可以使用Cinder提供的接口来获得不同存储设备提供的相似能力。
而Ceph可以看作一个典型的存储虚拟化产品,它将大量的通用存储设备联合起来提供一个存储池,并实现了一般存储厂商产品的能力。而Ceph的块存储能力使得它成为了Cinder的一个Driver。同时Cinder通过了这些基本API进行扩展,可以定义出不同的存储池,智能化的存储区域等等。