计算和存储虚拟化的前世今生

虚拟化是个古老而又不失新潮的技术领域,这么多年来,其不断地被赋予全新的含义。而计算、存储、网络这三大领域,也都有了各自的虚拟化技术。其中,存储虚拟化的概念和技术更具多样性。那么存储系统都有哪些值得研究的虚拟化技术呢?本文将尝试从不同的角度和层次来向大家全面介绍一下计算和存储的虚拟化技术。

虚拟化迈出的第一步:服务器虚拟化

虚拟化这个词经常出现在各类文章和文档中。人们一般是从虚拟机技术开始逐渐了解虚拟化的。虚拟机技术很早便出现在大型主机中,由于大型主机的系统规模较大,所以有必要对资源做分区处理于是产生了硬分区,也就是从底层芯片和电路级别将系统内的CPU内存以及IO资源隔离开来,从而形成多个互相独立的子系统,每个子系统运行各自的OS。但是整个大系统作为一个整体进行管理。

目前,IBM Power系列主机并未支持硬分区,其使用的PowerVM方案属于软虚拟化,富士通基于SPARC的小型机依然支持硬分区。一些基于x86体系的高端服务器可通过QPI支持这种硬分区。硬分区是服务器虚拟化的硬件实现最初形态。其好处是没有性能损失,缺点是不够灵活,分配粒度为芯片级,而做不到核心或者更细粒度。后来这些机器巨头厂商比如IBM、HP、富士通等,在提供硬分区的基础上,又提供了软件模拟的虚拟化,将系统资源做了更细粒度的虚拟,这也就是x86平台下的众多虚拟机解决方案所使用的方法。而最近兴起的Linux Container、Docker等轻量级资源虚拟化方案,获得了广泛欢迎。

传统的基于Hypervisor+硬件指令加速(比如Intel VT以及AMD IOMMU技术)的虚拟机方案,过于厚重,同一台物理机要运行多个OS实例,产生了极大的代码执行效率的降低和存储空间的浪费。

其实操作系统本身的责任本来就是将硬件资源虚拟成各种接口和服务,提供给应用程序使用,CPU提供了多线程、TLB加速硬件等等,就是为了充分满足OS进程管理的需要,而每个进程,就是一个应用,多个应用共享同一台物理机,靠时钟中断来让CPU轮询执行,这已经足够平均了,而且每个进程的地址空间也都是虚拟的。其一个重要的不安全的因素就是黑客可以通过注入驱动程序来获取Ring0权限从而影响甚至控制任意进程。

虚拟机方案同样有这个问题,只不过触犯几率更低而已,比如bluepill等病毒,一样可以让虚拟机的安全壁垒荡然无存。而如今比较火的LXC和Docker轻量级思路的回归,是将来的一大趋势。

从计算到存储:存储也得虚拟化

随着存储系统的不断发展,存储虚拟化的概念也逐渐被广泛接受和使用。对于存储系统来讲,其虚拟化的概念与服务器虚拟化相比又有了新的扩展。存储虚拟化目前看来共有三种类型,分别是设备级虚拟化、数据组织和布局虚拟化以及空间级虚拟化。

设备级虚拟化:与服务器虚拟化类似,存储系统也可以支持硬分区或者软虚拟化,其典型代表是2004年发布的HDS的USP高端存储系统以及同时期的IBM的DS8000高端存储系统。值得一提的是,唯一一个采用类似LXC和Docker方案进行设备级虚拟化的厂商是NetApp,其在2002年左右发布的vFiler软件就可以在一台物理存储系统中虚拟出多个虚拟存储系统。

当然,也有直接采用商用虚拟化层的存储系统,比如EMC在2011年发布的VNXe便直接使用VMware在SAN控制器内部虚拟出一个NAS控制器,从而形成了统一存储。

设备级的存储虚拟化应用场景不是很多,毕竟存储系统已经在数据层面实现了足够的空间隔离,就算多个系统同时使用,其数据也不会相互影响。

数据组织和布局的虚拟化:对存储虚拟化的另一种理解,是存储系统对底层数据排布管理方式的虚拟化。2010年之前多数存储系统使用的是Raid1.0的数据布局,其很不灵活,重构时间长,随着单盘容量的增长,其已经无法满足重构速度的要求。

