一个典型的例子就是卷管理软件。许多操作系统平台上都有一种甚至多种卷管理软件层,常见的有AIX平台上的Volume Group,Solaris平台上的Volume Manager,Linux平台上的LVM等。这些卷管理软件的功能就是模拟物理磁盘的结构,把多个磁盘组或者多个磁盘条带组织起来,虚拟成一组统一的数据块集,这样操作系统就可以统一而方便的使用所有的磁盘了。这类软件的工作机制和管理思想,是现今虚拟存储技术的一个重要组成部分。
说了这么多,到底什么是虚拟存储的确切定义呢?这个问题真是很难回答。原本虚拟存储技术是作为存储管理的一个子集产生的,但是发展到现在,其目的方向已经扩散得非常广泛。有些部分是为了提高存储系统性能,有些部分是为了提高系统容量,有些部分是为了改变设备使用方式,有些部分甚至是针对存储安全发展出来的。如此内容庞杂,头绪众多的技术概念,一时间还真是无法精准的描述。
尽管如此,总结一些虚拟存储的共同特性还是可以做到的。总体上看,虽然虚拟存储的目标包罗万象,但是实现手段却相对集中。我们不妨可以将虚拟存储技术看作一门武术流派,虽然演练者的目的各不相同,有为强身健体,有为×××雪恨,但是其基本套路却大致相同。虚拟存储的套路以“抽象”、“模拟”、“隐藏”和“整合”这四个方面为主。抽象就是提取各种存储技术和存储设备的共性,将多个资源抽象成为单一资源;模拟就是突破传统技术的限制,将一种资源模拟成为另外一种资源;隐藏就是将设备或服务等资源的无关特性细节屏蔽,从而隐藏资源的部分或全部特征;整合就是通过组织,将不同类型的资源整合成为一种资源。
现在,我们可以看一看国际存储工业协会对虚拟存储这一概念的定义。为了不带入笔者的误解和局限,这里引用的是原文。在定义之后,国际存储工业协会的技术委员会还补充了一个例子,用以进一步补充说明这个颇富诗意的定义,这里也一并引用了。
Storage Virtualization:
1 - The application of virtualization (q.v.) to storage services, devices or resources that results in storage services, devices or resources.
2 - The act of abstracting, hiding, or isolating the internal function of a storage (sub) system or service from applications, host computers or general network resources.
Example: Using virtualization to provide storage and data management that is transparent to users, applications or network; Using virtualization to group different block storage systems into one or more virtual storage pools.
说实话,这个定义并没有对虚拟存储的概念,给出清晰而精准的描述。依照这个定义,许多现有的技术,仍然难以确定是否属于虚拟存储领域。这个定义更主要的意义是在于,它为虚拟存储概念设定了一个相对固定的范围。但愿各个厂商能够遵守这一规定范围,不会将虚拟存储的概念进一步扩大。
虚拟存储三大问题
在一个模糊的定义下进一步讨论虚拟存储显然是十分困难的。为了言之有物,我们主要讨论三个基础性的问题:
虚拟的对象是什么?
在什么位置进行虚拟?
如何虚拟?
第一个问题比较容易回答。虚拟存储所虚拟的对象就是一些存储资源,磁盘、磁带、文件、文件系统、数据块等等,这些统统包括在内。其虚拟的结果就是虚拟磁盘、虚拟磁带、虚拟文件、虚拟文件系统、虚拟数据块等等。可以看出,虚拟存储的对象并不一定是物理的设备,而可能是一些纯逻辑的对象。实际上,虚拟存储即可以将物理设备虚拟成物理设备,也可以将物理设备虚拟成逻辑对象。
随着技术的发展,甚至出现了将逻辑对象虚拟成物理设备的技术,例如将一个逻辑分区虚拟成一个物理磁盘。当然,从逻辑对象到逻辑对象的虚拟技术也在发展中,但相对而言,这部分的技术难度较大,而且目前的需求并不十分迫切,所以类似把一个文件系统虚拟成另外一个文件系统之类的技术,进展还非常缓慢。
第二个问题的回答也不困难。虚拟是一个处理过程,这个处理过程一定是在主机和存储设备之间完成的。那就只可能有三个位置:主机、存储设备和存储网络。事实上是,在三个位置上都有相应的虚拟存储技术存在,根据处理所在的位置,虚拟存储技术被分为“基于主机端的虚拟存储”、“基于存储设备的虚拟存储”以及“基于存储网络的虚拟存储”这三种类型。
其中基于主机端的虚拟存储,几乎都是通过纯软件的方式实现的。这种实现机制不需要引入新设备,也不影响现有存储系统的基本架构,所以实现成本很低。但是其难以克服的困难是平台依赖性太重,开发商要为每一种操作系统平台甚至每一个版本,开发一套软件产品,其劳动量是可想而知的。而基于存储设备的虚拟技术虽然有效率高,性能好等特点,但是在现实中,几乎所有的厂商都只提供对自身产品的支持,其开发性大打折扣。基于存储网络的虚拟技术目前还处于起步阶段,一些独立厂商已经涌现出来,这些厂商即不生产主机,也不提供磁盘阵列或磁带库等存储设备,专门提供面对开放存储网络的虚拟存储产品。虽然在现阶段这些产品或在性能方面,或在安全性方面,存在一些问题,但是其开放性的优势是这一类产品得以发展的强大动力所在。
第三个问题看起来也不深奥,但是当我们试图回答时,却发现无从说起。实际上这个问题的提出,是为了引出对虚拟存储的一个分类标准。根据实现的机制,虚拟存储可分为“带内”和“带外”两种基本类型。这两种类型的区别就在于,实现虚拟的过程是否与正常的数据读写过程同时进行。更具体的说,带内虚拟技术,是在数据读写的过程中,在主机到存储设备的路径上实现虚拟存储;而带外虚拟技术,是在数据读写之前,就已经做好了虚拟工作,而且实现虚拟的部分并不在主机到存储设备的访问路径上。因此,带内虚拟技术也称为“同步虚拟”,而带外虚拟技术自然就称为“异步虚拟”。
打个比方说,如果我们把虚拟过程看作汽车上路的缴费过程,那么带内虚拟就相当于在公路上设置收费站,司机不上路就不需要缴费,而一旦上路,就必然要通过收费站,也就是在上路的同时缴费。而带外虚拟技术像交管所,司机在上路之前就已经在交管所办理了缴费手续,然后才可以上路,但是并不一定在缴费之后就马上上路,而且在公路上飞奔的汽车也不需要穿过交管所。明白了这个蹩脚的比喻,又看了图示的说明,下面这个结论就很容易得出了:带内虚拟技术,可能是基于主机实现的,可能是基于存储设备实现的,当然也可能是基于存储网络实现的,而带外虚拟技术则只能是基于存储网络实现
蓬勃发展的虚拟存储
虚拟存储技术在3年的时间里已经取得了堪称辉煌的成就。其中的磁带虚拟、磁盘资源管理、跨卷多级管理等技术,已经发展出了一大批相当成熟的产品和解决方案,并逐步完善和丰富着今天的存储系统。随着厂商、用户和技术标准机构各方面,对这一技术方向与日俱增的关注,相信这一领域一定会长出累累的硕果。
转载于:https://blog.51cto.com/mcjohan/810391