San系统中虚拟化智能控制器的实现方法

文档序号:6517238阅读:200来源:国知局

专利名称::San系统中虚拟化智能控制器的实现方法
技术领域
:SAN系统中虚拟化智能控制器的实现方法属于存储区域网络领域,尤其涉及其中的存储管理
技术领域

背景技术
:随着电子商务、多媒体的广泛使用,需要存储的数据容量正在迅猛增长,这就使得存储系统的规模变得越来越庞大。SAN(StorageAreaNetwork)系统由于具有高可扩展性、高性能、超长传输距离等特性,在构建大规模存储系统中发挥着越来越重要的作用。但由于采用全硬件方式来实现SAN的价格过于昂贵,目前存储业界出现了几种用软件方法实现的存储控制器。它们使用软件来模拟网络存储硬件(如光纤磁盘)的功能,这种做法可以利用更便宜的设备来实现SAN,因此具有很大的弹性。这些存储控制器中以UNH(UniversityofNewHampshire)大学开发的SCSITargetEmulator即SCSI目标模拟器使用较为广泛。SCSITargetEmulator结合不同的FETD(Front-EndTargetDriver即目标器前端驱动程序),可以分别模拟光纤存储设备或ISCSI存储设备等网络存储设备,但是这种控制器只是逐一地把它所挂接的物理存储设备直接呈现给应用服务器,我们无法对这些资源进行有效地管理和使用。另一方面存储系统的规模迅猛增长使得存储管理问题日益凸显出其重要的地位。虚拟化存储就是为了解决存储管理问题而出现的一种存储技术。虚拟化技术能够屏蔽底层物理设备的区别,给存储应用服务器提供一个统一的虚拟化存储资源视图。通过存储虚拟化系统,存储管理员能够动态调整存储资源的配置,同时虚拟化系统还能提供在线数据备份,数据镜像等功能。通过将多个物理磁盘虚拟成一个逻辑磁盘技术,它还能够提供较好的IO性能。目前国外在该领域已经有了一些研究成果。比如Sistina公司开发的LogicalVolumeManager(LVM)即逻辑卷管理器系统是目前使用最广泛的虚拟化技术,并且已经成为了Linux内核中的一部分。IBM公司开发了一套EnterpriseVolumeManagementSystem(EVMS)即企业级卷管理系统,实现了企业级的虚拟化存储管理。但这些虚拟化存储系统一般只能适应于某一特定的操作系统环境,而且都是在单机环境下工作的,不适应于异构环境的虚拟化存储的实现。Chang-SooKim,Gyoung-BaeKim,Bum-JooShin等人实现了一个SAN环境下的虚拟化存储系统SANtopiaVolumeManager,但是需要配合其文件系统使用,而且不能解决多操作系统平台的虚拟存储管理问题。我们在对UNH的SCSITargetEmulator分析的基础上,重新设计并实现了一种适合于SAN环境的虚拟化智能控制器。它能够对异构的服务器平台提供统一的存储资源视图,并能够对存储资源进行有效的管理,从而达到存储资源的最佳利用。而且VIC还提供了虚拟设备的访问控制管理,保证了设备级的访问安全。
发明内容本发明的目的在于提供一种适用于SAN环境的虚拟化智能控制器的实现方法。本项发明主要针对SAN中异构的存储应用服务器和多样的存储设备,研究了采用智能控制器进行统一管理SAN中的存储资源的方法。使用本方法实现的虚拟化智能控制器具有如下几个特点(一)能够有效地管理各种各样的存储设备,提高了存储资源的利用率;(二)能够对异构的服务器平台提供统一的存储资源视图,简化了存储资源的管理和使用;(三)能够提供虚拟设备的访问控制管理,保证了设备级的访问安全。本发明的特征在于所述的虚拟化智能控制器添加在存储区域网络即SAN系统的应用服务器和存储设备之间,它是一个或多个用通用计算机实现的虚拟化智能控制器,简称VIC;所述的一个或多个VIC把SAN系统划分为主机SAN和存储设备SAN两个部分,其中主机SAN连接着应用服务器和VIC,此时VIC充当的是存储资源的角色;存储设备SAN连接着VIC和各类存储设备,此时VIC的作用是管理存储资源;所述的VIC包含以下三个层次访问控制管理层该层负责接收从应用服务器发送过来的IO请求,对各请求的执行权限进行检查,并把有操作权限的IO请求发送到下面所述的存储虚拟化层;所述的访问控制管理层在内存中维护着一张设备访问权限表,该表的每个条目记录着VDNumber即虚拟设备号,AccessBitmap即访问位图,PrivilegeBitmap即权限位图,其中AccessBitmap和PrivilegeBitmap是两个等长的机器数,记录着相应设备的访问控制信息,AccessBitmap中序号从低位算起的每个比特都代表着一台服务器能否访问该设备所在位是“1”表示允许访问,所在位是“0”表示拒绝访问;PrivilegeBitmap中序号从低位算起的每一个比特代表能访问该设备的服务器的具体操作权限;在PrivilegeBitmap中,序号从低位算起的每一位与AccessBitmap中序号从低位算起的每一位是相对应的,AccessBitmap和PrivilegeBitmap对应位的组合确定一台服务器的访问控制信息;所述访问控制信息包含着三种访问模式访问位和权限位都是“0”,表示拒绝访问;访问位和权限位都是“1”,表示具有读写权限;访问位为“1”,权限位为“0”,表示具有读权限;每当应用服务器加载启动器模式的光纤驱动程序时,它就通过主机SAN网络向VIC的设备访问权限表查询有哪些虚拟设备对它“可见”,然后再把这些“可见”的网络虚拟设备添加到应用服务器的SCSI设备链表中;存储虚拟化层该层实现存储虚拟化管理的功能,并能够对接收到的IO请求的地址信息进行转换,使其能够在实际物理设备上执行;该存储虚拟化层包含有√虚拟设备管理模块该模块在内存中为每一个虚拟设备维护着一张虚拟设备信息表,该表包含有如下数据项VD_Name即虚拟设备名称,lun即IO请求所对应的虚拟设备号,UUID即全局唯一的设备标识符,Type即虚拟设备类型,Capacity即虚拟设备容量,Space_list即虚拟设备存储空间构成表;所述的Space_list是一个PhysicalSegment即物理段,简称为PS的链表,每个PS记录着如下的几个数据项PD_ID,Offset,Length,用以表示一段在同一个物理设备上连续的存储空间,其中PD_ID表示物理设备的序号;Offset表示该段空间的起始偏移;Length是该端存储空间的大小;√地址映射模块该模块把所述访问控制管理层发送过来的虚拟IO请求转化成一个或多个能够在物理设备上实际执行的SCSI命令;所述虚拟设备IO请求的地址信息结构是一个lun、offset、length的三元组,其中lun表示该IO请求对应的虚拟设备号,offset是该请求的偏移,length表示该请求的数据大小;所述地址映射模块的具体地址映射过程依次如下一、找到虚拟设备号为lun的VD;二、根据VD的类型和offset,确定该IO请求的偏移即起始地址所在的PS;三、通过各虚拟请求的length字段确定物理请求的个数和各个对应物理请求的数据大小;四、形成多个能在物理设备上实际执行的SCSI命令;√元数据管理模块该模块记录有包括系统中物理设备、虚拟设备和访问控制信息在内的系统信息,这些信息都保存在两个SCSI硬盘上,统称为元数据磁盘,其中一个是主元数据盘,另一个是次元数据盘,两者形成备份关系;元数据信息中有一个标记,可以为WRITE_COMPLETE即元数据完整或NOT_COMPLETE即元数据不完整,用以标记元数据是否完整;将元数据从物理磁盘导入内存的具体过程按如下步骤进行a、扫描系统中所有的物理磁盘,找到所述两个元数据盘;b、完整性判断若主元数据盘的标记是NOT_COMPLETE标记,而次元数据盘的标记是WRITE_COMPLETE,则主元数据盘的元数据信息是不完整的,用次元数据盘的数据来覆盖主元数据盘的数据;若主元数据盘的信息是WRITE_COMPLETE,而次元数据盘的是NOT_COMPLETE,则在写次元数据盘的时候出错,用主元数据的数据来覆盖次元数据盘的元数据;若主、次两个元数据盘的标记都是WRITE_COMPLETE,则表示两个元数据盘的数据都是完整的;c、有效性判断把主元数据盘上的元数据导入内存,检查元数据信息中的物理设备信息,即对比能够扫描到的物理设备的UUID和元数据信息中的UUID列表,从而判断一个物理设备能否能够被重新使用;若元数据信息的UUID列表中的物理设备未扫描到,VIC把该物理设备的信息以及错误信息写入日志,并从元数据信息中删除该物理设备的信息以及其他相关信息;物理设备管理层,该层执行存储虚拟化层发送过来的SCSI命令,同时也负责物理设备的检测和抽象;所述SCSI命令的执行通过调用Linux系统的SCSI中间层驱动中的scsi_do_req函数完成;而物理设备的检测和抽象按以下步骤依次实现a、VIC启动时,扫描系统的SCSI设备链表;b、每扫描到一个存储设备,建立相应的物理设备结构;c、为每一个设备分配一个UUID;d、VIC把该设备的存储空间按照固定大小的块进行划分,并把这些空间添加进存储虚拟化的存储池中;本发明所述的SAN系统中虚拟化智能控制器的实现方法依次含有以下步骤(如图1所示)步骤1虚拟化智能控制器通过SAN网络接口接收从应用服务器发送过来的IO请求,并把请求转发给访问控制管理层;步骤2访问控制管理层从IO请求中解析出所要执行的操作以及相应的设备信息,并同设备访问权限表中的信息进行比较,判断是否允许执行该操作;若与访问权限信息不符,则直接返回;若该IO请求有操作权限,就转发给存储虚拟化层;步骤3存储虚拟化层根据虚拟设备的信息,对IO请求的地址信息进行分析,产生能在物理存储设备上直接执行的SCSI命令,并把这些命令发送给物理设备管理层;步骤4物理设备管理层执行SCSI命令,并把执行结果返回给主机SAN网络接口;步骤5主机SAN网络接口把IO请求的执行结果发送给相应的应用服务器。采用本方法只需在SAN系统中添加虚拟化智能控制器,就可以对存储系统中各种各样的存储资源进行有效的管理,并具有操作系统平台无关性,能够为异构的应用服务器环境提供一种有效得存储资源管理方法,非常适合目前多样的存储应用环境,满足越来越复杂的存储管理需求。图1本发明所述方法的程序流程框2.使用VIC构建SAN系统的硬件连接3.VIC的软件架构4.虚拟设备结构5.VIC和SCSITargetEmulator的带宽比较6.VIC和SCSITargetEmulator的延迟比较7.读带宽和CPU利用率关系8.写带宽和CPU利用率关系图具体实现方式本发明的核心是在SAN系统的应用服务器和存储设备之间添加一个或多个虚拟化智能控制器,从而把SAN系统划分成两个部分设备SAN和主机SAN。其中虚拟化智能控制器能够管理设备SAN中的所有存储资源,并对主机SAN提供统一的存储资源视图。具体的实现框架中包含三个层次访问控制管理层接收应用服务器发送过来的IO请求,对该请求的执行权限进行检查,并把有操作权限的IO请求发送到存储虚拟化层。存储虚拟化层实现存储虚拟化管理的功能,并能够对接收到的IO请求所要处理的数据空间进行转换,使其能够在实际设备上执行。物理存储管理层功能有两个方面,其一是接收从存储虚拟化层来的能够在物理设备上执行的SCSI命令,并把命令转发到相应的物理设备上;其二是对各种物理设备进行管理,并把它们添加到存储虚拟化层中的存储池中。下面将详细介绍本发明的硬件架构和软件架构1.硬件架构我们把这个自主开发的虚拟化智能控制器命名为VIC(VirtualizationIntelligentController)。一个或多个VIC就把SAN系统划分为两个部分主机SAN和设备SAN。使用VIC搭建的SAN系统如图2所示。其中主机SAN连接的是应用服务器(Server)和VIC,此时VIC充当的是一种“存储资源”的角色,应用服务器能够使用这些存储资源;设备SAN连接的是VIC和各种各样的存储设备,此时VIC充当的是“存储资源管理者”的角色,并能把从主机来的IO请求转发给存储设备。通过这种方式,就把存储资源的使用和管理互相分离,主机SAN和设备SAN能够各司其职。主机SAN中的应用服务器只需关注于如何使用VIC提供的存储资源,而不用管底层物理设备的细节;而设备SAN就要负责对存储资源进行有效的管理,以满足应用的需求。2.软件架构VIC的软件结构包括三个层次访问控制管理层、存储虚拟化层、物理设备管理层。具体如图3所示。其中访问控制管理层能够接收SAN网络接口传送过来的IO请求,并对这些请求的操作权限进行验证,使得有权限的命令才得以发送到存储虚拟化层。存储虚拟化层根据虚拟设备的信息,对IO请求中的数据信息进行分析和映射,从而得到能够在实际设备上执行的IO请求,并转发给物理设备管理层。而元数据管理子模块负责对本层对应的虚拟化功能的元数据信息进行管理。物理设备管理层通过对SCSI命令的处理,把IO请求的响应发送给SAN网络接口。而设备检测子模块和设备抽象子模块负责扫描系统中所有的物理设备信息,并对这些物理设备进行抽象,以添加到存储系统中去,供存储虚拟化层使用。3.访问控制VIC上维护一张设备访问权限表,该表的每个条目记录着虚拟设备号、AccessBitmap(即访问位图)以及PrivilegeBitmap(即特权位图)。其中AccessBitmap和PrivilegeBitmap是两个等长的机器数,记录着相应设备的访问控制信息。一个可能的设备信息表如表1所示表1访问信息表AccessBitmap中的每一个比特都代表一台服务器能否能够访问该设备,第0个比特表示第1台机器能否访问该设备,第1个比特表示第2台机器能够访问该设备,依此递推。PrivilegeBitmap中的每一个比特代表能访问该设备的服务器的具体操作权限。两者的组合就能确定一台服务器的访问控制信息。具体的访问权限说明如下表2访问权限因此,对于表1的设备访问权限表中的信息可以解释为服务器1对VD0具有读写权限;服务器2对VD1具有读写权限;服务器3对VD2具有读写权限,同时服务器2对VD2具有读权限;等等。每当应用服务器加载启动器模式的光纤驱动程序的时候,它就得向VIC的设备访问权限表查询一下哪些虚拟设备对它“可见”,然后把这些“可见”的网络虚拟设备挂接到服务器的SCSI设备链表中。应用服务器就可以对这些网络设备执行IO操作,但具体的是允许读操作还是允许读写操作还得再次通过查询设备访问权限表来确定。通过这种设备的访问控制,我们就可以提高设备的访问安全,从而保证应用服务器的数据安全。4.地址映射IO请求经过访问控制验证以后,就发送到存储虚拟化层,交由该层处理。由于此时的IO请求是针对虚拟设备的请求,无法直接执行。因此,我们必须把该请求转化成一个或多个能够在物理设备实际执行的SCSI命令,这个过程是由地址映射来完成的。在说明具体的地址映射过程前,有必要先来说明一下VIC系统中虚拟设备(VirtualDevice,简称VD)的结构。虚拟设备的结构如图4所示其中的PS(PhysicalSegment即物理段)是虚拟设备所拥有的一段存储空间,这段存储空间必须在同一个物理设备上,而且是连续的。针对虚拟设备的IO请求的地址信息是一个lun(logicalunitnumber)、offset、length的三元组,其中lun表示该请求对应的虚拟设备号,offset是该请求的偏移,length表示该请求的数据大小。每次进行地址映射的时候,都需要完成从虚拟IO请求对应的地址信息<lun,offset,length>到物理IO请求对应的地址信息<PD_ID,offset,length>的转换。具体的地址映射过程如下(一)查找lun与VD对应关系表找到对应的VD(二)根据VD的类型和offset,确定该请求的起始地址所在的PS(三)通过虚拟IO请求的length字段确定物理IO请求的数目和各个请求的数据大小经过地址映射得到的SCSI命令就能在物理存储设备上实际地执行。由于每次执行IO请求的时候,地址映射子模块都是实时地查询当前VD的信息。这种方式使得VD信息的改变能够即时地被应用服务器知道或使用,这为VIC实现各种动态功能如动态创建虚拟磁盘、动态扩容等提供了可能。另外由于虚拟IO请求和其对应的物理IO请求的读/写的数据总量是相等的,因此我们就可以对虚拟IO请求所占用的缓存空间进行划分,然后分配给对应的物理IO请求。这种数据空间的处理方式能够避免在虚拟/物理IO请求之间进行大量的数据拷贝,从而提高了系统性能。5.虚拟设备管理虚拟设备管理器是VIC的核心部分之一,它负责实现系统的大部分虚拟化功能,比如虚拟设备的创建、删除、扩容,以及高级的快照、镜像等功能。虚拟设备的管理主要是管理虚拟设备的类型和虚拟空间的组织。虚拟设备的类型多种多样,可以是Linear、Striped、Mirror、Snapshot等等。不同的类型提供了不同的功能,如Linear类型的虚拟设备具有任意系统可接受大小的存储空间;Striped类型具有提高设备并发IO数目的功能;Mirror虚拟盘提高了系统数据的安全性;Snapshot虚拟盘具有保留系统某一时刻映象的功能等等。虚拟设备的存储空间是以table的方式组织的,表3说明了虚拟设备存储空间的组织方式。其中PS表示在一个物理磁盘上一段连续的物理存储空间。表3虚拟设备的存储空间组织方式PS1PS2PS3……这种存储空间的组织方式一方面使得我们花费很少的内存资源就可以管理非常庞大的存储空间。这是因为<OffsetLength>的一个组合就可以表示一个系统允许的任意大小的存储空间;另一个面也使得改变虚拟设备的存储空间变得非常简单。我们可以通过在table的末尾添加或删除一个PS就可以实现虚拟磁盘的扩容和减容。而且由于我们在命令处理的时候都是实时地查询虚拟设备的信息,因此这种容量的改变的结果都是马上可以体现在命令执行过程中,因此VIC具有良好的动态存储资源管理功能。6.元数据管理元数据管理器是虚拟化模块的另一个重要组成成分。VIC系统中的元数据指的是记录着系统中物理设备、虚拟设备、访问控制的信息以及其他一些相关信息。合理的元数据管理必须保证在重新加载系统的时候能够恢复加载前的系统配置,从而使得系统具有可重入的特性;通过提供多个元数据拷贝的方式提高了系统的可靠性,使得系统在有元数据失效的时候能够恢复;另外本系统的元数据还能够对元数据系统的配置信息进行检验,从而进行有选择的恢复,从而保证系统具有较好的可用性。目前,VIC系统把元数据保存到两个SCS1硬盘上,这两个磁盘称为元数据磁盘,其中一个是主元数据盘,另一个是次元数据盘。每个元数据磁盘使用起始扇区开始的20M空间作为元数据存放的地方,两份元数据形成了备份关系。每次发生元数据更改操作之后,系统都得把更新后的元数据写入磁盘。元数据信息中有一个特殊的标记,用来标记元数据是否已经完全写入磁盘。具体的元数据更新过程如下(一)把主元数据盘的标记清空(二)把元数据写入主元数据盘;(三)写完主元数据盘后把主元数据盘的标记设置成WRITE_COMPLETE(四)把次元数据盘的标记清空(五)把元数据写入次元数据盘;(六)写完次元数据盘后把次元数据盘的标记设置成WRITE_COMPLETE在把元数据导入系统的时候,发生的过程正好与上述写元数据的过程相反。具体元数据导入过程如下(一)扫描系统中所有的物理磁盘,找到两个元数据磁盘。(二)完整性判断。首先检查主元数据磁盘的标记是否是WRITE_COMPLETE。如果是WRITE_COMPLETE,就接着判断备份盘的标记是否是WRITE_COMPLETE,如果备份盘的标记不是WRITE_COMPLETE,说明备份盘的元数据导出过程出错,因此需要用主元数据磁盘上的元数据来覆盖备份盘元数据;如果主元数据磁盘的标记不是WRITE_COMPLETE,就用备份元数据磁盘的元数据覆盖主元数据磁盘。因为主元数据磁盘和备份元数据磁盘是串行地写入元数据,所以必然有一份元数据是正确可用的。通过完整性判断过程,就可以同步主次元数据盘的元数据,并能保证主元数据盘的元数据始终可用。同步操作如下表所示表4元数据同步过程(三)有效性判断。把主元数据磁盘上的元数据导入内存,并检查元数据信息中的物理设备信息。由于物理设备是通过UUID唯一标识,我们可以通过对比能够扫描到的物理设备的UUID和元数据信息中UUID列表,来判断一个物理设备是否能够被重新使用。如果UUID列表中的物理设备没有扫描到,VIC就把该物理设备的信息以及错误信息写入日志,并从元数据信息中删除跟该物理设备相关的所有逻辑设备信息以及其他信息,从而保证系统的可用性。7.物理设备管理层物理设备管理层完成的主要功能有两个方面。其一是负责存储虚拟化层发送过来的SCSI命令的执行;其二是负责物理设备的检测和抽象功能。其中SCSI命令的执行主要是通过调用Linux的SCSI中间层驱动的scsi_do_req()函数完成的,这个函数能够把针对实际设备的SCSI命令插入相应队列,然后交由Linux系统的SCSI驱动进行实际地执行。而物理设备的检测和抽象功能是通过如下过程实现的(一)VIC启动的时候,扫描系统的SCSI设备列表;(二)每扫描到一个存储设备,就先建立一个该设备对应的物理设备结构;(三)给每个设备其分配一个64位的UUID(UniversalUniqueIDentifier),用于唯一标识该设备,这样系统在重新启动或迁移的时候,就可以通过这个UUID来识别或找回该设备;(四)VIC把该设备的存储空间按照固定大小的块(默认是64K)进行划分,并把这些空间添加进系统的存储池中。所有的虚拟设备的管理都是在这个存储池中进行。通过这种方式,我们就可以屏蔽底层物理设备的细节,包括设备容量、转速等等,从而提供与具体设备无关的虚拟化功能。性能测试由于本发明所述的虚拟化控制器是在SCSITargetEmulator的基础上,进行重新设计和实现,从而使其具有对存储资源进行虚拟化管理的功能,因而我们十分有必要对虚拟化功能的增加所造成的影响进行一些测试,这些测试包括IO性能的测试和CPU利用率的测试。1.IO性能VIC由于加入存储资源的虚拟化管理功能,因此比SCSITargetEmulator在存储资源的可管理性、安全性等功能性方面具有较大的优势,但这种优势不是以牺牲存储控制器的性能为代价的。我们通过在前端应用服务器上使用Iometer,在VIC和SCSITargetEmulator的两种情况下,对多个网络磁盘的总带宽和平均响应延迟进行测试。表5表示VIC和SCSITargetEmulator的配置,具体如下表5存储控制器的软、硬件配置前端应用服务器配置如表6所示表6应用服务器的软、硬件配置测试使用的IO请求方式是完全连续的,大小为128K,读写操作的比例分别为80%和20%(这个比例符合一般数据流的读写特征)。我们使用VIC的虚拟化功能在每一个物理设备上创建一个虚拟设备,测试不同数目的虚拟设备的总带宽和平均延迟,并和带有8个物理磁盘的SCSITargetEmulator在相同条件下的测试结果作比较,得到两者之间的总带宽和平均延迟比较图,分别如图5和图6所示通过比较VIC和SCSITargetEmulator的IO性能测试结果,我们可以发现VIC比SCSITargetEmulator的总带宽损失不超过3.6%,平均延迟增加不超过8%。这也就说明VIC比SCSITargetEmulator复杂的管理功能并没有带来太多的额外开销。这是因为IO操作的主要延迟是在读写磁盘操作上,这个延迟是毫秒级的,而在数据通路上的地址映射过程的延迟是微秒级,其相对于读写磁盘的延迟可以忽略不计,因此由于引入虚拟化功能而带来的IO性能影响不是很大。2.CPU利用率IO性能测试是把VIC系统整体当作多个虚拟存储设备,测量的是它对存储网络所能提供的访问带宽和平均延迟,这是VIC系统的对外表现。但VIC系统由于在数据的访问通路上增加了地址映射的过程,必然会对其本身产生一定的影响,这些影响中以CPU利用率最有代表性。我们使用了与IO性能测试中相同的测试环境,分别测试VIC系统和SCSITargetEmulator系统的读写带宽与CPU利用率之间的关系。读带宽或写带宽与CPU利用率的关系分别如图7、图8所示,这两个图对应的测试所采用的Iometer参数都为100%顺序操作,传输块大小为128K,不过读带宽测试使用的100%读请求,写带宽测试使用的是100%写请求。我们之所以采用完全读或完全写的方式来测量总带宽与CPU利用率之间的关系,是因为VIC系统中写操作的处理比读操作复杂。对于写操作,VIC要进行两次中断分别来接受命令和数据,而对于读操作只需中断一次来接受命令。从图中我们可以看出无论是VIC系统还是SCSITargetEmulator,其读/写访问带宽的提升必然带来CPU利用率的提高。但在相同幅度带宽变化的情况下,VIC系统的CPU利用率提高的幅度大于SCSITargetEmulator,这说明VIC系统确实是延长了IO请求的处理路径,增加了系统的负担。目前VIC系统的读/写带宽最高能达到120MB左右,这受限于Utlra160的160MBSCSI总线带宽。此时CPU利用率不到25%,还有大量的计算资源可供使用。即使万一发生计算资源不够的情况,我们也可以通过增加计算资源或更新硬件系统的方法来解决。发明小结本发明所述的虚拟化智能控制器是在UNH大学的SCSITargetEmulator的基础上增加了访问控制管理、地址映射、存储资源管理、元数据管理等子模块,从而使得VIC具有了虚拟化存储管理的功能。每当VIC接收到存储网络发送过来的IO请求的时候,首先对该请求的权限进行验证,这样就使得没有操作权限的请求无法得以执行,从而提高了应用服务器数据的安全性。经过验证的IO请求执行的时候通过地址映射,实时地查询虚拟设备的信息,这使得应用服务器能够即时地知道虚拟设备信息的变化;而另一方面虚拟设备的存储空间是通过Table的方式组织起来,这使得我们可以方便地进行虚拟存储空间的管理。这两方面的结合就使得VIC系统具有动态创建虚拟设备、动态扩容等功能,便利了应用服务器对存储资源的使用,满足电子商务等应用对存储的动态配置的需求。多个拷贝的元数据管理方式提高了系统的可靠性,使得系统在有元数据失效的时候能够恢复;另外VIC系统能够对元数据系统的配置信息进行检验和有选择的恢复,从而保证系统具有较好的可用性。通过对VIC系统性能测试的结果表明只需耗费VIC的少量CPU资源就可以获得强大的存储资源管理功能,这说明我们的虚拟化智能控制器的设计是非常合理、有效、成功的。权利要求1.SAN系统中虚拟化智能控制器的实现方法,其特征在于所述的虚拟化智能控制器添加在存储区域网络即SAN系统的应用服务器和存储设备之间,它是一个或多个用通用计算机实现的虚拟化智能控制器,简称VIC;所述的一个或多个VIC把SAN系统划分为主机SAN和存储设备SAN两个部分,其中主机SAN连接着应用服务器和VIC,此时VIC充当的是存储资源的角色;存储设备SAN连接着VIC和各类存储设备,此时VIC的作用是管理存储资源;所述的VIC包含以下三个层次访问控制管理层该层负责接收从应用服务器发送过来的IO请求,对各请求的执行权限进行检查,并把有操作权限的IO请求发送到下面所述的存储虚拟化层;所述的访问控制管理层在内存中维护着一张设备访问权限表,该表的每个条目记录着VDNumber即虚拟设备号,AccessBitmap即访问位图,PrivilegeBitmap即权限位图,其中AccessBitmap和PrivilegeBitmap是两个等长的机器数,记录着相应设备的访问控制信息,AccessBitmap中序号从低位算起的每个比特都代表着一台服务器能否访问该设备所在位是“1”表示允许访问,所在位是“0”表示拒绝访问;PrivilegeBitmap中序号从低位算起的每一个比特代表能访问该设备的服务器的具体操作权限;在PrivilegeBitmap中,序号从低位算起的每一位与AccessBitmap中序号从低位算起的每一位是相对应的,AccessBitmap和PrivilegeBitmap对应位的组合确定一台服务器的访问控制信息;所述访问控制信息包含着三种访问模式访问位和权限位都是“0”,表示拒绝访问;访问位和权限位都是“1”,表示具有读写权限;访问位为“1”,权限位为“0”,表示具有读权限;每当应用服务器加载启动器模式的光纤驱动程序时,它就通过主机SAN网络向VIC的设备访问权限表查询有哪些虚拟设备对它“可见”,然后再把这些“可见”的网络虚拟设备添加到应用服务器的SCSI设备链表中;存储虚拟化层该层实现存储虚拟化管理的功能,并能够对接收到的IO请求的地址信息进行转换,使其能够在实际物理设备上执行;该存储虚拟化层包含有√虚拟设备管理模块该模块在内存中为每一个虚拟设备维护着一张虚拟设备信息表,该表包含有如下数据项VD_Name即虚拟设备名称,lun即IO请求所对应的虚拟设备号,UUID即全局唯一的设备标识符,Type即虚拟设备类型,Capacity即虚拟设备容量,Space_list即虚拟设备存储空间构成表;所述的Space_list是一个PhysicalSegment即物理段,简称为PS的链表,每个PS记录着如下的几个数据项PD_ID,Offset,Length,用以表示一段在同一个物理设备上连续的存储空间,其中PD_ID表示物理设备的序号;Offset表示该段空间的起始偏移;Length是该端存储空间的大小;√地址映射模块该模块把所述访问控制管理层发送过来的虚拟IO请求转化成一个或多个能够在物理设备上实际执行的SCSI命令;所述虚拟设备IO请求的地址信息结构是一个lun、offset、length的三元组,其中lun表示该IO请求对应的虚拟设备号,offset是该请求的偏移,length表示该请求的数据大小;所述地址映射模块的具体地址映射过程依次如下一、找到虚拟设备号为lun的VD;二、根据VD的类型和offset,确定该IO请求的偏移即起始地址所在的PS;三、通过各虚拟请求的length字段确定物理请求的个数和各个对应物理请求的数据大小;四、形成多个能在物理设备上实际执行的SCSI命令;√元数据管理模块该模块记录有包括系统中物理设备、虚拟设备和访问控制信息在内的系统信息,这些信息都保存在两个SCSI硬盘上,统称为元数据磁盘,其中一个是主元数据盘,另一个是次元数据盘,两者形成备份关系;元数据信息中有一个标记,可以为WRITE_COMPLETE即元数据完整或NOT_COMPLETE即元数据不完整,用以标记元数据是否完整;将元数据从物理磁盘导入内存的具体过程按如下步骤进行a、扫描系统中所有的物理磁盘,找到所述两个元数据盘;b、完整性判断若主元数据盘的标记是NOT_COMPLETE标记,而次元数据盘的标记是WRITE_COMPLETE,则主元数据盘的元数据信息是不完整的,用次元数据盘的数据来覆盖主元数据盘的数据;若主元数据盘的信息是WRITE_COMPLETE,而次元数据盘的是NOT_COMPLETE,则在写次元数据盘的时候出错,用主元数据的数据来覆盖次元数据盘的元数据;若主、次两个元数据盘的标记都是WRITE_COMPLETE,则表示两个元数据盘的数据都是完整的;c、有效性判断把主元数据盘上的元数据导入内存,检查元数据信息中的物理设备信息,即对比能够扫描到的物理设备的UUID和元数据信息中的UUID列表,从而判断一个物理设备能否能够被重新使用;若元数据信息的UUID列表中的物理设备未扫描到,VIC把该物理设备的信息以及错误信息写入日志,并从元数据信息中删除该物理设备的信息以及其他相关信息;物理设备管理层,该层执行存储虚拟化层发送过来的SCSI命令,同时也负责物理设备的检测和抽象;所述SCSI命令的执行通过调用Linux系统的SCSI中间层驱动中的scsi_do_req函数完成;而物理设备的检测和抽象按以下步骤依次实现a、VIC启动时,扫描系统的SCSI设备链表;b、每扫描到一个存储设备,建立相应的物理设备结构;c、为每一个设备分配一个UUID;d、VIC把该设备的存储空间按照固定大小的块进行划分,并把这些空间添加进存储虚拟化的存储池中;本发明所述的SAN系统中虚拟化智能控制器的实现方法依次含有以下步骤步骤1虚拟化智能控制器通过SAN网络接口接收从应用服务器发送过来的IO请求,并把请求转发给访问控制管理层;步骤2访问控制管理层从IO请求中解析出所要执行的操作以及相应的设备信息,并同设备访问权限表中的信息进行比较,判断是否允许执行该操作;若与访问权限信息不符,则直接返回;若该IO请求有操作权限,就转发给存储虚拟化层;步骤3存储虚拟化层根据虚拟设备的信息,对IO请求的地址信息进行分析,产生能在物理存储设备上直接执行的SCSI命令,并把这些命令发送给物理设备管理层;步骤4物理设备管理层执行SCSI命令,并把执行结果返回给主机SAN网络接口;步骤5主机SAN网络接口把IO请求的执行结果发送给相应的应用服务器。全文摘要SAN系统中虚拟化智能控制器的实现方法属于存储区域网络领域。本发明的特征在于在SAN中的数据通路上引入虚拟化智能控制器,从而把SAN系统划分成两个独立的子系统设备SAN和主机SAN。其中设备SAN负责存储资源的组织、管理,而主机SAN只需关注于存储资源的使用即可。虚拟化智能控制器居于两者之间,是设备SAN和主机SAN联系的纽带,它能够管理各种各样的存储设备,并能够对异构的主机SAN提供统一的存储资源视图,从而简化存储资源的管理。另外虚拟化智能控制器的访问控制管理提供了对IO请求权限的验证功能,防止非法的操作导致的数据损失。它非常适合异构的应用服务器环境下对异构的存储资源的管理进行有效的管理,为日益复杂的存储管理问题提供了一种有效的解决方法。文档编号G06F13/14GK1694081SQ20051001182公开日2005年11月9日申请日期2005年5月31日优先权日2005年5月31日发明者舒继武,薛巍,章宏灿,王迪,郑纬民申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1