2010年左右,不少Raid2.0思想的产品出现,比如XIV、3PAR等。Raid2.0技术便是存储数据布局虚拟化的典型代表。Raid1.0的条带分布和管理完全与硬盘绑定,需要全盘重构,而且重构数据只能写到一块盘上,严重制约了性能。Raid2.0尝试让条带浮动了起来,不再与磁盘数量绑定,条带可以在数百块磁盘范围内漂移,重构自然也就是见缝插针,多盘都可以写入数据,极大降低了重构时间,而且只重构条带所占用的块,空闲块不重构。

但这也有副作用:需要大量的元数据来追踪记录条带的物理位置,需要耗费大量计算资源,以及保存元数据的存储空间资源,元数据变大之后,严重影响性能,所以不得不后台引入碎片整理机制。

Raid2.0已经不亚于一个文件系统当量了。图1所示为一个Raid2.0的典型磁盘布局,可以看到逻辑卷的条带可以以非常灵活的方式布局。

XIV和3PAR是业界第一个推出Raid2.0技术的产品,XIV属于一种分布式Raid10,其条带就是两个镜像块,而且这两个块可以分布到系统内任何磁盘内;3PAR则是Raid5的Raid2.0,但是IBM和3PAR并没有使用“Raid2.0”的概念术语,3PAR采用了“dynamic optimization”,这个词别说技术屌丝,连技术专家恐怕第一眼也不知道是什么技术。后来有不少国内厂商实现了Raid5的Raid2.0,包括MacroSAN、Huawei等。

其实Raid5的Raid2.0的鼻祖是ZFS的zRaid,而ZFS的年头已经很久了,可以追溯到20年前了,早期Sun还与NetApp针对数据布局的技术专利打过官司。“Raid2.0”后来被Huawei正式当作了一个数据并大肆宣传,这才映入广大业界屌丝的眼帘。

Raid2.0磁盘布局示意图

空间级虚拟化:所谓空间级虚拟化,就是用一台存储设备,将其他存储设备提供的空间整合起来,在其上实现各种附加功能或者实现数据迁移和异构容灾解决方案。

存储行业相对服务器行业来讲是比较封闭和保守的,而“空间级虚拟化”为了打破牌局,在多年抗争中逐渐脱颖而出,这些年来一直代表着存储技术的先锋,而随着Server SAN等Scale Out技术的诞生和井喷,“空间级虚拟化”技术的吸引力却依然高涨,就连传统SAN存储巨头EMC也在近几年发布了vPlex产品。

那么到底是什么吸引着用户一直对存储虚拟化技术情有独钟呢?

笔者感觉主要是以下几个痛点一直让用户持续关注存储虚拟化:统一整合,不被厂商锁定、软件定义,附加数据管理功能、数据迁移、异构容灾、数据安全、应用配合及利旧。在企业IT存储系统内,经常出现五类问题:

·统一整合

企业IT系统内经常存在多个不同厂商或者同一个厂商不同型号、档次的存储系统,属于异构存储环境,在这个异构存储环境中,分配资源是个比较大的问题。首先,如果分配一个新的逻辑卷,需要登录对应的存储设备进行配置,如果让应用主机连接到多个厂商的不同存储设备,主机上需要安装多个不同厂商的多路径软件,它们之间很有可能冲突,回导致在主机端重新扫盘时很有可能扫不到,必须重启主机,这就需要中断业务。其次,针对多种不同厂商和型号的设备,配制方法也都不同,平时运维成本非常高。如果可以使用一个集中的虚拟化设备,将这些存储系统的空间池化,然后在一个统一的存储池之上,做统一的管理和分配,相当于先从原来的存储设备批发存储空间,然后再向应用主机零售存储空间,极大了节省了运维成本。

用户都不愿意被厂商锁定,系统内至少要有两家以上的不同厂商的产品,这就形成了异构系统,给管理和资源调配带来了额外的工作量和复杂的工作流。统一整合,其实核心在于用户需要解决为了解除硬件锁定而引入异构存储之后带来的问题,需要一种能够凌驾于不同厂商阵列之上的基于软件实现的数据桥梁,坚固、强韧、便于管理。这其实也是软件定义存储思想里的一个维度。

统一整合管理

·控制成本性能优化

随着闪存介质使用比例的爆发性增长,一些闪存加速技术能够合理使用闪存阵列等高成本高性能存储介质,仅使用小部分的高性能存储介质,即可有效提升原有存储环境中的读写性能,而无需数据迁移,或高昂的成本投入,这也使得存储虚拟化技术在高性能闪存阵列与传统阵列之间为用户提供了一条可行的,较低成本投入的性能优化之路。

