Windows平台下动态管理存储资源的通用方法

文档序号:6517205阅读:253来源:国知局
专利名称:Windows平台下动态管理存储资源的通用方法
技术领域
Windows平台下动态管理存储资源的通用方法属于存储区域网络领域,尤其涉及其中的虚拟化存储技术领域。
背景技术
存储区域网络(Storage Area Networks,SAN)技术是专门针对计算机存储领域的技术,具有高可靠性(High Reliability)、可延伸性(Extendibility)和高性能性(HighPerformance)等特点。虚拟化存储系统是在实际的物理存储设备基础上,虚拟出逻辑磁盘设备供文件系统使用,它被认为是可以简化管理大型、复杂、异构的存储环境的技术,它具有存储资源控制灵活,能够动态更改存储资源和数据镜像等功能。根据存储网络工业协会(SNIA)的定义,虚拟化技术要实现“使存储系统的实现同主机视图相分离的存储抽象”。一个更为具体的定义则是实现“模拟物理设备的产品或体系结构,并将模拟设备的特性映射到实际的物理设备”的存储技术。
SAN系统中的虚拟化技术可分为两类带内虚拟化(In-Band Virtualization)和带外虚拟化(Out-of-Band)。目前,StoreAge的Virtualization Manager,HP的OpenView StorageOperations Manager等都是带外虚拟化的实现方案方案,它们均采用了在应用服务器上的主机总线适配器(HBA,Host Bus Adapter)驱动上完成虚拟化功能。这种方法的实现位置较低,对应用服务器的操作系统的依赖性比较小。但是,他们必须要使用指定的HBA及相应的驱动程序。本文描述了一个Windows平台下带外虚拟化系统的设计实现方案。方案中虚拟化客户端软件在Windows系统的卷管理器(Volume Manager)级别实现虚拟化功能,使用标准的HBA和相应驱动。此外,方案中使用了专门的虚拟化服务器实现了对SAN系统的集中式管理。

