本文首发于《信息存储》2006年度专辑上,未经许可,谢绝转载。
“虚拟”是新千年里最为流行的词语,人们常常会接触到虚拟现实、虚拟医院、虚拟图书馆、虚拟大学等等。还有虚拟的宠物、虚拟博物馆、虚拟角色、虚拟……
虚拟,《美国传统辞典(双解)》的解释是虽然没有实际的事实、形式或名义,但在实际上或效果上存在或产生的。
在信息技术领域,数据存储是最早应用虚拟这个概念的。早在十几年前存储系统就被描述为虚拟磁盘机。随后针对磁盘组或者多个磁盘条带的逻辑卷管理、虚拟磁带机和虚拟磁带也陆续进入应用领域。虚拟在存储领域的发展目标就是虚拟在线存储。
什么是虚拟存储呢?单纯从虚拟的概念上来讲,对一个对象的虚拟就是创建一个新的对象使其具备其源对象的重要属性和特征,而不是源对象的完全的“拷贝”。那么存储设备的公共基本特征是什么呢?标准的数据存储设备包括了磁盘、磁带、磁带机等。它们公共的本质特点就是能够永久地保存数据,并保障数据能够被用户调用。其它的非公共特征还包括了设备的大小、能量消耗、性能指标、存储容量等。这些特征根据设备的不同而不同,单是其公共特征并没有随着设备不同而改变。因此虚拟存储就是整合各种存储物理设备为一整体,提供永久保存数据并提供能被用户调用的功能,即在公共控制平台下存储设备的一个集合体。
虚拟存储设备在物理上并不村在,它只是在计算机中表现出同类物理存储设备的特性,并按照这些特性相应I/O请求。用户的数据操作在虚拟存储设备上完成,并不需要关心后台实际的物理设备是什么,如何组织等等。任何种类的计算机存储设备和数据对象都可以被虚拟。下图描述了SNIA(存储网络工业协会)制定的虚拟存储和数据对象分类。图中第一行表示了虚拟的对象,中间表示在系统的那一层实现虚拟化,底层表示虚拟的具体技术选择。在本文后面将详细阐述每一层次的内容。
虚拟存储的意义
数据存储设备用户基本上都是从性能、可用性、价格和易于管理几个方面评测存储设备。虚拟存储在这四个方面都能有效地提升存储系统的性能。
I/O 性能:数据访问和传输速度越来越多地决定了计算机应用的质量。比如说,如果数据不能够按照视频媒体播放器的要求速度传递到客户端,那么视频点播系统就不可能实现;如果信用卡数据库信息不能够及时更新,那么整个金融服务体系将会陷入混乱。虚拟技术可以通过“Stripe”实现数据地址在多个存储设备上带状分布和拆分实现并行的读写,最终达到整个存储系统面向应用的整体I/O性能的提高。
可用性:信息化的社会越来越要求信息系统能够在7*24的条件下保持在线状态。系统故障引起的应用服务的不顺畅给企业和个人带来的损失和不便将越来越不能容忍,尤其是在重要的部门和行业,如能源、交通、公共安全、金融等,数据的价值已经不能够估量。他们对存储系统得可用性的要求比以往更高。虚拟技术可以通过镜像技术实现对单一数据在多个存储介质上创建副本防止因个别存储介质的损坏对整个系统得影响,确保系统的高可用性。
存储容量成本:着磁盘存储设备的价格降低,在各个领域存储系统的消费不断增加。但是由于对数据安全的要求的不断提高,镜像和远程数据复制迁移形式的虚拟存储应用增加更为迅速。从而存储容量成本依旧是一个重要的衡量因素。虚拟技术可以通过聚合多个存储设备的空间和根据不同服务器需要重新部署存储空间的分配实现现有存储空间的高利用率,避免不必要的设备开支。
可管理性:目前的普遍的信息技术应用都存在着随着系统复杂度的增加系统管理开销递增,以及由于系统管理原因造成的错误率的递增。一般来讲,管理成本已经达到了设备成本的5到10倍。因此管理开销也是对系统评估的一个重要的指标。高度集成,一体化的管理是最为理想的管理模式。虚拟技术可以将多个小设备整合成一个大设备,来降低直接被管理的设备数量。由此,提高了容错能力,降低故障率和恢复次数。
虚拟存储除了在以上四个作为存储系统基本的评估指标发挥积极作用外,在现实应用中,通过虚拟技术在如下十个方面体现了高效能的存储系统应用价值:
1. 提高存储空间利用率:虚拟化存储可以提高40%至50%的空间利用率,尤其是在为远端设置镜像存储时更加体现优势。
2. 灾难恢复:在没有虚拟存储前,数据复制迁移只能在对称的磁盘阵列或主机间进行。通过虚拟技术,复制迁移和镜像可以在不对称的设备间部署,不必要在容灾恢复端准备一个与主站同样的主机或者磁盘阵列。
3. 快速备份:通过文件系统得快照技术,虚拟存储系统可以避免由于在应用服务器代理软件和备份服务器的通讯产生的瓶颈。由于备份将给予快照,备份窗口可以任意选择,不受时间限制。
4. 数据移植:大部分的磁盘厂商都提供了特有的工具帮助在其自有平台的磁盘间移植数据。虚拟存储可是简单地实现在不同平台间的数据复制迁移。
5. 自动化的空间扩充:在综合的虚拟化系统中,预制的管理策略在分配给某个用户,如数据库,的存储空间用尽时自动调整空间分配为其扩容。
6. 在线基于磁盘的恢复:基于廉价的SATA阵列整合,管理员可以通过虚拟存储的快照功能在线地将系统恢复至错误发生前最近的时间点。
7. 服务应用程序测试:通过虚拟存储,某些给予实际数据环境的应用测试不必担心会破坏重要数据资源。虚拟系统可以通过复制迁移,为测试提供一个安全的数据平台。
8. 提高数据库性能:虚拟系统将数据库的hot files动态地置于某个solid-state磁盘上可以提高昂贵的solid-state磁盘的使用效率。
9. 高可用性:虚拟系统将IT系统的存储和服务切实地分离开来,一方面可以有效地单独对数据进行保护,在存储内部后台建立起容错机制;另一方面,也杜绝了应用端的错误对数据端的影响。
10. 在不同服务器平台间的有效资源共享:在一般的SAN中,Windows和UNIX的平台间数据共享和共存一直都是一个大问题。目前的SAN通过虚拟技术可以支持多文件系统在相同SAN中的共存。
虚拟存储的实现
如SNIA的虚拟存储的分类所示,一般把虚拟分成如下三类:基于主机或服务器的虚拟化、基于磁盘或磁盘子系统的虚拟化和基于网络的虚拟化。
基于主机层的虚拟化:
基于主机(应用服务器)上的虚拟化一般通过运行在存储管理软件加以实现。一般常见的管理软件如逻辑卷管理软件(LVM)。逻辑卷,一般也会用来指代虚拟磁盘,其实质是通过逻辑单元号(LUN)在若干个物理磁盘上建立起逻辑关系。逻辑单元号,Logical Unit Number(LUN),是在一个基于SCSI的标志符,用于区分在磁盘或磁盘阵列上的逻辑单元。
基于主机的虚拟化中,管理软件的作用就是向系统输出一个单独的虚拟存储设备(或者可以说一个虚拟存储池),事实上这个虚拟的存储设备后台有若干个独立的存储设备组成,只不过在系统看来他们是一个有机的整体。通过这种模式,用户不需要直接去控制管理这些独立的物理存储设备。当存储空间不够的时候,管理软件会从空闲的磁盘空间中映像更多的空间输出给系统,而系统看来它所使用的虚拟存储设备的空间在动态的增加,并没有影响到它的使用。由此可见,基于主机的虚拟化可以使系统在存储空间调整过程中仍然保持在线状态。另外一个优势体现在,通过虚拟可以实现主机上存储设备并行使用。但是,由于基于主机的虚拟实通过软件完成,因此会消耗系统CPU的使用周期,容易造成主机的性能瓶颈。同时,在每个主机上的虚拟化需要为每个主机单独安装软件,从某种意义上讲也就降低了系统的可靠性。
基于存储设备和存储子系统的虚拟化:
虚拟化技术也可以在存储设备内部或存储子系统内部加以实现。比如说磁盘阵列就是通过磁盘阵列内部的控制系统进行的虚拟,同时也可以在多个磁盘阵列间构建一个存储池。这种基于存储设备或存储子系统的虚拟通过特定的算法或者映射表把逻辑存储单元映射到物理设备之上。最终实现的就是卷独立于其所属的存储设备。根据采用的方案不同,RAID、镜像、盘到盘的复制以及基于时间的快照都采用了此类虚拟化。通过虚拟化,虚拟磁带库、虚拟光盘库等都得以在存储子系统中加以实现。
与基于主机的虚拟化不同,基于存储设备和存储子系统的虚拟化对其后台所使用的具体硬件的兼容性要求很高,需要参数相互匹配,因此在存储设备升级和扩容过程中需要受到某些限制。但是在存储子系统上的虚拟可以将存储和主机独立起来,不会过多地占用主机的资源,其积极意义就是可以使主机将其资源有效地运用在应用服务上,消极意义就是很难和主机进行一体化管理,需要额外的管理开销。
基于网络的虚拟化:
基于网络的虚拟化是近来存储工业的一个发展方向。与基于主机和存储子系统的虚拟化不同,基于网络的虚拟化功能是在网络内部完成的。这个网络就是我们常常指的存储局域网络(SAN)。具体的虚拟功能的实现可以在交换机、路由器、存储服务器进行,同时也支持带内(in-band)或者带外(out-of-band)的虚拟。
带内虚拟
带内虚拟,常常也称作对称虚拟(Symmetric),是在应用服务器和存储的数据通路内部得以实现。在标准的设置中,在存储服务器上运行的虚拟软件允许控制数据(metadata)和需存储的实际数据在相同的数据通路内传递。存储服务器接受来自主机的数据请求,随后存储服务器会在其后台的存储设备中搜索数据(被请求的数据可能分布于多个存储设备中)。当数据被找到后,存储服务器将数据传送给主机,完成一次完整地请求响应。在用户看来,带内虚拟存储服务器好像是直接附属在主机上的一个存储设备(或子系统)。
带内虚拟存储具有很强的协同工作能力,同时可以通过集中的管理界面进行控制。同时,带内虚拟可以保障系统的安全性,比如说,攻击SAN系统的黑客很难有效地访问存储系统,除非他得到了和主机一样的卷分配方式。在服务器层面看,带内存储容易产生性能瓶颈。尽管许多销售商们在系统中加入了缓存机制来缩小延迟,但是响应时间依旧是在部署带内虚拟存储的一个重要考虑因素。目前,大部分的产品所采用的都是带内虚拟。
带外虚拟:
带外虚拟,又叫做不对称虚拟(Asymmetric),是在数据通路外的存储服务器上实现的虚拟功能。控制数据(metadata)和存储数据在不同的数据通路上传输。一般情况下,metadata存放在使用单独通路连接到应用服务器的存储服务器上,而存储数据在另外的通路中传递(或者直接通过存储网络在服务器和存储设备间传递)。带外虚拟减少了网络中的数据流量。但是一般需要在主机端安装客户软件,也容易受到攻击。
还有一些厂商在交换机和路由器上的固件或软件实现虚拟功能。还有的通过附属在交换机上的服务器得以实现虚拟。他们的基本原理就是尽量将虚拟的职能转移到网络层。交换机和路由器处于主机和存储网络的数据通路上,它们在中途可以截获主机发往存储系统的指令,并加以处理。
基于交换机或路由器的虚拟技术:
尽管基于交换机或路由器的虚拟技术还属于起步阶段,但是在未来也有可能发展成为替代目前的基于存储服务器的虚拟技术。基于交换机或路由器的虚拟技术的优势就是不需要在主机上安装任何代理软件,交换设备潜在的处理能力可能会比传统的模式提供更强的性能,不过这一切还有待发展。基于交换机或路由器的虚拟技术的另一个优势体现在安全性上,该层次比前面的虚拟应用对外来的攻击有更强的防护。其劣势主要表现在单个交换机和路由器容易成为整个系统的瓶颈和故障点。
几种常见的虚拟存储
虚拟磁盘和块:
磁盘和块虚拟是目前普遍使用的虚拟存储技术。磁盘机的虚拟一般通过物理磁盘机上的固件实现。块虚拟是通过控制软件为系统提供一个类似于磁盘机的虚拟设备,这个虚拟设备构建于一个或者多个物理磁盘机之上。控制软件向下协调所管理的物理磁盘设备的工作,完成系统和具体物理设备间的地址映像,性能平衡,以及一些其他的后台数据保护机制;向上对系统提供一个虚拟的块设备,系统无需关心具体的某个物理磁盘的管理和操作。块虚拟技术已经广泛地应用于RAID系统和虚拟的卷管理系统里面,随着网络存储的发展,也被广泛使用在网络存储系统中。与物理的磁盘机一样,虚拟的块设备也包括了若干的块,数据可以在其上离散地或者连续地读写。但是在物理上并不存在着这样一个设备,只不过在系统中看上去去管理软件为系统提供了一个磁盘机而已,对系统应用程序的读写请求的响应和真实的物理磁盘机一样。虚拟磁盘成功的重要原因就是不必修改应用程序就可以使用。任何软件,只要能够运行在物理磁盘上稳定运行,就可以在虚拟块设备上运行。
虚拟文件系统:
一般来讲,文件系统的虚拟可以通过两种方式实现。远端的文件服务器上的文件系统可以被客户端应用程序感知并在客户端计算机上使用。随着不断的发展,新的技术使单个文件服务器同时支持多种文件系统。不论上述任何方式,应用程序在访问文件的时候再也不需要关心文件具体的物理存储位置,本地或异地。同时系统管理员的工作也得到了简化,仅仅通过控制文件存储服务器就可以完成多个应用程序和应用服务器的文件数据管理。
虚拟文件:
等级式存储管理软件可以在一个文件系统内通过透明地移植非经常性访问文件到低速或者离线的存储设备上实现对文件的虚拟。通过这种方式,更加有效地自动化地实现信息生命周期管理的具体操作,并能够降低在线存储对空间的需求,提高备份的自动化和使用效率。
虚拟磁带介质:
由于磁带具有顺序读些的特性,在应用中磁带一直有着不可克服的问题。比如,删除磁带中的某些文件,就会在磁带中产生某些不可用的间隙,因此导致了在具体应用过程中仅对某些特定的单一数据集在单个磁带上保存,降低了磁带的使用效率。为了解决这个问题,大多数存储产品采用了在线存储空间作为缓存,用以模拟磁带媒体库进行备份和其他的应用。通过磁盘缓冲存储磁带数据大大地提高了介质的利用效率,减少了不必要的在磁带mount,unmount,重新定位等重复操作的时间消耗。从设备价格角度讲,也降低了磁带机硬件和磁带介质的需求量,以及管理他们的开销。
磁带介质的虚拟可以提高备份性能的可控性。大多数备份策略的缺陷就是在于磁带机的性能。传统的备份很难做到运行平顺,数据流的不稳定导致了磁带机反复地暂停和重新定位,尤其是这一系列操作基于网络进行的时候。用磁盘来虚拟磁带作为缓冲可以保障磁带机在备份过程中的运转顺畅。
虚拟磁带机:
存储网络的发展促进了虚拟磁带机的诞生。通过虚拟磁带机可以使一组磁带机简便地在多个服务器间实现共享。其最大的使用价值就是在实际应用中,每个服务器只有在进行备份的短暂时间内才会使用磁带机。为每台服务器配备专用的磁带机在大部分时间都是处于空闲状态。如果能够将每个应用服务器所属数据的备份时间交错开来,那么连接于网络存储设备上的磁带机就可以将其使用权在不同的服务器间传递。通过这种方式提高了磁带机的使用效率。这种模式的虚拟磁带机一般通过备份服务器和专用的存储网络交换机上的分布式软件实现。另外一种虚拟磁带机可以在后台将不同种类的物理磁带机进行整合,形成一个磁带机类型转换库,无论采用何种物理磁带机,在前台向系统提供一个单一种类的磁带机,提高系统得适应性,简化了系统管理配置的工作。
第三种虚拟带机的工作原理和虚拟块设备类似,由两个或者多个磁带机组成磁带机阵列,向系统输出一个虚拟的磁带机。通过这种方式可以增加整个磁带系统的读写性能和数据可用性。同时可以组成类似于RAID5的冗余存储模式,一般称作Redundant Array of Independent Tapes(RAIT)。
虚拟磁带库:
磁盘价格的降低带动了基于磁盘介质的存储应用的发展。整合虚拟磁带技术和虚拟磁盘机技术,以磁盘介质作为物理媒介建立起一套虚拟的磁带库,在系统的在线存储系统和离线存储系统(物理磁带库)之间提供一个大的缓冲。虚拟磁带库可以将数据使用频度的划分更加有层次性,一方面可以提高数据备份和恢复的速度,另一方面整个系统具备更加富有弹性的备份策略。
WORM
在计算机存储媒介中,WORM(单次写入,多次读取)是为了保障一些数据写入盘片后,防止被修改和删除,比如一些归档信息。长期以来,CD和DVD作为标准的WORM介质广泛地使用。众所周知,与磁带一样,CD和DVD也存在着标准化的问题,目前存在着多种存储格式标准,相互间的兼容性很差。和虚拟磁带技术类似,通过虚拟技术,可以实现多个应用服务器共享一个或一组WROM设备进行归档管理,也可以实现应用服务器通过公共的虚拟接口使用多种采用不同标准的WROM设备,另外就是可以实现基于磁盘介质的WROM设备。
版本文件系统:
版本文件系统是一般的虚拟文件系统的一个扩充,为用户在后台为每个文件进行版本管理。每个版本可以包括如下信息:修改时间点,修改人,权限的变更等等。如果某个文件被删除,它将被标志为“以删除”,长度为零。管理员根据需要将其恢复为止前的某个版本的文件状态。
小结
虚拟化技术在企业级存储中非常非常充分地体现其优势:优化了存储利用率,使得管理更加顺畅,提高了系统的可用性和整体性能,降低了存储系统的管理开销等等。从目前来讲,存储虚拟化依然缺乏高度的标准化,不同的虚拟产品之间的兼容性还有待进一步提高。作为一个正在发展的技术,还有很多新的应用有待发掘。当然在虚拟技术体现其优越性的同时我们也不能够忽视虚拟技术的一些潜在的问题,这样更会有利于虚拟技术向着智能化的方向发展。
案例分析
Compellent 数据分级管理(Data Progression)
Compellent SAN 系统通过虚拟技术在数据块层管理整合各种类型的磁盘资源,直接向应用系统输出一个空间可动态扩充的卷,最大化的利用有限的物理存储空间。并通过其特有的数据分级管理技术,利用虚拟化技术规避了不同种类磁盘和RAID设置之间的差异,并根据其性能价格比自动化地实现了最小化整个存储系统的开销。根据数据的被访问频率将数据在不同的数据存储层级间迁移。下面两幅图分别显示了数据向下级迁移和向上级反向迁移的情况。
ILM—-信息生命周期管理和DLM—-数据生命周期管理的目标都是在数据的生命周期内在不同的存储介质上调度和管理数据。它们的不同在于ILM通过
智能化地根据应用程序跟踪文件的内容。DLM着重于数据的移动。
根据业界的分析和SNIA统计,在信息系统中平均有80%的空闲数据。由此可见这些非活动数据可以转移至低性能的磁盘或阵列之上,如下图所示。因此,我们没有必要将全部的数据都长期占用高昂的高端设备。利用Compellent的数据分级管理可以自动地把空闲数据迁移至低速设备之上,将有限的昂贵的存储介质分配给高度频繁访问的数据块。
数据分级管理可以将卷构件于不同的种类、大小、速度的磁盘以及不同的RAID之上。数据分级管理通过监控I/O并根据数据访问模型将数据分布在不同的层级之上。
数据分级管理有效的平衡了不同种类的磁盘在价格和性能之间的差异,允许最大化地使用廉价的SATA磁盘作为主要数据存储截至,并有效地将高性能的Fiber Channel磁盘响应快速数据访问服务。
数据分级管理充分利用RAID10, RAID5等在不影响性能的条件下最大化可用存储量。高效地使用RAID5(9盘)结构能够比一般的全冗余RAID10节省40%的存储空间。系统分层矩阵结构如下图。
数据分级管理的价值
数据分级管理在保障I/O性能的前提下整合多种磁盘管理技术最大话存储空间利用率。
活动数据,未转入数据快照回放系统的数据,被存放在RAID10存储子系统能够中,保障快速的读写。通过这种方式保障了RAID10系统能够更有效的服务于多个卷的活动数据。
当数据被系统快照回放捕获处理后,很自然地转换成为只读模式。数据被迁移至RAID5存储子系统。RAID5可以保障快速的读操作。
快照系统捕获的数据如没有被重写或访问频度降低将被迁移到低速的廉价的存储介质上。
磁盘技术不断地提高速度和容量,数据分级管理使得用户能够灵活的使用最新的磁盘技术,同时能够保证不浪费原有的旧磁盘。随着数据在不同种类的磁盘上迁移,它们被不断地重新拆分。当用户增加新的磁盘的时候,新的写操作将动态地写在所有的同级磁盘之上,避免个别磁盘被过度地访问。
数据分级管理根据应用的实际需求动态地分配存储空间。在相同的数据层级上,数据分级管理将可用的存储资源分配给相应的RAID结构上,管理员无须人为地在不同的RAID上管理或移动存储。
订阅《信息存储》杂志请 点击此处链接