我们来举一个真实的项目案例:某客户,生产中心4台IBM小机,十余台x86服务器。有多个厂商的SAN存储数台,存储虚拟化网关一台。灾备中心,4台小机,若干台x86服务器+VMware虚拟化,采用虚拟机方式对生产中心的物理机进行容灾。容灾管理采用虚拟化网关厂商提供的容灾管理工具,支持P2V容灾管理。小机系统使用HACMP进行容灾切换管理,灾备中心的小机跑另一部分业务,分担生产中心的压力,算是双活数据中心,但是不能并发访问。目前遇到的问题:随着业务压力的增加,两边的存储系统性能无法支撑,由于业务多为OLTP类型,要求低时延,但是如果分别将现有的存储系统分别升级,比如更换控制器或者升级缓存、CPU,或者增加SSD+分层license的话,总体价格也不低,最重要的是需要同时维护多套SSD加速,运维成本也不低。

为此,考虑了另一种方式,在虚拟化网关处挂接一台全闪存阵列,利用虚拟化网关上提供的加速功能,实现对后接存储的总体加速,在节省了运维成本的同时,整体造价也在可接受范围内,性能经过实测,不仅是缓解而且是彻底释放了业务的性能。

·数据管理功能

在企业IT系统内会存在很多低端存储设备,这些存储设备多数只提供存储空间,但并不提供额外的数据管理功能,比如快照、CDP、容灾复制等等。又或者,不同高端存储的数据管理功能无法互通,且都较为昂贵,用户往往为此重复投资。

存储虚拟化设备在统一整合的基础上,还可以让这些最原始的数据卷附加上快照/CDP以及远程数据复制、卷镜像、读写性能优化等高级功能,又例如VMware 的VAAI和SRM接口并不是所有存储厂商都能够支持,而存储虚拟化系统则可以帮助用户在不更换存储的前提下,实现与上述接口的对接。

因此,最关键的就是支持异构存储环境,几乎所有厂商的存储卷,经过虚拟化处理之后,都能对外表现出统一的高级数据管理功能。图3所示的拓扑中,存储虚拟化设备可以在保证源卷属性不变的同时,为其附加几乎所有数据管理功能。

附加数据管理功能

现在的企业用户对存储架构的期望不再仅限于空间、性能,而逐渐向可移动性,统一管理,数据安全、节约成本等维度发展。对于未来的存储子系统而言,硬件越来越不重要,用户正在逐渐接受这一现实,传统硬件厂商功能重复,性能各异的各种存储功能将被软件定义存储技术所替代,这是大势所趋。

某客户是一家大型综合知识型IT公司,主要业务是呼叫中心业务外包,存储子系统内存在多个厂商的不同设备,由于用户业务复杂,经常需要开发和测试新的业务系统,这些业务系统对于存储系统在空间的分配、使用、回收上有比较复杂的工作流,比如在一天之内可能需要新建和删除十余个逻辑卷。而用户对于存储系统的使用本来就不专业,再加上异构存储系统,这为其使用带来了很大的不便利性。

其一表现为异构系统之间的存储空间无法整合,导致A系统空间富余而B系统却捉襟见肘的尴尬情况;其二表现为数据管理方面的支撑无力,比如某业务系统需要较大的临时数据空间,否则便无法成功运行,而实际上它运行的时候却根本产生不了那么多的数据,这就需要Thin技术来支撑;再有,一些测试系统希望在当前现有的生产数据之上进行试运行,而万全复制一份生产数据则不仅占空间成本加倍,而且在数据复制速度上也不可行,而且系统测试完毕之后这些数据副本就变得不再需要了,这就需要快照技术来解决,而异构系统之间的快照又无法联动,此时必须借助存储虚拟化技术。

利用存储虚拟化技术,极大的解放了用户的生产力,提升了综合数据服务能力,使得用户能够专注于其自身的业务系统建设,这对于企业核心存储层有着至关重要的作用。

·数据迁移

数据迁移是企业存储系统中最具挑战的一种数据管理操作。由于种种原因,有时候不得不进行数据迁移,尤其是异构存储系统之间的数据迁移。如何保证最小的系统停机时间是关键点。存储虚拟化设备由于在整合其他厂商存储设备方面久经考验,让其成为了数据迁移场景下最受欢迎和最具可靠性的手段。

异构存储系统之间不能直接相互复制,必须依靠上层手段,虚拟化设备则可以完美担任数据迁移的角色。虚拟化产品厂商一般都会提供数据迁移服务,有一套经过充分验证的数据迁移步骤,只需要很少的停机时间便可以将数据在异构系统之间迁移完毕。

