王大鹏 刘 飞 王 建
1(辽宁师范大学计算机与信息技术学院 辽宁 大连 116081)2(大连医科大学现代教育技术中心 辽宁 大连 116044)
一种基于Windows操作系统的存储虚拟化在线扩展技术
王大鹏1刘 飞2*王 建2
1(辽宁师范大学计算机与信息技术学院 辽宁 大连 116081)2(大连医科大学现代教育技术中心 辽宁 大连 116044)
云计算、大数据等传统应用系统中的存储系统往往以虚拟化的形式运行在开源的Linux平台上,随着存储虚拟化技术不断成熟并向多元化发展 ,用户同样需要基于Windows平台的存储虚拟化服务。针对这些需求,提出一种基于Windows操作系统平台提供存储虚拟化服务的软件,可实现在Windows操作系统中创建虚拟的本地磁盘供用户使用,磁盘中的数据以条带化的形式平均分布在底层各个物理磁盘上。该软件基于海量存储网络系统TH-MSNS,在存储区域网SAN环境中为用户提供虚拟磁盘服务并支持在线容量扩展。通过测试后证明,条带卷在进行在线扩展时可以保证前台应用不中断,并且能够快速准确地完成大规模的数据迁移。当用户需要扩充虚拟磁盘的容量时,使用此项技术既可保证虚拟磁盘的可靠性又可提高扩容之后的读写性能。
存储虚拟化 存储区域网 在线扩展
当前信息技术在各项科研领域中均发挥着重要作用,在处理大规模数据应用时往往考虑使用云计算技术,而自身的存储系统服务质量直接影响着海量数据的高效流转、数据挖掘的精准定位等应用。面对科研工作中越发庞大复杂的大数据应用,在选择存储系统结构时可以考虑使用带外结构的存储区域网SAN,利用异构的底层设备与高速网络相结合,将数据流与控制流相分离,此举可以减少管理节点的带宽压力并大幅提高数据传输效率。
云数据中心作为科研工作当中的重要依托,以存储虚拟化系统作为主要的底层存储环境。利用SAN的优势,可将原有存储设备融合到新的存储系统中来,通过统一的元数据服务器集中管理所有物理磁盘,达到将磁盘资源高度整合并合理高效利用的目的;在需要对虚拟磁盘进行容量扩展时,如何实现透明化的磁盘扩容,从而保证前端应用不受影响就显得十分重要。在实际使用过程中,Linux系统的局限性已逐渐体现出来,而Windows系统仍然是当今应用最为广泛的操作系统,正是基于这个需求,本文提出了基于SAN环境,可应用于Windows操作系统的存储虚拟化软件VA(Virtualization Agent)。该软件作为存储虚拟化系统TH-MSNS[1]的一部分,能够在Windows系统中形成一个虚拟的盘符,数据以条带的方式分布在底层物理磁盘。利用带外结构的优势[1],通过高速网络完成数据从应用层到底层的传输。在虚拟磁盘由于空间所限需要容量扩展时,利用条带卷在线扩展技术,可以实时地完成大规模数据迁移,并同时扩展虚拟磁盘的容量和性能。扩展的同时还能保证业务不中断并保证数据的完整性。
当前,Windows操作系统仍然是市场主流,在云计算、大数据应用越发广泛应用的背景下,众多的科研工作者在处理数量与日俱增且体积越发庞大的海量数据时同样需要使用海量存储系统,但之前的此类应用大多基于Linux系统,因此迫切需要在Windows平台上找到使用存储系统的办法。近年来,随着技术的不断发展,成本的不断降低,大家对存储虚拟化技术的认知度也越来越高,对存储虚拟化系统的诸多特性,特别是实用性、可靠性、节能等方面的需求也越来越多。
目前市面上,IBM、EMC、HP等主流厂商的存储虚拟化产品,经过长期的研发和实践,确实积累出各自独特的技术优势,但也存在一些例如兼容性差,操作繁琐等缺陷,在实际使用过程尤为明显。硬件方面过于依赖单一厂商、单独品牌的磁盘设备,各自厂商的虚拟化产品各行其道,必须使用专用的存储虚拟化软件与专门的磁盘驱动程序相配合才能正常工作。单一型号的存储控制器只能配套安装指定型号的磁盘阵列,若要进行升级必须控制器和阵列同时更新,利旧困难,容易造成硬件资源的严重浪费。长此以往不利于用户对存储系统的后续升级,从长远考虑,对用户整个存储虚拟化系统的可持续发展都极为不利。
本文提出的基于Windows平台的存储虚拟化软件VA可以有效地避免上述情况的发生。因为在使用过程中,TH-MSNS具备良好的兼容性和扩展性,能够兼容和整合原有设备上的物理磁盘和HBA卡,提高虚拟存储系统升级后整体的可用性。虚拟磁盘服务和相关的基本功能都在Windows操作系统的内核态实现,因此不存在硬件兼容性差导致资源不可用的问题。当用户需要对现有存储系统进行扩展时,无论Windows中的本地磁盘还是存储系统本身,都不必考虑现有环境中的磁盘属性,直接将新购入的磁盘阵列并入到当前系统中,并在软件中实现盘符的扩容。这样用户在购买新的存储设备时就有了更多的选择,不必受单一品牌限制,减少了额外的购置成本。
2.1 系统架构设计
VA主要由三大部分组成,如图1所示:用户态的通信模块(AUI)、内核态的驱动模块(MAGICDISK)以及与元数据服务器的通信模块。AUI作为用户使用虚拟磁盘的入口,负责系统的启动与关闭,连接应用层与底层设备的通信;MAGICDISK模块作为虚拟磁盘的驱动程序,工作在Windows系统内核的驱动栈中间层,虚拟磁盘的创建与部署、 I/O访问从逻辑卷到物理磁盘的地址映射,以及实现虚拟磁盘的各种额外功能都由MAGICDISK模块负责完成。通信模块负责转发来自元数据服务器MDS(Meta Data Server)的各项功能指令,并将执行结果实时反馈[2]。
图1 系统架构设计
作为虚拟磁盘的核心部分,MAGICDISK模块与Windows内核态当中的挂载管理器(Mount Manager)、I/O管理器以及I/O系统服务相配合。当元数据服务器发出指令后,可在Windows系统中建立一块虚拟磁盘并将其挂载到指定的盘符上,整个过程对用户完全透明,用户无需考虑该盘符所在的磁盘设备的具体属性,所有与底层磁盘有关的操作全部在驱动程序中完成。AUI是基于C++开发的图形界面软件,负责在SAN环境下从元数据服务器接收存储虚拟化指令并向下转发到内核态,包括虚拟磁盘到物理磁盘的地址映射表以及其他相关的配置信息等。将接收到的所有指令通过IOCTL机制转发到MAGICDISK模块,并将底层设备的执行结果实时向上反馈,通过用户态和内核态同时确认的有效机制确保数据和服务的完整性。此外还可以实时监控当前虚拟磁盘的性能指标。
2.2 通信机制简介
用户在虚拟盘符上的每一步操作都会产生一个新的I/O请求,在Windows系统中,这些I/O请求都是以IRP(I/O Request Packet)的形式存在的,实际上任何Windows系统驱动程序的编写都是围绕着IRP进行的。虚拟磁盘上运行的应用程序都来自用户态,在发出I/O请求后再由Windows内核态打包成IRP的形式交给驱动程序处理。在MAGICDISK模块中,要将新生成IRP进行从逻辑到物理的地址映射,并将处理结果发回给MDS。在IRP结构中设有专门的数据缓存区,用来存放指令交互过程中的逻辑地址映射信息,将本次请求的地址信息归纳成一份完整的地址映射表。这样下次访问同样的地址空间时就可以直接从缓存中读取相应的地址[3]。在此过程中,由用户态的AUI模块新建一个专用线程负责指令的交互。虚拟磁盘中I/O的通信流程如图2所示。
图2 通信机制
当用户态发出I/O请求后,首先由AUI模块负责接收,同时把请求的逻辑地址和相关配置信息写入IRP缓存区,为保证数据正确性,此时会将这段逻辑地址置为等待状态,类似于暂时冻结这段逻辑地址的所有属性,鉴于现在CPU的运算速度极快,这段时间可以忽略不计。然后MAGICDISK模块从IRP缓存区中读取请求的逻辑地址和映射表,完成逻辑地址到物理地址的映射关系。无论是数据更改还是映射表更改,都会先由AUI从MDS接收当前的映射表,再更新IRP的缓存区,通过IOCTL机制向下发送给MAGICDISK模块。读取映射表后,还需要经过校验,确保本次映射操作的准确性,验证无误后方可完成本次映射,再使用IOCTL将正确的结果发回MDS。
2.3 工作原理分析
传统的逻辑卷普遍采用串行I/O的方式,线性划分存储空间,在容量和性能上都存在局限性。条带化的逻辑卷采用并行I/O,如图3所示,分段划分磁盘空间,类似RAID 0。条带化是指在存储虚拟化系统中,将一块虚拟磁盘中所有数据所在的逻辑地址段分块,以条带的方式,按一定顺序划分到若干个物理磁盘上,实现在同一时刻,从多个物理磁盘上并发读写数据。采用这种方法能够明显提高磁头的寻道效率和I/O的吞吐率[4]。较之传统逻辑卷的串行I/O,在大规模的数据运算过程中,条带卷的并行I/O能够大幅地提高读写性能。
图3 条带卷与传统的逻辑卷结构对比
对于每一次地址映射,每当用户态的I/O请求传递到驱动程序时,首先将IRP以条带化的形式进行拆分[5]。在请求的首尾逻辑地址范围内,以条带数为单位,先将主IRP拆分成几个子IRP,这些子IRP由链表READ_SPLIT_LIST统一维护。在该结构中,等待列表(pendinglist)负责访问控制,将待处理的IRP挂起;环锁开关(spinlock)负责维护数据一致性;完成列表(completelist)负责保存子IRP的计算结果。MAGICDISK从子IRP中获取拆分后的逻辑起始地址和映射长度。在映射表中,用Area域表示底层物理磁盘信息,子IRP分别负责在各自的Area域完成逻辑地址向磁盘扇区的地址映射操作[6]。子IRP每完成一个映射,完成列表completlist就递增,相应的等待列表pendinglist就递减。最后,所有子IRP都完成映射后,释放READ_SPLIT_LIST链表,同时将计算结果返回父IRP,至此完成本次I/O请求。条带卷的并行I/O处理流程如图4所示。
图4 条带卷的并行I/O处理流程
2.4 在线扩展技术的具体实现
存储虚拟化本身具备灵活的空间扩展功能,结合Windows系统的磁盘工具可以很方便地对盘符进行扩展。当需要扩充条带卷的容量时,需要将部分数据从原有的条带迁移到新的条带中去,在此过程中,由VA与MDS进行数据交互来保证服务不中断。通过“写时请求”的方法,实现数据迁移和I/O访问同时完成[7]。条带数增加后,虚拟磁盘在容量上得到了扩展,I/O带宽的增加提高了磁盘的性能,条带上数据的重新分布也随即完成[8]。
条带卷在线扩展技术的具体实现过程如图5所示。在数据迁移的过程中用模式切换的方法来保证数据的一致性。在扩展指令发出以前,即平常状态下,MAGICDISK模块保存一份原始的虚拟磁盘总体映射表,用户态的I/O访问都通过该表完成地址映射,这里称为CACHE模式。
图5 在线扩展技术的具体实现过程
当条带卷需要在线扩展操作时,首先由MDS发出扩展指令,由于涉及到数据的重新分布,当新的I/O到来时,MAGICDISK中原有的映射表信息已不再准确。此时,再次到达虚拟磁盘的IRP就需要归入特殊的队列统一处理。采用“写时请求”的方法,即对于每一个实时到达的I/O访问,先从IRP中获取逻辑起始地址,并封装为请求映射信息包REQUEST,在AUI模块中将请求包发送给MDS,MDS接收到请求包后,先查找当前与之对应的最新的映射表信息,并将其封装为返回包RESPONSE,通过AUI发送回VA。随后,MAGICIDISK模块根据当前获得的最新映射表信息完成本次映射操作,这种方式称为NOCACHE模式。与CACHE模式相比,NOCACHE模式时每一次I/O访问都需要与MDS进行通信。
存储虚拟化的各项功能特性对用户都是完全透明的,在扩展时,数据迁移的过程对用户必须是无感知的,因此映射表的准确性和可用性就尤为关键。在NOCACHE模式下,为了保证每次映射都准确无误,即使当前I/O访问请求的逻辑地址与上一次完全相同,也必须重新向MDS端发送请求,这样才能保证数据的准确性。在此过程中,频繁通信不可避免地会造成一定的性能损失。当数据迁移完成后,MDS端完成了磁盘元数据信息的重新分布,这时再为扩展后的条带卷保存一份新的总体映射表,再重新切换回CACHE模式,至此所有I/O访问就根据这份最新的映射表完成后续的地址映射。
测试系统采用Windows Server 2008 R2,先为用户创建一个由2个条带组成,容量为200 GB的条带卷,即每个条带100 GB。在操作系统中生成一个新的盘符并格式化为NTFS文件系统。在该盘符中写入若干文件,或者安装并实时运行一个程序,并提取MD5校验码。在正常使用时,进行磁盘容量的扩展,由MDS发出指令在原来基础上再为其扩展2个条带,使总容量扩充到400 GB,磁盘运行一段时间后,再增加4个条带,并在磁盘管理器中做相应容量调整,使总容量扩充到800 GB。为验证效果,使用测试工具IOMETER进行扩展期间的性能测试,测试数据块的阈值为64 KB~16 MB。分别测试在该条带卷上顺序读和顺序写的性能,指标包括I/O读写带宽(柱形图)和I/O平均响应时间(线形图)。根据测试结果,对比条带卷在进行在线扩展前后的性能差异,为了保证磁盘的可用性,最后还需要通过MD5对照文件是否正确。
测试结果如图6和图7所示,可以看出,条带卷在经过扩展之后,I/O的读写性能显著提高,I/O平均响应时间明显变小,并且,条带扩展得越多性能提升越明显,并且文件校验无误。实验证明,条带化的虚拟磁盘经过在线扩展的过程后,首先能够保证已有文件的正确性,并且程序能够正常运行;其次,条带卷不仅能够在容量上得到在线的扩充,而且在性能上还得到了显著提高。
图6 条带卷在线扩展时顺序写的性能测试结果
图7 条带卷在线扩展时顺序读的性能测试结果
面对科研工作中对存储虚拟化系统在多样化平台运行的需求,给出了一种能够应用在Windows操作系统的存储虚拟化软件VA。该软件基于存储虚拟化系统TH-MSNS,通过在Windows操作系统的内核态开发驱动程序,可实现虚拟磁盘的基本服务和许多功能特性。经过测试证明,该软件可在Windows平台下提供稳定可靠的虚拟存储服务。使用条带化的虚拟磁盘,将数据平均分布在底层物理设备上,运用在线扩展技术可以保证虚拟磁盘中的正常业务不中断,并实现虚拟磁盘从容量到性能的双重扩展。
[1] 舒继武,薛巍,李必刚,等. 一种高可扩展存储网络系统TH-MSNS的研究与实现[J].计算机学报,2005, 28(3):326-333.
[2]ZhangGuangyan,ShuJi-wu,XueWei,etal.DesignandImplementationofanOut-of-bandvirtualizationsystemforlargeSANs[J].IEEETransonComputers, 2007, 56(12): 1654-1665.
[3] 陕光,凌玲,胡于进. 内存映射文件在提取有限元模态结果中的应用[J]. 计算机应用,2012, 32(5):1429-1431,1435.
[4] 孙志卓,张全新,李元章,等. 连续数据存储中面向RAID5的写操作优化设计[J]. 计算机研究与发展,2013, 50(8):1604-1612.
[5] 雷立群.WDM在全软件数控系统中的应用研究[J]. 机床与液压,2014 (22):158-160.
[6] 张美玲,张刚.Java调用DLL实现读写磁盘扇区[J].计算机工程与设计,2013, 34(4):1451-1461.
[7] 宋丽娜,戴华东,任怡. 基于海量数据存储系统多级存储介质的热点数据区分方法[J]. 计算机研究与发展,2012, 49(z1):6-11.
[8] 黄冬梅,杜艳玲,贺琪. 混合云存储中海洋大数据迁移算法的研究[J]. 计算机研究与发展,2014, 51(1):200-205.
AN ONLINE EXPANSION TECHNOLOGY OF STORAGE VIRTUALIZATION BASED ON WINDOWS OPERATING SYSTEM
Wang Dapeng1Liu Fei2*Wang Jian2
1(CollegeofComputerandInformationTechnology,LiaoningNormalUniversity,Dalian116081,Liaoning,China)2(ModernEducationalTechnologyCenter,DalianMedicalUniversity,Dalian116044,Liaoning,China)
Cloud computing, large data and other traditional applications in the storage system is often the form of virtualization to run on the open source Linux platform, as storage virtualization technology continues to mature and diversify, users also need Windows-based storage virtualization services. Aiming at these requirements, this paper presents a software based on Windows operating system platform to provide storage virtualized service, which can be used to create virtual local disk in Windows operating system. The data in the disk is evenly distributed across the underlying physical disks in striped form. The software is based on the mass storage network system TH-MSNS, in the storage area network SAN environment to provide users with virtual disk services and support online capacity expansion After testing, it proves that the striped volume can guarantee uninterrupted foreground application and carry out large-scale data migration quickly and accurately. When users need to expand the capacity of the virtual disk, the use of this technology can guarantee the reliability of the virtual disk can also improve the read and write performance after expansion.
Storage virtualization Storage area network Online-extension
2016-04-21。2015年度辽宁省教育科学“十二五”规划课题(JG15DB104)。王大鹏,讲师,主研领域:计算机网络。刘飞,助理工程师。王建,高级工程师。
TP333
A
10.3969/j.issn.1000-386x.2017.05.004