本文为《信息存储》杂志2006年7月号文章,版权归作者及DoSTOR所有,未经许可请勿转载!
1.序言
存储虚拟化产品分为软件和硬件两大类,这种划分体现在存储硬件厂商和软件厂商的区分上,存储厂商一般根据各自所掌握的核心技术来提供自己的虚拟存储产品。随着国内外厂商包括所有存储巨头和一些新的存储创业公司不断推出各式各样存储虚拟化的产品,存储虚拟化市场已经非常热闹,但也显得比较混乱。
我们可以看到不同厂家、社团和媒体对存储虚拟化的阐述:
- 存储虚拟化源于虚拟内存技术,是内存管理技术向外存储系统管理中的迁移;
- 虚拟存储概念源于大型机,是大型机领域的有效软件工具向开放系统渗透的结果;
- 存储虚拟化是一种新的革命性的概念;
- 虚拟化是网络存储发展的必然,是网络存储环境下不同存储系统优化和管理的必要工具;
- 根据在I/O路径中实现虚拟的位置,虚拟存储分为三种方式:服务器端的虚拟存储,网络设备端的虚拟存储,存储子系统端的虚拟存储;
- 根据控制和数据路径(拓扑结构)的不同,存储虚拟化分为对称(或叫带内in-band)与不对称(或叫带外out-of-band)两种方式。
这些解释有助于我们理解虚拟化技术,并消除了存储虚拟化神秘色彩:指出存储虚拟化早就在我们身边,存储虚拟化原来是一种非常熟悉技术的变种。
然而,存储虚拟化是一种复杂的技术,它的内在工作机制是非常复杂的,这些解释不能使我们对存储虚拟化进行全面地理解。
本文试图从整体上揭开存储虚拟化混乱的面纱,回答“存储虚拟化是什么”与“存储虚拟化能做什么”这两个最基本的问题,并讨论存储虚拟化的现状和未来。
2.市场混乱的原因
造成存储虚拟化市场的混乱的主要原因是由于不同厂家隐藏物理存储复杂性和提供新的存储资产逻辑视图策略的不同所导致的。存储虚拟化技术为物理的存储设备提供逻辑抽象,它屏蔽了存储系统的物理特性,为存储用户提供逻辑的虚拟存储视图。存储虚拟化在物理存储和逻辑存储之间提供了一个抽象层,抽象可以发生在服务器、存储网络或存储系统中,可以采用带内或带外方式实现。不管采用何种方法,每种情况下都没有任何标准要求如何来实现存储虚拟化。尽管SNIA对存储虚拟化提出了基本的概念、术语和技术框架,由于缺乏标准化的共识,存储虚拟化甚至成为厂家标新立异的沃土。
其它的存储虚拟化市场混乱的原因是由于存储厂家将存储虚拟化的方法与虚拟设备提供的服务混淆在一起。例如,有些厂商利用存储虚拟化作为一种销售策略,如虚拟磁带库,用一台PC加上虚拟化软件,将磁盘阵列变成虚拟磁盘库销售,这样一台磁盘阵列“增值”了,然而,目前主流的备份软件中都包括了专门的虚拟磁带(硬盘备份)软件,用户可以通过软件在磁盘/阵列上创建虚拟磁带库,这种虚拟磁道库对支持虚拟磁带的备份软件来说并没有更多的好处,反而增加备份系统复杂性和成本。又如,许多虚拟化厂家的文章着重描述了诸如快照(时点拷贝)、数据复制、存储容量分配与利用、支持异构磁盘阵列统一管理等辅助服务,这些存储服务采用存储虚拟化得到了加强,但并不非必须依赖存储虚拟化,采用其它方法也可以实现。
因此,必须将“存储虚拟化是什么”与“存储虚拟化能做什么”两个问题分开讨论才能全面理解存储虚拟化。
3.存储虚拟化是什么?
虚拟存储技术将底层存储设备进行抽象化统一管理,向服务器层屏蔽存储设备硬件的特殊性,而只保留其统一的逻辑特性,从而实现了存储系统集中、统一而又方便的管理。对比一个计算机系统来说,整个存储系统中的虚拟存储部分就像计算机系统中的操作系统,对下层管理着各种特殊而具体的设备,而对上层则提供相对统一的运行环境和资源使用方式。
SNIA(存储网络工业协会)对存储虚拟化是这样定义的:通过将一个(或多个)目标(Target)服务或功能与其它附加的功能集成,统一提供有用的全面功能服务。典型的虚拟化包括如下一些情况:屏蔽系统的复杂性,增加或集成新的功能,仿真、整合或分解现有的服务功能等。虚拟化是作用在一个或者多个实体上的,而这些实体则是用来提供存储资源或服务的。
事实上,存储虚拟化分布于存储网络中的各个地方。基于主机的虚拟化软件提供独立于存储网络的互连能力和存储资源,但必须一个服务器范围内进行管理;基于存储设备的虚拟化能够利用厂家存储的特定功能和特点,但缺乏异构存储环境的互操作能力;采用应用形式或居留于交换机中的基于存储网络的虚拟化提供虚拟功能的集中,但为了防止出现元件失效需要采用冗余来提供高可用性。
在目前,存储虚拟化这个术语不是应用在单个的物理元件上,而是更多地应用在系统上。例如,RAID是一个最小的存储虚拟化形式,它将复杂的物理磁盘作为单一逻辑实体提供出来。RAID屏蔽了单个磁盘的复杂性,存储系统背板的机械特性,同时提高了系统的性能和数据的恢复能力。但是,RAID不是什么新技术,不能引起客户的注意和挑起用户购买的欲望,而存储虚拟化却可以做到这点。系统级的存储虚拟化将抽象层扩展到了多个磁盘阵列,不仅隐藏了多个物理硬盘的复杂性,而且隐藏了整个物理存储子系统的复杂性。智能的虚拟化代理简化了存储管理,扩大了逻辑抽象的潜在好处,并为加入更多的高级智能提供了基本条件。
可以用谢长生教授提出资源组合论来深入理解存储虚拟化,谢教授指出:在数字域内,任何信息设备和设施都是处理部件、存储部件、传输部件三者在不同规模、不同比例上的组合,具体组合的方式为系统结构+虚拟组合软件。
我们可以从如下几个方面来理解存储资源组合:
- (1)目的:形成虚拟的大容量、高性能、低成本、高可靠的存储器
- (2)空间分布和性能:越小越高、越近越高
- (3)控制权与安全性:集中控制安全性最高
- (4)不同的组合有不同的用途
例如,存储资源组合中最经典的组合—Cache和VM(虚拟内存):
- (1) Cache是SRAM与DRAM的组合:主存采用DRAM速度不够快,因此,使用更快(更贵)的SRAM做Cache,这样DRAM+SRAM看起来像一个又大又快的存储器,主存看起来更快。
- (2) VM是DRAM 与 DISK的组合:主存采用DRAM空间不够大,因此,使用更大(更便宜)的DISK做虚拟内存,这样DRAM+DISK看起来像一个又大又便宜的存储器,主存看起来更大。
可见,存储资源的组合就是存储系统结构+存储虚拟化,不同的存储系统采用存储虚拟化方法可以实现不同的存储资源的组合,当然,不同的存储资源的组合必然有不同的功能。
4.存储虚拟化能做什么?
今天,存储设备已经发展成具有负杂功能的存储系统,但用户不在仅仅关心容量和性能,更多的是关心功能和管理能力,这推动了存储系统的发展,更多的智能被不断地加入到存储系统中。存储虚拟化技术可以将许多高级智能加入到存储网络中的各个地方,例如数据备份和恢复功能、远程复制甚至数据迁移等功能。
存储虚拟化技术实现对不同结构的存储设备进行集中化管理,用户可以将存储设备集中在一起形成一个存储池,这样,一个存储池中的所有存储卷都拥有相同的属性,如性能、冗余特性、备份需求或成本;这样,可使一些重复性的工作实现自动化,例如,LUN管理;并且,基于策略的集中存储管理,简化了存储容量分配,提高了容量的有效利用,并且容量扩展非常容易。因此,存储虚拟化技术可以减少存储系统的管理开销、实现存储系统的数据共享、提供透明的高可靠性和可扩展性、优化使用存储系统。
同时,存储资源的自动化管理为用户提供更高层次策略的选择。在存储池中可以定义多种存储工具来代表不同业务领域或存储用户的不同服务等级。另外,还允许客户以单元的方式管理每一存储池内部的存储资源,根据需要添加、删除或改变,同时保持对应用服务器的透明性。基于策略的存储虚拟化能够管理整个存储基础机构,保持合理分配存储资源,高优先级的应用有更高的存储优先级,使用性能最好的存储,低优先级的应用使用便宜的存储。
例如,可以通过自动化策略来确保数据目录被存放在合适容量的存储设备中,并自动实现信息价值与存储成本的匹配。因为存储是虚拟的,而且目录树不再受到特定磁盘卷的限制,所以可以根据用户定义的策略,将某一给定应用或主机系统生成的文件存储到任何可用的存储备中。用户可以自己设定相关文件管理条件,如自动存放数据,自动将文件从一个存储设备转移到另一个存储设备,或彻底删除这些文件。
基于策略的智能为应用感知(Application Aware)的存储虚拟化的提供了先决条件。例如,存储虚拟化通过监控数据类型,能够根据特定应用存储需求更准确地对数据组织进行调整和优化。如将视频数据写到更高性能的磁盘上最外面的磁道上,让在线事务处理受到最高等级的快照的保护。
最后,由于存储虚拟化在存储网络中增加了许多的智能,应用程序可通过存储虚拟化API接口指出自己的存储需求,并执行相应的存储策略。跨越抽象层的功能可使存储系统实现基于策略的自动化管理,对应用感知的和面向应用的虚拟化可将网络存储转化为一个更加通用的和更易管理的存储系统。
5.全面的虚拟化需要真正的耐心
然而,目前尚无一种存储虚拟化技术具有如此丰富和综合的功能,存储虚拟化的最终美景仍然在虚拟现实之中。当前各式各样的存储虚拟化产品完成了这种理想方案中的一个点或一个面,但与虚拟技术本身丰富的功能和成熟的潜力相比仍处于幼年期。
独立于厂家和设备的虚拟存储技术可能仍需要许多的努力才能实现。目前的现状是,存储虚拟化产品确实已经得到了具体的应用,如采用实现存储虚拟化实现时点数据拷贝,但目前尚无一种方案满足不同客户的需求,在较短的时期内,存储虚拟化可能只是局限于个别功能的应用,用户仍很难选择合适的方法来满足特定的需求,用户采用存储虚拟化技术时仍需真正仔细的考虑,并进行实际应用测试。
围绕存储虚拟化的混乱反映了一个新技术发展的动力学过程,市场将对各种虚拟化方法的根据功能强弱进行筛选,因此,期待实现全面的存储虚拟化的用户需要真正耐心。
另外,我们还应知道:存储虚拟化技术虽然有很多优点,但缺点也很明显:它需要专门的元数据管理和资源管理设备,这些设备需要通过冗余保证其可用性,这会增加系统的复杂性和增加系统的总拥有成本;并且,不同性能、不同结构的存储设备位于同一个存储池,不能充分发挥各自的优势,性能较差的部件反而会制约整个系统的性能。