随着IT技术的发展,存储数据的爆炸式增加,存储的地位变得越来越重要;存储部分逐渐地从应用系统中分 离出来,形成了专门的存储系统,进而形成了专门的存储网络(SAN)。IT技术在经历了以处理器为核心和以传输技术为核心的阶段以后,目前已进入了以存储 技术为核心的发展阶段。考核一个存储系统的性能指标有很多,如容量、可扩展性、可伸缩性、可管理性、高可用性等,最重要是存储系统的容量。而通常增加存储 系统容量的方法有两种:
①增加存储设备;
②提高存储系统的容量利用率。
显然,提高存储系统的容量利用率是一种既不增加成本又可以增加容最的好方法。研究表明,在目前的存储系 统中,容量的利用率都很低,以传统磁盘存储为例,考虑到用户数据的不断增长,实际上平均40%-50%的磁盘容量从未被利用过,大量的、宝贵的存储资源被 浪费掉了,没有发挥应有的作用。同时为满足系统性能和以后升级扩容等方面的要求,客户一般购买超过实际数据容量需求3-4倍的磁盘,用于磁盘镜像等附加功 能,从而造成了存储空间资源的极大浪费。
这种现状的主要原因是:目前对存储资源的分配方法是静态的,即按照用户的估计(往往有很大余量),预先 把存储资源划分成分区或卷,而后以分区或卷为单位将存储资源分配给用户。在以后的使用过程中,分配给用户的存储资源中会有很大一部分长期处于闲置状态。更 糟糕的是这些闲置的资源无法被其它用户使用,从而造成了存储容量利用率低下的现象。如果能够采用动态的方法按需分配存储资源,毫无疑问,将会极大地提高存 储资源的利用率,从而在不增加成本的情况下增加存储系统的容量。而要采用动态的、按需分配的方法就必须将存储系统虚拟化,即采用存储虚拟化技术。
1 存储虚拟化技术
1.1存储虚拟化技术概念
传统的存储虚拟化就是将存储网络(sAN)中各种分散的、异构的存储设备映射成一个单一的连续编址的逻 辑存储空间或一个虚拟存储池(virtual storagep00l),并将虚拟存储池的访问接口提供给应用系统。
该映射操作是由存储虚拟化中问件SVM(storage virtuali—zation middleware)来实施的,SVM屏蔽了所有存储设备的物理特性,由此,存储网络(SAN)中所有存储设备对主机透明,主机只与分配给它的逻辑卷打 交道,就像访问本地逻辑存储单元LUN(logical unit number)样访问虚拟存储池,其结构如图1所示。
图1 存储虚拟化结构
1.2存储虚拟化的实现方法和方式
存储虚拟化主要涉及3个基础性的问题:
①虚拟的对象;
②进行虚拟的位置;
③虚拟的实现机制,如图2所示。在存储系统中,虚拟的对象主要有磁盘、磁带、文件系统、数据块、数据记 录等,我们则集中考虑物理存储设备(如磁盘、磁带等)的虚拟化问题。
图2 虚拟对象位置及机制
目前虚拟存储的发展尚无统一标准,从系统的观点来讲,有3种主要的存储虚拟化的方法枷:基于主机的虚拟 存储;基于存储设备的虚拟存储;基于网络的虚拟存储。由于基于不同的实现层次,3种存储虚拟化方法各有特色:基于主机的虚拟化软件提供独立于存储网络的互 连能力和存储资源,但必须一个服务器范围内进行管理;基于存储设备的虚拟化能够利用厂家存储的特定功能和特点,但缺乏异构存储环境的互操作能力;采用应用 形式或居留于交换机中的基于存储网络的虚拟化提供虚拟功能的集中,但为了防止出现元件失效需要采用冗余来提供高可用性。从发展趋势看,基于主机的和基于存 储的虚拟化技术目前已经相对成熟,而网络虚拟化是一种新的技术,它独立于主机和存储设备,给用户带来了很大的灵活性,其未来的发展空间最大。
从存储虚拟化的拓扑结构来讲,有对称式和非对称式两种,根据实现机制又分为带内和带外两种基本类型。两 种方式的主要区别在于存储网络中数据FO与控制信息是否使用同一通道。对称式结构存储虚拟化(又称带内存储虚拟化),是指存储虚拟化控制设备,交换设备与 存储软件系统集成在一台专用的服务器中;非对称式结构存储虚拟化(又叫做带外存储虚拟化),数据和命令信息使用不同的通路,就是在存储区域网络中(或主机 系统以太网)设置专用于存储控制的服务器作为元数据控制器。
2 双层次存储虚拟化结构
2.1双层次存储虚拟化结构设计
在存储系统中采用虚拟存储的技术已经成熟,许多操作系统平台上都有一种甚至多种卷管理软件层,常见的有 AIX平台上的Volume Group,Solaris平台上的Volume Manager,Linux平台上的LVM(Iogical volume manager)等。这些卷管理软件的功能就是模拟物理磁盘的结构,把多个磁盘组或者多个磁盘条带组织起来,虚拟成一组统一的数据块集,这样操作系统就可 以统一而方便的使用所有的磁盘了。这类软件的工作机制和管理思想,是现今虚拟存储技术的一个重要组成部分。
利用虚拟化提高存储系统的容量利用率不是一个新的概念,事实上,在操作系统中已经成功地实现了内存的虚 拟化。在当前的操作系统(Windows、Linux、Unix等)中,不管实际的物理内存有多少,利用虚拟化技术,都可以为每个进程提供最大的虚拟内存 空间(在Inteli386体系结构中是4GB)。每个进程都会以为自己拥有全部的地址空间,而实际上它只占用了很小一部分物理内存。操作系统中的虚拟内 存管理器管理虚拟内存到物理内存的映射,它只为正在使用的虚拟页分配物理内存,而从不会给未用到的虚拟页分配物理内存,因而物理内存的利用率非常高。
将虚拟内存思想扩展应用到存储系统中,即将传统的存储虚拟化技术和虚拟内存思想结合起来,既可以实现存 储设备的虚拟化,又可以能够提高存储资源的利用率。
在存储系统中,虚拟化技术的作用主要有两个:
(1)屏蔽存储设备之间的差别,为用户提供一个统一的存储视图(存储池);
(2)按需分配存储资源,提高存储系统的容量利用率,为用户虚拟出大的存储空间(甚至能超过存储系统的 物理容量)。
第1点为存储系统虚拟化的第1个层次,第2点为存储系统虚拟化的第2个层次。第1个层次的虚拟化是初级 的虚拟化,但却是存储系统虚拟化的基础,它的主要目的是屏蔽存储设备之间的差别,构建一个统一的存储池;第2个层次的虚拟化是高级的虚拟化,是对第l层次 虚拟化的再虚拟化,它在第1个层虚拟出来的存储池的基础上,采用按需分配策略,为每个用户都虚拟出一个大的存储空间。显然,只有实现了第2个层次的虚拟 化,对存储系统的虚拟化才算是彻底的,也只有实现了第2个层次的虚拟化,才真正达到存储系统虚拟化的目的。
在目前的存储系统产品中,已经集成了虚拟化技术,如IBM的SVC(实现了基于主机的虚拟化),EMC 的lnvista(实现了基于存储网络的虚拟化),HDS的TagmaStore(实现了基于存储设备的虚拟化)等,但它们只做到了第1个层次,都没有实 现存储资源的按需分配。
在存储系统的发展中,存储虚拟化不再被看作是一个专门的产品,而是一个支撑存储容量和存储服务的基础平 台。实现双层次的虚拟存储虚拟化已对传统的存储虚拟化概念进行了扩展和丰富,其主要源于虚拟内存技术,是内存管理技术向外存储系统管理中的迁移:具体的实 现思路是:将虚拟内存管理的思想引入到存储系统的虚拟化中,在实现屏蔽存储设备异构性的第1层虚拟化的基础之上,实现第2个层次的虚拟化,如图3所示。
图3 双层次存储虚拟化结构
对于每个服务器,为其建立虚拟卷和逻辑卷之间的映射表,表示虚拟块到逻辑块(存储池中的块)的映射关 系,但不分配实际的物理存储空间,而是采用操作系统中常见的lazy思想,只有在实际需要时才为其分配;各个服务器看到的是满足各自容量需求的存储空间, 而这些存储空间实际上是在虚拟卷上建立的虚拟磁盘。服务器在使用的过程中,可以根据容量需求进行动态扩展,在存储池中逐步为其分配逻辑块,随之动态地建立 修改映射表。由于虚拟空间和逻辑空间在大小方面存在明显的差距,相似与用vMM(虚拟内存管理器)管理虚拟内存,则在此需要专门的映射策略和实现机制来管 理虚拟块和逻辑块之间的映射关系,以达到映射的正确性,快速性和安全性。
对于处于中间层的存储池,也需要在逻辑块和物理块(存储设备上的块)之间维护映射表,用于表示逻辑块和 物理块之间的映射关系。鉴于逻辑空间和物理空间大小基本一致,在建立逻辑卷时,在逻辑块和物理块之间通常有两种映射策略:
①线性映射:将把一定范围的物理块按顺序分配给逻辑卷;
②交错模式:将把逻辑块交错映射到不同的物理卷中。以Linux(2.6内核)系统中集成的逻辑卷管理 器(logical volumemanager,LVM)为例,VGDA(卷组描述符区域)功能相当于LVM的分区表,其中包含多种描述符信息,当系统启动逻辑卷 时,VGDA被加载至内存。VGDA帮助识别逻辑卷的实际存储位置,当系统想要访问存储设备时,由VGDA建立起来的映射机制就用于访问实际的物理位置来 执行I/O操作。
2.2双层次虚拟存储系统分析
在存储管理中广泛采用虚拟内存的实现机制,其构成的虚拟存储系统具有以下特点:
(1)能够将不同的存储设备整合成一个统一的存储池,屏蔽各种存储设备之间的差别;
(2)实现了存储空间的按需分配,提高了存储系统的容量利用率;
(3)允许动态扩充存储空间(增加存储设备),存储空间的扩充对用户是透明的;
(4)允许虚拟卷的动态迁移,即在不影响服务器运行的情况下,将它的虚拟卷迁移到其它存储设备上:
(5)允许建立存储控制策略,并自动按照存储策略为用户分配存储空间,保证满足用户的需求(如性能要求等);
(6)支持按设备、按应用、按虚拟卷的备份;
(7)能够在不同层次的存储设备之间动态、有序地移动数据,方便信息存储周期管理(ILM);
(8)便于数据的自动归档;
(9)便于管理。
尽管双层次的存储虚拟化可以屏蔽存储设备的异构性,提高存储资源的利用率,但它同样带来了新的缺陷。由于虚拟化需要把存储系统的一种视图映射到另一种视图,如双层次存储虚拟化结构中需要保持物理块和逻辑块以及逻辑块和虚拟块之间的双级映射,所以必须保存这种映射的持久性拷贝。这种驻守的数据通常叫做元数据。通常,元数据存在多个副本,如何保持元数据的一致性是十分关键的问题。同时,每种文件系统和存储设备都需要维护元数据,元数据的维护在异构跨平台的虚拟存储化中存在着许多问题,如何保存和维护元数据则需要进行深入的研究和探讨。
3 结束语
双层次存储虚拟化结构解决了存储空间使用上的浪费问题,它把系统中各个分散的物理存储空间整合起来,应用Device Mapper机制形成连续编址的逻辑存储空间,之后利用虚拟内存的管理思想将逻辑存储空间映射成虚拟存储空间,实现了存储资源的动态分配和管理,极大的提高了存储资源的利用率,降低了用户TCO(总体拥有成本),增加了用户的ROI(投资回报)。
双层虚拟存储结构是基于网络的虚拟存储,主要考虑在专用的元数据服务器上实现,因此在如何呈现对上层的透明性,避免单点失效以及双层映射的高效性等方面需要进一步的研究和设计。