发明内容
本发明的目的在于提供一种在Windows环境下实现分布式存储资源部署的通用动态方法。采用本方法可以在运行Windows操作系统的应用程序服务器上实现统一的基于卷的存储资源的动态管理,从而更加有效的利用网络存储资源。本方法的核心是在Windows操作系统的卷管理器级别,设计利用Windows系统的卷设备实现存储资源部署,将应用程序对虚拟设备的操作映射到物理设备上,同时屏蔽Windows操作系统的其他组件对物理存储设备的访问。同时通过设定存储资源管理服务器,统一管理存储系统的存储资源,决定虚拟化操作和行为,提供给存储区域网络(SAN)系统管理员一个统一一致的虚拟化存储视图和多种管理方式,实现基于Windows操作系统的虚拟化存储管理平台。
本发明的特征在于它是在由基于Windows NT的通过自身卷管理器级别实现存储资源管理客户端的应用服务器、通过基于TCP/IP的以太网和上述应用服务器连接的存储资源管理服务器、通过光纤通道卡和上述应用服务器、存储资源管理服务器相连的光纤交换机、和上述光纤交换机相连相连的网络磁盘共同组成的存储区域网络环境中实现的,所述的方法依次会有以下步骤步骤1建立模块结构客户端会有以下两个模块通信模块它是用户模式下的网络通信程序,它使用TCP/IP协议接收来自于存储资源g管理服务器也成分配服务器的虚拟华命令,然后据此命令调度下述的内核模块进行配置,并随后将执行结果返回给上述带外虚拟化服务器即存储资源管理服务器;内核模块它创建内核虚拟通信设备接收来自于上述通信模块的调度,根据命令和参数的不同采取不同的操作并把操作结果返回给上述通信模块,对基于NT技术的Windows操作系统的其他组件通过其附属的设备屏蔽模块去屏蔽底层物理设备,完成应用程序对虚拟卷的I/O操作到实际物理存储设备的映射,同时通过光线交换机对上述网络磁盘完成读写控制;所述的内核虚拟设备含有物理卷,用PV表示,它是存储资源分配或处理的对象,即单个的物理存储设备,每个物理卷都包含以下数据结构物理卷名称、通用唯一标识符即UUID,磁盘设备句柄,磁盘设备名以及下一结构对象指针,在内核模块中维护着一个描述所有物理卷的列表;逻辑卷,用LV表示,它作为内核模块所创建的设备对象为用户状态下的应用程序所见并可对其进行操作;它的数据结构包含有下一设备、驱动对象以及设备扩展的数据,所述的驱动对象数据含有设备对象和系统调用的数据,所述的设备扩展含有设备对象指针、地址信息表、任务队列和工作线程的数据,系统调用通过物理指针调用物理卷对象,设备扩展中设备对象指针调用下一级设备,驱动对象就以下一级设备作为设备对象;内核模块同时向Windows系统的装配管理设备接口注册,由其完成虚拟卷设备的命名;存储资源管理服务器则包含以下模块界面模块,面向系统管理员;通信模块,通过TCP/IP协议连接到以太网;管理模块,它与上述界面模块、通信模块互连;设备监视模块,它实时监测系统中的物理磁盘设备,同时与上述的管理模块和光纤交换机互连;设备代理模块,它同时与上述管理模块以及光纤交换机互连;步骤2客户端软件按以下步骤依次进行资源动态分配步骤2.1存储区域网络系统管理员通过存储资源管理服务器,也称动态管理服务器界面结构模块所提供的图形界面接口向上述管理模块发出虚拟化指令,要求在指定的应用服务器上创建虚拟卷;步骤2.2上述管理模块得到此命令后检查相应参数是否正确,若正确,便通过存储资源管理服务器的通信模块按照TCP/IP协议把指令和参数通过以太网发给上述应用服务器的通信模块;步骤2.3运行于上述应用服务器上的通信模块把接收到的数据重新组织后经过Windows NT API传递给内核模块的上述虚拟通信设备,所述通信设备是通过把操作码封装为自定义的设备控制命令,所述操作码将随不通的操作而异;步骤2.4上述内核模块根据所得到的命令和参数使用标准Windows API来完成所述的虚拟卷的创建;步骤2.5内核模块把执行结果返回客户端的通信模块,即上述应用服务器上的通信模块;步骤2.6上述客户端通信模块再把执行结果通过以太网返回给存储资源管理服务器的通信模块,再由所述通信模块传送给上述管理模块;步骤2.7上述管理模块根据执行结果更新界面接口模块上的视图并最终为上述管理员所见。同时,还把更新后的元数据通过上述设备代理模块再经过交换机写入到指定物理设备的指定位置。
本系统在清华大学计算机高性能研究所的光纤存储区域网络存储系统上进行了功能的有效性测试。在前端的Windows应用程序服务器上安装了资源管理客户端软件,借助此客户端软件实现了Windows环境下的网络存储资源的虚拟化功能,为应用服务器提供了可操作的虚拟卷设备,实现了虚拟存储池。在资源管理服务器的配合下提供了磁盘空间的动态随意分配和修改逻辑磁盘大小的功能,同时还提供了逻辑磁盘数据镜像和快照功能,充分验证了本发明的有效性。


