“虚拟”是新千年里最为流行的词语,人们常常会接触到虚拟现实、虚拟医院、虚拟图书馆、虚拟大学等等。还有虚拟的宠物、虚拟博物馆、虚拟角色、虚拟……
虚拟,《美国传统辞典(双解)》的解释是虽然没有实际的事实、形式或名义,但在实际上或效果上存在或产生的。
在信息技术领域,数据存储是最早应用虚拟这个概念的。早在十几年前存储系统就被描述为虚拟磁盘机。随后针对磁盘组或者多个磁盘条带的逻辑卷管理、虚拟磁带机和虚拟磁带也陆续进入应用领域。虚拟在存储领域的发展目标就是虚拟在线存储。
什么是虚拟存储呢?单纯从虚拟的概念上来讲,对一个对象的虚拟就是创建一个新的对象使其具备其源对象的重要属性和特征,而不是源对象的完全的“拷贝”。那么存储设备的公共基本特征是什么呢?标准的数据存储设备包括了磁盘、磁带、磁带机等。它们公共的本质特点就是能够永久地保存数据,并保障数据能够被用户调用。其它的非公共特征还包括了设备的大小、能量消耗、性能指标、存储容量等。这些特征根据设备的不同而不同,单是其公共特征并没有随着设备不同而改变。因此虚拟存储就是整合各种存储物理设备为一整体,提供永久保存数据并提供能被用户调用的功能,即在公共控制平台下存储设备的一个集合体。
虚拟存储设备在物理上并不村在,它只是在计算机中表现出同类物理存储设备的特性,并按照这些特性相应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)的虚拟。