举个具体点的例子,在传统的磁盘阵列中,不同容量的磁盘是无法混和使用的,而用户的实际情况往往是前面买了18GB的磁盘,等到扩容的时候,只有73GB的磁盘可选了。面对这种尴尬,很多用户只好选择重新调整部属自己的应用,甚至干脆放弃先前的设备。而虚拟存储技术则可以把不同时期购买的不同容量的磁盘,甚至是不同设备上的磁盘,统一起来使用,而服务器就像使用一个设备一样的使用它们。这样,服务器就不需要再关心,哪个文件放在哪个磁盘阵列上这种问题了。治理问题在服务器上被大大的简化了! 虚拟存储的另外一层含义是设备使用方式的转化,这应该更接近“虚拟”这个词的本意。所谓“虚拟”就是假的,模拟的,而不是真实的。在网络的虚拟世界中,人物身份是虚拟的,战斗武器是虚拟的,武功魔法是虚拟的,连交友联姻都是虚拟的!简直是虚得一塌糊涂。好在虚拟存储倒还没有那么虚,只是在设备的使用形式上做了些手脚而已:明明是磁带,却被当作磁盘使用;明明是磁盘,却被当作磁带;明明是TCP/IP的网络连接,却虚拟成了SCSI连接……如此种种的虚拟技术,其目的除了方便上层服务器简单统一的使用之外,还在于扩展现有设备和技术的应用范围和领域。 例如磁带设备,在传统的系统中,只能被当作顺序读写设备使用,这就注定磁带上无法形成类似磁盘的文件系统,也就无法摆脱其离线存储的宿命。而今经过虚拟存储技术这么一虚拟,磁带摇身一变成了可随机读写的块设备,也就堂而皇之的加入了在线存储的队伍。 实际上,早在虚拟存储这一概念还没有产生之前,一些虚拟技术就已经普遍应用了,甚至可以追溯到遥远的MS-DOS年代。接触过MS-DOS这一古老物种的人一定还记得,当时磁盘的访问速度非常低,而且磁盘的频繁读写会造成硬件的损伤(磁头阻尼悬浮技术当时还没有产生),于是MS-DOS系统提供了一种RAM-DISK技术,即将一部分内存模拟成磁盘,用户可以对这个本不存在的磁盘进行格式化和拷贝等操作,由于实际上是内存对内存的操作,RAM-DISK的访问速度明显比真实磁盘高很多,而且不会造成磁头的频繁移动。 另外一个典型的例子就是卷治理软件。许多操作系统平台上都有一种甚至多种卷治理软件层,常见的有AIX平台上的Volume Group,Solaris平台上的Volume Manager,平台上的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. 说实话,这个定义并没有对虚拟存储的概念,给出清楚而精准的描述。依照这个定义,许多现有的技术,仍然难以确定是否属于虚拟存储领域。这个定义更主要的意义是在于,它为虚拟存储概念设定了一个相对固定的范围。但愿各个厂商能够遵守这一规定范围,不会将虚拟存储的概念进一步扩大。虚拟存储三大问题在一个模糊的定义下进一步讨论虚拟存储显然是十分困难的。为了言之有物,我们主要讨论三个基础性的问题: 虚拟的对象是什么? 在什么位置进行虚拟? 如何虚拟? 第一个问题比较轻易回答。虚拟存储所虚拟的对象就是一些存储资源,磁盘、磁带、文件、文件系统、数据块等等,这些统统包括在内。其虚拟的结果就是虚拟磁盘、虚拟磁带、虚拟文件、虚拟文件系统、虚拟数据块等等。可以看出,虚拟存储的对象并不一定是物理的设备,而可能是一些纯逻辑的对象。实际上,虚拟存储即可以将物理设备虚拟成物理设备,也可以将物理设备虚拟成逻辑对象。 随着技术的发展,甚至出现了将逻辑对象虚拟成物理设备的技术,例如将一个逻辑分区虚拟成一个物理磁盘。当然,从逻辑对象到逻辑对象的虚拟技术也在发展中,但相对而言,这部分的技术难度较大,而且目前的需求并不十分迫切,所以类似把一个文件系统虚拟成另外一个文件系统之类的技术,进展还非常缓慢。 第二个问题的回答也不困难。虚拟是一个处理过程,这个处理过程一定是在主机和存储设备之间完成的。那就只可能有三个位置:主机、存储设备和存储网络。事实上是,在三个位置上都有相应的虚拟存储技术存在,根据处理所在的位置,虚拟存储技术被分为“基于主机端的虚拟存储”、“基于存储设备的虚拟存储”以及“基于存储网络的虚拟存储”这三种类型。