1 引言
存储虚拟化是基于存储区域网SAN(Storage Area Network)架构下的高端存储解决方案,将应用服务器通过光纤高速网络与磁盘阵列相连接,可以透明化地为用户提供大容量、高性能的虚拟存储设备,存储虚拟化将异构的物理存储设备整合为统一的存储池,以映射表的形式为用户的虚拟存储设备划分存储资源,并将物理存储资源以虚拟卷的形式呈现给用户,用户将虚拟卷格式化文件系统后即可进行跟普通逻辑卷一样的I/O操作,而这些I/O操作都要通过虚拟化地址映射来传达到底层的物理存储设备。
由于组建SAN环境需要购置昂贵的网络设备以及存储设备,对于企业级用户来讲,怎样合理高效地利用现有的存储资源,从而最大化地发挥SAN系统易扩展和高性能的优势就显得尤为重要,存储虚拟化的按需分配技术正是针对这个问题而提出的一种解决方案,以用户对虚拟存储设备的实际需求为出发点,并不一次性地为其分配所有存储资源,而是针对用户对虚拟卷的具体使用情况,动态地为其分配存储资源,当用户对虚拟卷的利用率普遍较低时,可利用该技术优势使当前存储资源能够最大限度地满足更多用户对虚拟存储的需求。
在现有的存储资源动态分配技术中,virtual allocation采用一种灵活的存储空间分配策略,将空间分配与文件系统分离开来,可以在Linux环境下使不同的文件系统之间共享存储资源,利用写时分配的策略使实际的物理空间随上层应用对逻辑空间的使用情况逐渐增长;NetApp推出的Flex-Vol,在物理存储设备与上层逻辑设备之间虚拟出一个中间层设备,由独立或多个节点共同管理虚拟卷,可以实现存储空间按需分配以及资源共享,使用虚拟分支网络创建二级元数据缓冲区,可以减小对元数据存储池的访问压力,此外,存储管理系统还可以从FlexVol卷中回收释放掉的空间并及时更新映射信息,然而virtual allocation仅面向Linux平台的本地文件系统,例如EXT2、EXT3等,FlexVol仅面向NetApp专用操作系统DATA ONTAP支持的文件布局方案WAFL两种技术目前均未提出支持Windows平台本地文件系统FAT32或NTFS的解决方案。
基于Windows平台的存储虚拟化软件需要为虚拟存储设备开发内核态的驱动程序以及用户态的通信接口,本文给出了一种可在Windows操作系统上实现存储虚拟化按需分配功能的客户端软件VA-for windows,该软件隶属于带外存储虚拟化系统TH-VSS(out-of-band Tsinghua-VirtualizationStorage System),由元数据服务器MDS(MetaData Service)创建一种名为TP-vol(Thin-Provision Volume)的虚拟卷,利用按需分配的思想,在存储池中动态分配存储资源,虚拟卷的驱动程序基于Windows内核驱动开发套件WDK提供的编程接口开发,利用该驱动程序,可在SAN环境下为用户提供具备按需分配功能的虚拟卷,即按需分配卷,在Windows操作系统中,按需分配卷以一个新逻辑分区的形式呈现给用户,支持FAT32和NTFS文件系统,实验结果表明,与普通虚拟卷相比,按需分配卷虽然对I/O性能稍有影响,但可以有效地减少磁盘空间的占用,有利于Windows用户在部署存储虚拟化系统时更加合理高效地利用现有存储资源。
2 系统设计原理
2.1 按需分配原理
传统的普通虚拟卷,一般由线性分配的元数据信息一次性构建而成,这样的分配策略会使已经分配的存储资源变得不可复用,当用户的逻辑空间使用率很低时就会造成存储资源的浪费,也难以满足更多用户的存储需求。
在TH-VSS中,按需分配卷的理论大小与普通虚拟卷完全一致,但它的元数据信息并不是一次性划分的,而是由若干段小规模的映射表组合而成,这里的空间划分粒度是由存储虚拟化系统中的元数据服务器MDS根据按需分配卷的理论大小划分的,通常情况下,MDS只为按需分配卷先预先分配一段单位大小的存储资源,当这部分存储资源无法满足当前用户的逻辑空间需求时,MDS再为其继续分配下一段存储资源的映射信息,由此,存储虚拟化系统就可以利用当前剩余的存储资源来创建更多按需分配卷,从而满足更多用户的存储需求。
2.2系统设计
存储虚拟化系统按需分配功能设计如图1所示,系统由元数据服务器MDS,客户端软件VA-forwindows以及磁盘阵列组成,三者由光纤通道相互连接组成带外SAN架构,其中MDS负责从磁盘阵列中整合存储资源并从中为按需分配卷分配存储空间,构建逻辑地址与物理地址之间的映射关系,即映射表,VA-for windows 作为存储虚拟化系统的客户端软件,由AUI和MAGICDISK两个模块组成,用户态的AUI模块负责从MDS接受虚拟化指令和映射表,并通过IOCTL与内核态进行信息交互;虚拟卷驱动模块MAGICDISK在内核态负责接收来自AUI的虚拟化指令,并利用映射信息构建元数据存储池以创建虚拟设备,即按需分配卷,在此基础之上定制I/O访问规则并完成逻辑地址到物理地址的映射,采用这种用户态与内核态相结合的体系结构,将驱动程序中的通信请求从异步的I/O队列中分离出来,由用户态集中处理通信请求和指令交互,控制指令与数据传输相分离,可以有效地减小通信压力,更好地发挥带外SAN架构高速度、高带宽的性能优势。
当按需分配卷创建完毕后,AUI继续完成与MDS以及MAGICDISK的双向交互,随着用户对按需分配卷的继续使用,会在MAGICDISK模块产生新的逻辑地址请求,AUI向上使用socket接口与MDS进行用户态的通信,向下使用IOCTL利用同步事件消息机制与MAGICDISK进行内核态的通信,将这些新的逻辑地址请求从内核态传递到用户态,并反向接收新的映射表,同时,AUI对存储虚拟化软件的运行状态进行实时监控,并为用户提供友好的使用界面。
图1按需分配功能系统设计
在Windows系统的驱动栈中,虚拟卷驱动模块MAGICDISK是位于文件系统驱动程序与物理磁盘驱动程序之间的中间层驱动程序,配合Windows系统的I/O管理器共同处理来自虚拟卷的I/O请求,针对按需分配卷对映射信息要求的特殊性,MAGICDISK要在驱动程序中维护特定的元数据存储池,负责保存当前按需分配卷中所有已使用逻辑地址的映射关系,当新的逻辑地址请求到来时,MAGICDISK将其通过用户态的AUI发送至MDS以获得对应的映射表,并将该映射表整合到原有的元数据存储池中。
2.3 结构设计
普通虚拟卷的映射表一般是静态分配的,即该映射关系涵盖了整个虚拟卷的全部内容,它的缺陷就在于,当存储资源一次分配给用户之后,该段空间内的所有磁盘空间就不可再次分配,当用户对虚拟卷的利用率较低时,就会造成存储资源的浪费;而按需分配卷的映射表是动态分配的,映射信息以链表的形式维护在驱动模块的元数据存储池中。
如上页图2所示,在按需分配卷的结构设计中,TP_PRIVATE域作为索引结构引导映射信息SEG_LIST域,可将其看作元数据存储池的索引表,Segment结构包含已经分配的逻辑起始地址及长度,Area包含了与其对应的物理地址及偏移长度,因此从结构上Segment与Area是一一对应的关系.当新的映射关系到来时,将其中新的逻辑地址、物理地址以及索引信息添加进对应的链表结构中。
图2 按需分配卷的结构设计
3 存储资源按需分配的实现
3.1 按需分配功能实现流程
在存储虚拟化客户端实现按需分配卷,首先从MDS获取当前指定的物理磁盘和虚拟存储设备等相关信息,MAGICDISK通过该信息在Windows系统的内核态申请命名空间并创建新的逻辑设备,再由挂载管理器MountMgr将虚拟卷挂载到系统的某一个盘符上,这一实现过程对用户是完全透明的,当用户启动存储虚拟化软件后,可直接访问到一个新的逻辑分区,并且这个逻辑分区的大小为用户申请的存储空间大小,此时用户不必了解存储虚拟化系统到底为该虚拟卷分配了多少磁盘空间。
当用户对虚拟卷进行格式化文件系统或运行应用程序时,对于按需分配卷来讲都是连续或随机的I/O逻辑地址请求,当I/O请求从文件系统向下传递时,由I/O管理器将其封装为IRP(I/ORequest Package)结构,并在Windows系统的驱动栈中逐层向下传递,各层的驱动程序都可以根据需要对该IRP进行相应的处理,最终将IRP传递到底层的磁盘驱动程序中。
3.2 通信机制
在内核态的MAGICDISK模块中,每当产生一个新的逻辑地址请求时,都需要新生成一个IRP并发送给MDS,用户态的AUI模块开辟专门的线程负责请求的中转。在IRP结构中有专门负责数据交互的缓冲区,利用这个缓冲区可以在发送请求时存放逻辑地址的数据包,在接收映射信息时读取新分配的映射表。
通信的流程如图3所示,首先由MAGICDISK模块发起请求,将逻辑地址写入IRP的缓冲区,并同时激活用户态的等待事件,此后AUI从IRP缓冲区中读取请求消息包,随即通过socket发送给MDS,接收消息时,先由AUI从MDS接收到映射表,再将其写入IRP的缓冲区,通过IOCTL向下发送给MAGICDISK,此时内核态的驱动模块从该IRP的缓冲区中读取映射表,验证无误后完成本次映射操作。
图3 通信流程
由于Windows系统在内核态是以异步的方式处理IRP队列的,而上面介绍的通信方法一次只可完成一个逻辑地址请求,这样通信过程可能会成为系统的瓶颈,因此,我们采用聚集(batch)的方法,在MAGICDISK模块中预先收集一部分来自驱动程序的逻辑地址请求,然后统一放入IRP的缓冲区中一次发送,此时就可从MDS处一次获得多个请求的映射信息,再以异步的方式完成相应的映射,从而提高数据收发的效率。
3.3 按需分配卷I/O流程
当IRP传递到MAGICDISK驱动模块时,首先从中提取本次请求的逻辑起始地址和长度,并在索引结构中进行查找,若找到对应的映射信息则直接向下传递完成本次映射;否则就要向MDS获取新的映射信息,将IRP的逻辑地址和长度封装为TP_REQUEST形式的消息包,与此同时启动消息事件标识通知AUI开通MDS与MAGICDISK之间的通信通道,AUI将接收到的消息包发送给MDS,当MDS为新的逻辑地址请求动态分配完存储空间后,会将该段映射表以发还给AUI,此时AUI再将其向下传递到MAGICDISK模块,此时驱动程序就得到了本次请求的映射关系,在完成映射的同时还要同步更新元数据存储池以保证数据的一致性,若下一次到来的逻辑地址请求可以在元数据存储池的索引表中找到,则直接调用该段映射表完成映射而不必再次发送请求。
图4 按需分配卷的I/O流程
由于按需分配卷的映射表是由多个地址段所组成的,因此在进行IRP映射时可能会出现一个IRP的逻辑地址请求会跨多个映射地址段的情况,此时需要MAGICDISK将该IRP分割为若干个子IRP,待所有子IRP完成各自的映射之后再将其合并,子IRP的映射过程与上段描述的过程是一致的,按需分配卷的I/O流程如上页图4所示。
4 性能评价
4.1测试环境
测试环境使用的应用服务器操作系统为Windows Server2003 SP2 R2; 配置为Quad-Core AMD Opteron( tm) Processor2378 2.4GHz x8 CPU,内存16G,Qlogic ISP2532( 8Gb /s) 光纤卡; 磁盘阵列为Infortrend S12F-G1433 SCSI,应用服务器通过光纤网络与MDS以及高级磁盘阵列相连接,组成带外SAN环境。
4.2 性能对比测试
第1组测试通过性能对比来说明按需分配卷对I/O性能的影响,测试时由TH-VSM分别创建大小为100GB和1TB的按需分配卷,同时创建与其容量相同的两个普通虚拟卷做性能对比,均格式化为NTFS文件系统,分配单元大小为4096Byte,测试工具使用IOMETER,采用随机读写的方式,其中随机读写的比例为读占80%,写占20%,读写块大小为64KB~4MB,收集I/O带宽以及平均响应时间的数据,对比结果如图5和图6所示。
图5 I/O带宽以及平均响应时间对比情况( 100GB)
对于100GB的按需分配卷,MDS为其分配的映射地址长度较短,从图5可知,当读写块大小小于1MB时,在元数据存储池中进行的索引查询能够较快地定位目标元数据映射信息,此时对I/O带宽和平均响应时间的影响很小;当读写块大小大于1MB时,由于请求的逻辑地址长度需要跨越多个元数据地址段,需要对IRP进行进一步的拆分与合并,此外随机I/O访问同样会造成一定的性能损失,因此在图中会看到比较明显的I/O性能影响.对于1TB的按需分配卷,MDS为其分配的映射地址长度较长,由图6可知,对于绝大多数的读写I/O访问,其请求的逻辑地址长度都在一段元数据地址映射长度范围内,依靠元数据存储池自身的缓存机制能够有效地减轻自身的访问压力,采用实用的通信策略和便捷的索引机制,可以快速地完成虚拟卷到物理磁盘的地址映射,因此I/O的读写块大小越大,按需分配卷的I/O性能优势就越明显。
图6 I/O带宽以及平均响应时间对比情况(1TB)
4.3 存储资源节约效果测试
第2组测试验证按需分配卷的存储资源节约效果,创建100G的按需分配卷,格式化为NTFS文件系统,分配单元大小为4098Byte,在其上进行顺序写操作,直到将逻辑空间基本写满,随着逻辑空间的增长,其对应的物理空间也会随之增长,观察这一过程中存储资源的分配情况。
图7 按需分配卷的存储资源节约情况
从图7可以看出,当逻辑空间的利用率较低时,按需分配卷可以节省出大量的物理磁盘空间,例如在进行NTFS快速格式化后总共占用了96M的逻辑空间,此时虚拟化系统为其分配了120M的物理磁盘空间,随着用户在按需分配卷上对逻辑空间的继续使用,MDS为其分配的存储资源也随之线性增长,只有当用户将逻辑空间基本写满时,MDS才会为其分配等量的物理空间,总体上来说,用户对逻辑空间的利用越少,按需分配卷为存储虚拟化系统节省的物理磁盘空间就越多,由上文可知,有些I/O访问的逻辑地址可能会跨越多段映射表,因此需要为其多分配一些地址段以满足I/O请求的映射操作,因此从图中可以看出,实际分配的物理空间会稍多于逻辑空间。
5 结论
企业级用户在部署存储系统时,由于受到设备预算的限制,往往只能购买容量有限的磁盘阵列,多使用原有的线性分配策略,不仅会造成存储资源的浪费还会造成大量不必要的能量消耗,使用按需分配的存储策略,可以利用当前有限的磁盘空间满足更多用户的存储需求,只有当用户的逻辑空间请求超出当前的物理空间范围时,才需要管理员再次购买磁盘设备,由此可以达到降低初次采购成本的目的。
本文给出了一种具备按需分配功能的存储虚拟化客户端软件VA-for windows,在带外SAN环境下能够为Windows用户透明化地提供虚拟存储设备,测试结果表明,与以往使用静态分配资源的虚拟卷相比,使用按需分配卷虽然在性能上稍有影响,但节约物理空间效果明显,且具有良好的可用性和可靠性,在保证数据一致性的基础上,可以有效地为存储系统节省物理磁盘空间,提高存储资源利用率。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/