利用虚拟化设备进行数据迁移

·异构容灾

与数据迁移场景类似,由于异构存储系统之间无法实现直接的数据复制,但是异构存储系统在经过虚拟化处理之后变成了同构存储系统,两台相同的虚拟化设备之间可以完成远程数据复制。有些虚拟化设备的远程复制技术并不比原有设备的技术差,甚至更优。比如飞康在其远程复制技术中支持MicroScan技术,能够保证数据在被复制到对端之前经过充分的重删处理,重删识别粒度能细腻到一个扇区,这会在保证复制效率的同时,极大的节省带宽资源。

成本控制是未来企业存储底层架构发展的基本原则之一,企业在灾备中心可以放置比生产中心第一个档次的设备,而不管是相同厂商的不同型号设备之间,还是不同厂商的设备之间,都无法相互远程复制数据,如果没有存储虚拟化技术,用户就不得不付出额外的设备费用,而这些额外的付出却很少得到回报,因为灾难发生且需要切换的几率还是很低的。其次,为了不被厂商锁定,牵制住各家提供商,用户可能最终选择不同厂商的设备形成容灾系统,为了解决数据复制问题,此时就需要借 助存储虚拟化设备。

本地镜像容灾体系

此外,对于一个容灾系统来讲,统一管理才是最关键的要素。仅仅提供数据的远程复制是远远不够的,还必须依靠一套容灾管理工具,来避免灾难发生之后人为操作的失误。比如飞康的RecoverTrac容灾管理工具,可以实现多种拓扑架构之下的物理机和虚拟机混合结构的异构容灾统一管理,实现容灾管理的任务化、流程化、自动化。

统一容灾管理

·数据安全

企业对数据安全也越来越重视,数据安全包含三个方面:闪速备份、常规备份、容灾和加密。目前企业IT系统内整体是一个大的异构系统,除了给平时的资源分配和运维方面带来了很多困难和问题之外,也给数据的保护、备份以及加密带来了不少的问题。用户不得不在多个孤岛系统内分别执行各自的数据快照、容灾以及加密任务,针对这些需求所开发的系统,也需要与这些不同的孤岛分别实现各自的接口,异常复杂。

而存储虚拟化设备可以将异构的系统不仅在管理上屏蔽掉差异性,而且还可以屏蔽实际的数据路径差异,用户可以在一个节点上,利用一套接口,管理整个系统的数据快照、备份、容灾和加密,大大简化了管理成本,提升了效率,甚至部分存储虚拟化系统还能够实现相对于快照技术更高效,保护粒度更高的持续数据保护能力,这在存储阵列产品中是完全没有的数据安全保护能力。

·应用结合

任何存储系统技术、方案,都脱离不开应用系统单独存在。只有更好的适配应用,与应用紧密耦合,产品才具有更强的生命力和粘性。然而,令人沮丧的是,不管是传统存储中的SAN、NAS产品,还是多数存储虚拟化产品,在与应用结合方面几乎都没有什么拿得出手的方案,前者尤为明显。传统存储系统,别看其高大上的外形,复杂的设计,其在主机OS内呈现的无非就是一个逻辑卷,别无他物,更别谈与应用相结合了。这方面正是传统存储厂商应该好好自我反省的一点。

与之相比,存储虚拟化产品就好得多。后者与应用结合紧密主要表现在:快照代理保护主流应用系统的数据一致性、与虚拟机平台紧密集成,比如VMware SRM容灾模块集成、提供P2V/P2P/V2P等异机迁移解决方案、提供应用级容灾管理工具等。比如飞康平台下的RecoverTrac就是一个自动化异构容灾管理工具,很好的将IPstor平台上的远程复制功能利用和管理了起来,其可以在一个界面中管理物理机、虚拟机全局的多数据中心容灾切换,并且支持开机顺序精细化调节,以满足复杂应用容灾场景。

·利旧

企业IT系统内经常存在一些老旧设备,这些设备性能较差,可靠性降低,已经不适合生产系统使用,但是直接淘汰掉比较可惜,如果能够将多台老设备上的空间整合起来形成一个存储池,则不但可以重新利用起这些空间,而且通过做条带化处理,还可以获得不错的性能。虚拟化产品可以从这个池中再次分配出多个虚拟卷给不同的主机使用.

·软件定义存储与存储虚拟化