图1存储资源动态管理系统原理示意图;图2存储资源动态管理系统结构示意图;
图3存储资源动态管理系统软件结构图;图4逻辑卷与虚拟卷在内核模块中的逻辑组织关系;图5存储资源动态管理系统软件模块框图;图6Windows操作系统读写操作模型;图7本发明所述内核模块的读写操作模型;图8软件流程图;图9物理卷的数据结构图;图10数据分布信息的数据结构图;图11对于读写请求进行管理用的数据结构图。
具体实施例方式
本发明的具体应用的硬件平台是基于光纤存储区域网络环境的Windows应用程序服务器,多个Windows服务器通过存储网络共享底层物理设备。应用程序服务器和存储资源管理服务器通过以太网络连接,通过基于TCP/IP协议的以太网进行数据通讯。具体的硬件连接环境如图1所示。
其中,应用服务器使用Windows操作系统,它们和存储资源管理服务器上均安装了光纤通道卡。并且所有光纤通道卡及其驱动都是标准的,不需要使用特别的底层驱动。这些服务器通过光纤通道卡与光纤交换机相连,组成了存储光纤网络。服务器通过光纤网络共享使用网络磁盘阵列提供的存储资源。网络磁盘是直接连入光纤网络的光纤磁盘阵列,具体的硬件框图如图2所示。
应用程序服务器的操作系统为Window,具体版本为Window Server 2003或Windows Server2000。存储资源管理客户端软件在Windows系统所在的逻辑位置如图3所示。其中DiskFilter用于屏蔽其他组件对物理存储设备的访问。
图4描述了存储资源在客户端软件的逻辑组织关系。其中,物理卷(PV,Physical Volume)是存储资源分配的处理对象,它是单个的物理存储设备。每个物理卷都包含有通用唯一标识符(UUID,Universal Unique Identifier),它用于在整个系统中唯一标识这个物理存储设备。在客户端程序中维护一个描述所有PV的列表,并把这个列表作为整个驱动对象(DriverObject)内的全局对象保存。客户端软件可以根据指令重新扫描底层物理设备的状态并根据状态的变化更新此列表。
物理卷的数据结构见图9。
在模块加载(初始化)的过程中(对于Windows系统内的驱动程序来说,是指在DriverEntry例程中所完成的工作)检索系统中的磁盘,获得其通用唯一标识符;为物理卷建立相应的数据结构,建立对其的访问机制。
这部分的具体功能函数包括获得磁盘句柄函数(GetDiskFileHandle)取得某个物理磁盘设备的句柄和设备栈顶设备对象。
读取UUID函数() 从某个物理磁盘上读取其通用唯一标识符。
最后所有的获得的针对物理磁盘的数据结构组织为链表的结构,并一直驻留在内存中。
逻辑卷(LV)作为客户端程序的内核模块所创建的设备对象为用户状态下的应用程序所见并可对其进行操作。图4表示了物理卷和逻辑卷在内核模块下的组织关系。我们的动态存储资源分配系统的核心思想是基于物理磁盘资源虚拟出逻辑卷设备,供Windows文件系统使用。客户端软件依据数据分布情况适当修改文件系统发出的读写请求命令的操作地址,将读写操作从针对逻辑卷设备映射到针对物理存储设备的物理地址空间后再执行读写操作。
以下结合图5,对本发明中的资源部署的方法作详尽描述。
客户端软件中的通信模块是用户模式下(User Mode)的网络通信程序,它使用TCP/IP协议接受来自于资源分配服务器的虚拟化命令,然后将此命令及相关参数组织为适当形式经由Windows API交由内核模块执行,并随后将执行结果返回给带外虚拟化服务器。下边我们以虚拟卷的创建过程为例描述通信模块的功能,并展示整个带外虚拟化存储系统中虚拟化指令的完成流程。
1.储区域网络系统的管理员通过存储资源动态管理服务器所提供的图形界面接口(或命令行或远程命令行解释器(Shell))(过程1)向服务器(V Server)的发出虚拟化指令(过程2),要在应用服务器A上创建虚拟卷X(Virtual Volume X)。
2.存储资源动态管理服务器得到此命令后检查相应参数是否正确,然后通过虚拟化服务器的通信模块(过程3)将指令和参数经过以太网发送给运行Windows操作系统的应用程序服务器A(过程4)。
3.运行于A上的通信模块将接收到数据重新组织后经过Windows NT API传递给内核模块的虚拟通讯设备(过程5)。这里不同的操作对应着不同的操作码,通讯模块将这些操作码封装为自定义的设备控制命令。
4.内核模块根据得到的命令和参数完成虚拟卷X的创建(过程6)。并将执行结果返回给客户端的通信模块(过程7)。
这里创建虚拟卷完全使用标准Windows来完成的,实现过程位于函数CreateLv中,其具体过程为●通过IoCreateDevice创建逻辑卷设备对象,●通过RegisterMountedDeviceInterface()向装配管理器(Mount Manager)注册逻辑卷设备以自动分配符号链接,●置虚拟卷的状态为离线,这是因为数据分布信息现在还不可用,所以将虚拟卷置为不可操作状态,●启动虚拟卷的工作者线程,因为目前状态为离线,所以所有的控制请求包和读写请求包都会被直接返回无此设备(NO_SUCH_DEVICE)信息,●通信模块获得数据分布信息后通过PutCMT函数将信息加载到逻辑卷的设备对象中,然后将逻辑卷的状态置位为在线,逻辑卷开始正常工作。
这里数据分布信息的数据结构见图10。
5.客户端通信模块再将结果通过TCP连接传递给虚拟化服务器上的客户端接口通信模块(过程8)并最终传递给存储资源动态管理服务器(过程9)。
6.管理服务器根据执行结果更新接口模块的视图(10)并最终为管理员所见(过程11)。此外,管理服务器还要将更新后的元数据写入到指定物理设备的相应位置(过程12)。在完成了如上的操作之后,系统在应用服务器A创建了虚拟卷X,A上的应用程序对X的读写操作经由内核模块映射后转发给底层的实际物理存储设备完成。内核模块必须完成Windows操作系统对虚拟设备所发送的设备控制命令的处理。这些设备控制命令的处理是由函数MagicDiskDeviceControl实现的。为了使内核模块所创建的虚拟设备为用户模式下的应用程序所见,必须为所创建的虚拟设备建立符号链接或再解析点。完成这一功能可以有两种,一种是采用驱动程序内部规定的方式创建符号链接;另一种是向Windows系统的装配管理器设备接口注册,由其完成虚拟设备的命名。
我们采用的是后一种方式,这种方式首先需要在设备创建的时候向装配管理器设备接口注册,这一步骤我们在前边的创建LV的过程描述中已经介绍过。然后逻辑卷设备还必须完成三种设备控制命令的处理IOCTL_MOUNTDEV_QUERY_DEVICE_NAME返回创建设备的过程中为设备对象所取的名字,如“/device/magicdisk/magicdisk0”IOCTL_MOUNTDEV_QUERY_UNIQUE_ID返回在向装配管理器接口注册时所返回的接口名IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME返回设备所希望获得符号链接或再解析点,此项可以返回空。若返回空则由装配管理器分配符号连接。
装配管理器设备接口会自动寻找存储设备的通用唯一标识符,并将其作为虚拟卷的标识存放在注册表中。
在完成了以上的操作之后,应用程序就可以像使用其他的卷设备一样来使用虚拟卷设备了。从应用程序和文件系统的角度看,内核模块所创建的虚拟卷同其他的卷设备是完全相同的,因而他们对二者的访问和操作也完全相同。以应用程序向虚拟卷发出的读操作请求为例,在经过文件系统驱动的处理后,所得的读写请求包(图7中 )从虚拟化内核模块的角度看来,是要读取虚拟卷上指定范围的数据。这样,内核模块首先挂起原读写请求包,然后根据分布策略的不同,创建新的读写请求包(图7中 )从一个或多个物理存储设备上读取所需的数据。在这些读写请求包从驱动栈中的下层返回后,内核模块将它们读入的数据填入到原读写请求包的相应位置中并完成原读写请求包,过程如图7所示。
创建新的读写请求包的过程中需要使用数据分布信息,这些信息存储在内核模块中与虚拟卷设备对象相关的一块内存区域中。对于每一个到来的读写请求包,内核模块都会为其分配一个管理结构。具体的处理过程描述如下对于到来的读写请求包,申请一个管理其子读写请求包的数据结构实例;利用虚拟化信息对此读写请求包进行拆分,拆分所得的读写请求包由上边所提到的数据结构进行管理;如果拆分出来的子读写请求包只有一个,则释放上边所说的管理数据结构,直接转发子读写请求包;若有多个子读写请求包,则在拆分完成后将所有子读写请求包发射出去,等待所有子读写请求包返回后释放管理结构实例,完成父读写请求包。
对子IRP进行管理的数据结构见图11。结构中的自旋锁对象负责在对称多处理器情况下对后边两个队列的共享操作的安全性。未决队列索引尚未完成的子读写请求包,完成队列中索引已经完成了的子读写请求包。在子读写请求包的CompleteRoutine例程中,每个子读写请求包会被检测是否其结果是否正确并将主读写请求包中的未决读写请求包个数减1,然后将此读写请求包从未决队列中移除放入完成队列中。
目前这个管理结构的功能是将所有的子读写请求包一起发射并等待所有的子读写请求包返回。在所有的子读写请求包都完成之后将原读写请求包返回。
这一部分的几个关键函数介绍如下分割主读写请求包函数(SplitIRP)根据数据分布信息对主读写请求包进行拆分,将新分配的读写请求包放入到未决队列当中。
读操作完成主读写请求包函数(ReadCompleteMasterIrp),在所有子读写请求包完成后完成读操作的主读写请求包并向上返回。
读操作完成例程(ReadCompletion),读操作的子读写请求包完成回调函数。
读操作完成主读写请求包函数(WriteCompleteMasterIrp),在所有子读写请求包完成后完成写操作的主读写请求包并向上返回。
写操作完成例程(WriteCompletion),写操作的子读写请求包完成回调函数。
本发明在清华大学计算机系高性能研究所的光纤存储区域网络系统上进行了功能的有效性测试。在前端Windows应用程序服务器上安装了分布式存储资源管理客户端软件。借助统一的存储资源管理服务器,该系统实现了Windows环境下的网络存储资源虚拟化的功能,提供了存储区域网络系统存储资源的统一部署和分配和虚拟存储池。由于客户端软件基于Windows的卷管理器级别设计,因而不需要使用特别的总线适配器及为其定制的驱动程序。
权利要求
1.Windows平台下动态管理存储资源的方法其特点在于它是在由基于Windows NT的通过自身卷管理器级别实现存储资源管理客户端的应用服务器、通过基于TCP/IP的以太网和上述应用服务器连接的存储资源管理服务器、通过光纤通道卡和上述应用服务器、存储资源管理服务器相连的光纤交换机、和上述光纤交换机相连相连的网络磁盘共同组成的存储区域网络环境中实现的,所述的方法依次会有以下步骤步骤1建立模块结构客户端会有以下两个模块通信模块它是用户模式下的网络通信程序,它使用TCP/IP协议接收来自于存储资源管理服务器也成分配服务器的虚拟华命令,然后据此命令调度下述的内核模块进行配置,并随后将执行结果返回给上述带外虚拟化服务器即存储资源管理服务器;内核模块它创建内核虚拟通信设备接收来自于上述通信模块的调度,根据命令和参数的不同采取不同的操作并把操作结果返回给上述通信模块,对基于NT技术的Windows操作系统的其他组件通过其附属的设备屏蔽模块去屏蔽底层物理设备,完成应用程序对虚拟卷的I/O操作到实际物理存储设备的映射,同时通过光线交换机对上述网络磁盘完成读写控制;所述的内核虚拟设备含有物理卷,用PV表示,它是存储资源分配或处理的对象,即单个的物理存储设备,每个物理卷都包含以下数据结构物理卷名称、通用唯一标识符即UUID,磁盘设备句柄,磁盘设备名以及下一结构对象指针,在内核模块中维护着一个描述所有物理卷的列表;逻辑卷,用LV表示,它作为内核模块所创建的设备对象为用户状态下的应用程序所见并可对其进行操作;它的数据结构包含有下一设备、驱动对象以及设备扩展的数据,所述的驱动对象数据含有设备对象和系统调用的数据,所述的设备扩展含有设备对象指针、地址信息表、任务队列和工作线程的数据,系统调用通过物理指针调用物理卷对象,设备扩展中设备对象指针调用下一级设备,驱动对象就以下一级设备作为设备对象;内核模块同时向Windows系统的装配管理设备接口注册,由其完成虚拟卷设备的命名;存储资源管理服务器则包含以下模块界面模块,面向系统管理员;通信模块,通过TCP/IP协议连接到以太网;管理模块,它与上述界面模块、通信模块互连;设备监视模块,它实时监测系统中的物理磁盘设备,同时与上述的管理模块和光纤交换机互连;设备代理模块,它同时与上述管理模块以及光纤交换机互连;步骤2客户端软件按以下步骤依次进行资源动态分配步骤2.1存储区域网络系统管理员通过存储资源管理服务器,也称动态管理服务器界面结构模块所提供的图形界面接口向上述管理模块发出虚拟化指令,要求在指定的应用服务器上创建虚拟卷;步骤2.2上述管理模块得到此命令后检查相应参数是否正确,若正确,便通过存储资源管理服务器的通信模块按照TCP/IP协议把指令和参数通过以太网发给上述应用服务器的通信模块;步骤2.3运行于上述应用服务器上的通信模块把接收到的数据重新组织后经过WindowsNT API传递给内核模块的上述虚拟通信设备,所述通信设备是通过把操作码封装为自定义的设备控制命令,所述操作码将随不通的操作而异;步骤2.4上述内核模块根据所得到的命令和参数使用标准Windows API来完成所述的虚拟卷的创建;步骤2.5内核模块把执行结果返回客户端的通信模块,即上述应用服务器上的通信模块;步骤2.6上述客户端通信模块再把执行结果通过以太网返回给存储资源管理服务器的通信模块,再由所述通信模块传送给上述管理模块;步骤2.7上述管理模块根据执行结果更新界面接口模块上的视图并最终为上述管理员所见。同时,还把更新后的元数据通过上述设备代理模块再经过交换机写入到指定物理设备的指定位置。
全文摘要
Windows平台下动态管理存储资源的通用方法属于存储区域网络(SAN)系统中存储资源动态管理技术,其特征在于使用基于Windows NT操作系统卷管理器的内核模块实现存储资源的动态分配和使用,同时利用用户模式下的通信软件与全局的存储资源管理服务器连接,由后者进行全局的存储资源在不同应用服务器之间的调度和分配。内核模块除了要支持与存储资源管理服务器相对应的存储资源调度方法外,还要将应用程序对由其提供的虚拟存储设备的操作提供映射到物理存储设备中。此外内核模块还会对Windows NT操作系统的其他组件屏蔽对其所控制的物理设备的访问。
文档编号G06F12/00GK1655129SQ20051001135
公开日2005年8月17日 申请日期2005年2月25日 优先权日2005年2月25日
发明者舒继武, 薛巍, 孟冉, 张广艳, 郑纬民 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1