软件定义存储的概念最近被热炒,笔者以为这个概念和云计算云存储一样,比较模糊,没有一个清晰定义。笔者理解,软件定义存储的特质,应该是可虚拟一切存储。也就是可以将不同类型的存储空间虚拟化,然后再分配,使用软件的方式表现出优良的兼容性,而不必将整个系统做成一个封闭的系统。这正是“软件定义存储”的本质思想。

综上所述,存储虚拟化技术能够极大的降低管理成本,提升存储系统的服务质量的效率。

存储虚拟化产品分析

在这类存储虚拟化产品中,国外产品当属飞康NSS(IPStor),赛门铁克Storage Foundation,IBM SVC,EMC vPlex,而飞康则是虚拟化方面的创始者,自2000年就已经开始相关技术的研发,现在依然是企业级存储虚拟化产品中的佼佼者。IBM SVC则是2010年左右才推出了具备高级数据管理功能的版本,EMC 也是在2010年正式推出了VPLEX产品,但至今仍缺少丰富的数据管理能力和有限的存储兼容性。国内则是以信核数据为代表的多家厂商有虚拟化产品。

有意思的是似乎多数虚拟化产品多少都有点飞康的影子在里面,作为第三方,独立与存储厂商的虚拟化产品,NSS也是为数不多广泛支持国内品牌存储的产品。

经过上面的阐述,大家应该能够感受到,真正意义上的存储虚拟化其实应该是独立,第三方的软件实现方式,任何传统存储厂商其实都不会真正意义上在存储虚拟化上实现革命和解放,除非有一天他们不再以销售磁盘为核心利润实现。这也是目前诸多Server SAN小厂崛起的原因,存储虚拟化厂商一直坚持打破硬件锁定,软件服务的原则至今。

传统存储技术,存储虚拟化技术,Server SAN技术,短期内似乎有些魏蜀吴,三分天下的意思,谁也无法真正意义上替代谁,一切还是以应用,行业,场景,需求为最终导向。

如果一款存储虚拟化产品只有存储虚拟化基本功能的话,会略显单薄。存储虚拟化厂商一般都是将几乎所有数据管理功能集成到了虚拟化网关里。

拿飞康的NSS产品举例,NSS的各种功能,基本上与中高端档次的SAN存储系统控制器所支持的功能别无二致了,而且虚拟化网关设备也支持多控制器冗余负载均衡与横向扩展能力。也就是说,不管用虚拟化网关直接连接JBOD,亦或是连接其他任意厂商存储系统映射出来的逻辑卷,虚拟化网关设备加上后端所挂接的设备,对外表现出的其实就是一款双控或多控冗余的SAN存储系统,而其本身并不是一个封闭系统,而是在最优兼容性的软件层之上来实现所有传统存储系统所具有的功能

综合对比飞康NSS,IBM SVC、EMC vPlex,飞康NSS产品,几乎囊括所有的主流存储的数据管理技术,包括快照、CDP、自动精简配置、Flash缓存加速分层、远程容灾复制、广域网流量优化等,结合主机端提供的软件比如RecoverTrac、HyperTrac、快照代理、VMware SRM接口等,可以形成数据存储和管理的全系列解决方案。

飞康产品的定位在根本上与其他几家不太相同,其定位于一个综合数据服务平台(IPStor平台)和相关解决方案,不仅仅是销售设备,更重要的是利用虚拟化设备来形成各种方案来应对各种应用场景,解决上述的一系列问题和痛点,比如数据迁移服务,用户需要的不仅仅是一台设备,更是整个迁移方案和实施。飞康更像是一个独立的第三方软硬件方案提供商。

IBM SVC在虚拟化的基础上,提供快照和自动精简配置以及远程复制,属于中规中矩类型的产品。而EMC vPlex则主打双活数据中心,在本地存储方面没有太多可圈可点的差异化技术。其实IBM 现在很少单独销售SVC,而且将其打包成v7000/6000存储系列销售,似乎还是走不出传统存储的影子,而EMC VPLEX的低价策略,使其几乎成为了打标利器,除了镜像以外,其他相关数据服务能力都要靠它旗下的其它产品搭配实现,而存储厂商之间的斗争,也使得vPlex走上帮助EMC逐步赶走用户端其他品牌存储产品的道路,基辛格对vPlex倾注的一腔热血,最终沦为这番下场,实在让人感慨。

存储虚拟化技术在这个新的IT时代之下,仍将持续发挥巨大作用。