本发明涉及一种VMware(威睿,是一种虚拟机软件)虚拟化存储分配方法及系统,特别是涉及一种基于循环队列算法的VMware虚拟化存储分配方法及系统。
背景技术:
虚拟化技术从广义上来说,就是通过映射或抽象的方式屏蔽物理设备复杂性,增加一个管理层面,激活一种资源并使之更易于透明控制。它可以有效简化基础设施的管理,增加IT资源的利用率和能力,比如服务器、网络或存储。
存储虚拟化是一种贯穿于整个IT环境、用于简化本来可能会相对复杂的底层基础架构的技术。存储虚拟化的思想是将资源的逻辑映像与物理存储分开,从而为系统和管理员提供一幅简化、无缝的资源虚拟视图。
对于用户来说,虚拟化的存储资源就像是一个巨大的“存储池”,用户不会看到具体的磁盘或磁带,也不必关心自己的数据经过哪一条路径通往哪一个具体的存储设备。
从管理的角度来看,虚拟存储池是采取集中化的管理,并根据具体的需求把存储资源动态地分配给各个应用。值得特别指出的是,利用虚拟化技术,可以用磁盘阵列模拟磁带库,为应用提供速度像磁盘一样快、容量却像磁带库一样大的存储资源,这就是当今应用越来越广泛的虚拟磁带库(VTL,Virtual Tape Library),在当今企业存储系统中扮演着越来越重要的角色。
通过将一个或多个目标(Target)服务或功能与其它附加的功能集成,统一提供有用的全面功能服务。典型的虚拟化包括如下一些情况:屏蔽系统的复杂性,增加或集成新的功能,仿真、整合或分解现有的服务功能等。虚拟化是作用在一个或者多个实体上的,而这些实体则是用来提供存储资源及服务的。
随着大数据和云计算的迅速发展,越来越多的企业和公司开始购买服务器,搭建符合自身需求的VMware存储虚拟化集群环境,从而满足自身业务需求的发展。只有拥有一个良好的VMware存储虚拟化集群,才能够应对不断增长的数据量和要求越来越高的计算性能。
在VMware存储虚拟化集群环境搭建过程中,伴随数据存储量的不断增大,服务器存储资源的不足现象会频繁发生。针对这一问题,企业的解决方法一般有两种:第一,删除无用数据或陈旧数据,进行数据覆盖;第二,购买服务器存储资源,扩大存储空间。但是对于数据删除和添加服务器存储资源的操作,往往都是采用人工操作的方式进行处理,即手动进行数据删除和数据迁移等操作。不仅浪费大量人力成本,而且服务器存储资源的利用率也不高。
技术实现要素:
本发明要解决的技术问题是为了克服现有技术中数据存储量不断增大、服务器存储资源不足时往往采用人工操作方式处理、导致人力成本高及存储资源利用率低的缺陷,提供一种基于循环队列算法的VMware虚拟化存储分配方法及系统,对集群存储资源进行序列化处理,组合成一条存储队列,从而实现集群存储资源自动化管理机制,不仅系统存储资源的利用率能够得到很大程度提升和管理复杂度在很大程度上得到降低,而且还可以节省大量的人力资源成本。
本发明是通过下述技术方案来解决上述技术问题的:
本发明提供一种VMware虚拟化存储分配方法,其特点在于,其包括以下步骤:
S1、构建SAN应用的VMware存储虚拟化的存储管理平台,将集群中的服务器、存储资源和服务进行虚拟化整合处理;
S2、在该存储管理平台的集群存储资源虚拟化管理界面中,将存储空间资源按照物理块独立性划分为多个存储块,并对该些存储块进行序列化处理;
S3、对序列化存储空间建立循环存储队列,其中,Head指向该循环存储队列的队首的存储块中第一个数据的位置,Rear指向该循环存储队列的队尾的存储块中最后一个数据的位置,该循环存储队列的总长度len等于该些存储块的总数;
S4、基于循环队列算法对序列化存储空间执行数据操作,该数据操作包括导入数据、释放数据、增加存储空间和删除存储空间。
较佳地,步骤S4中的导入数据包括以下步骤:
当有数据需要导入时,判断是否(Rear+1)%len=Head,若为true则显示一存储块的存储空间不足预警信息,由用户确定是否删除队首数据或新增存储空间以解除警报,否则为false则将数据保存到Rear指针指向的存储块的剩余空间,若Rear所指向的存储块的剩余空间不足则执行Rear->Rear.next操作,并将剩余数据导入到现在Rear所指向的存储块;
其中,对于删除队首数据操作,若队首数据全部删除,则head->head.next。
较佳地,步骤S4中的释放数据包括释放以队首数据开头的连续数据和释放Head和Rear之间的数据;
其中,释放以队首数据开头的连续数据包括以下步骤:
将直接移动Head指针到删除数据的最后一个数据的下一个位置处;
释放Head和Rear之间的数据包括以下步骤:
删除Head和Rear之间的数据,进行数据迁移操作,将数据存储位置进行紧凑操作,同时Rear指针移动到紧凑后数据的最后一个数据位置。
较佳地,步骤S4中的增加存储空间包括以下步骤:
标注需增加的存储空间的存储块为P,先执行P=Rear.next,后执行Rear=P,则将P加入到Rear和Rear.next之间,然后对整个队列重新进行序列化排序操作。
较佳地,步骤S4中的删除存储空间包括删除无数据的存储空间和删除存在有效数据的存储空间;
其中,删除无数据的存储空间包括以下步骤:
标注需删除的存储空间的存储块为P,执行Rear.next=P.next,删除P存储块,然后对整个队列重新进行序列化排序操作;
删除存在有效数据的存储空间包括以下步骤:
执行Rear.next= Replace_Store.next操作,将Replace_Store指向的存储块从该循环存储队列中取出;
将Del_Store数据块中的数据拷贝到Replace_Store存储块中;
执行Del_Front= Replace_Store,然后执行Replace_Store =Del_Stroe.next,将Replace_Store存储块替换到Del_Store的位置;
对循环队列重新序列化,同时删除Del_Store存储块;
其中,Del_Stroe是要删除的存储块,Del_Front是Del_Stroe的前一个存储节点,Replace_Store=Rear.next是数据即将迁移到的存储块。
本发明还提供一种VMware虚拟化存储分配系统,其特点在于,其包括:
一构建模块,用于构建SAN应用的VMware存储虚拟化的存储管理平台,将集群中的服务器、存储资源和服务进行虚拟化整合处理;
一处理模块,用于在该存储管理平台的集群存储资源虚拟化管理界面中,将存储空间资源按照物理块独立性划分为多个存储块,并对该些存储块进行序列化处理;
一建立模块,用于对序列化存储空间建立循环存储队列,其中,Head指向该循环存储队列的队首的存储块中第一个数据的位置,Rear指向该循环存储队列的队尾的存储块中最后一个数据的位置,该循环存储队列的总长度len等于该些存储块的总数;
一执行模块,用于基于循环队列算法对序列化存储空间执行数据操作,该数据操作包括导入数据、释放数据、增加存储空间和删除存储空间。
较佳地,当有数据需要导入时,该执行模块用于判断是否(Rear+1)%len=Head,若为true则显示一存储块的存储空间不足预警信息,由用户确定是否删除队首数据或新增存储空间以解除警报,否则为false则将数据保存到Rear指针指向的存储块的剩余空间,若Rear所指向的存储块的剩余空间不足则执行Rear->Rear.next操作,并将剩余数据导入到现在Rear所指向的存储块;
其中,对于删除队首数据操作,若队首数据全部删除,则head->head.next。
较佳地,释放数据包括释放以队首数据开头的连续数据和释放Head和Rear之间的数据;
其中,释放以队首数据开头的连续数据包括:
该执行模块用于将直接移动Head指针到删除数据的最后一个数据的下一个位置处;
释放Head和Rear之间的数据包括:
该执行模块用于删除Head和Rear之间的数据,进行数据迁移操作,将数据存储位置进行紧凑操作,同时Rear指针移动到紧凑后数据的最后一个数据位置。
较佳地, 标注需增加的存储空间的存储块为P,该执行模块用于先执行P=Rear.next,后执行Rear=P,则将P加入到Rear和Rear.next之间,然后对整个队列重新进行序列化排序操作。
较佳地,删除存储空间包括删除无数据的存储空间和删除存在有效数据的存储空间;
其中,删除无数据的存储空间包括:
标注需删除的存储空间的存储块为P,该执行模块用于执行Rear.next=P.next,删除P存储块,然后对整个队列重新进行序列化排序操作;
删除存在有效数据的存储空间包括:
该执行模块用于执行Rear.next= Replace_Store.next操作,将Replace_Store指向的存储块从该循环存储队列中取出;
将Del_Store数据块中的数据拷贝到Replace_Store存储块中;
执行Del_Front= Replace_Store,然后执行Replace_Store =Del_Stroe.next,将Replace_Store存储块替换到Del_Store的位置;
对循环队列重新序列化,同时删除Del_Store存储块;
其中,Del_Stroe是要删除的存储块,Del_Front是Del_Stroe的前一个存储节点,Replace_Store=Rear.next是数据即将迁移到的存储块。
在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。
本发明的积极进步效果在于:
本发明通过VMware虚拟化存储技术,对服务器集群的资源和功能进行整合,将系统底层的复杂操作进行虚拟化处理,从而为用户提供一个统一和全面的功能服务平台,简化对用来提供服务和存储的实体的管理。然后通过采用循环队列算法,将实体的存储资源进行序列化处理,组合成一个循环队列,从而实现存储资源的自动化管理,提高系统存储资源的利用率和管理的复杂度,同时节省大量的人力成本。
附图说明
图1为本发明较佳实施例的VMware虚拟化存储分配方法的流程图
图2为本发明较佳实施例的VMware存储虚拟化物理架构图。
图3为本发明较佳实施例的集群存储虚拟化存储区域划分和序列化过程。
图4为本发明较佳实施例的循环队列指针的结构示意图。
图5为本发明较佳实施例的VMware虚拟化存储分配系统的结构框图。
图6为本发明较佳实施例的数据导入操作过程的示意图。
图7为本发明较佳实施例的释放以队首数据开头的连续数据的操作过程的示意图。
图8为本发明较佳实施例的释放Head和Rear之间的数据的操作过程的示意图。
图9为本发明较佳实施例的增加存储空间的操作过程的示意图。
图10为本发明较佳实施例的删除存储空间的操作过程的示意图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案,但并不因此将本发明限制在所述的实施例范围之中。
本实施例提出基于循环队列算法的VMware虚拟化存储分配方法及系统,对集群存储资源进行序列化处理,组合成一条存储队列,从而实现集群存储资源自动化管理机制,不仅系统存储资源的利用率能够得到很大程度提升和管理复杂度在很大程度上得到降低,而且还可以节省大量的人力资源成本。
如图1所示,该基于循环队列算法的VMware虚拟化存储分配方法具体的实现过程为:
第一步:构建集群VMware存储虚拟化平台
构建存储域网络(SAN)应用的VMware存储虚拟化的存储管理平台,将集群中的服务器、存储资源和服务进行虚拟化整合处理。其中,VMware存储虚拟化物理架构如图2所示。
第二步:存储资源划分和序列化
在该存储管理平台的集群存储资源虚拟化管理界面中,将存储空间资源按照物理块独立性划分为多个存储块,并对该些存储块进行序列化处理,具体操作如图3所示。
第三步:基于循环队列算法对图3中的序列化存储空间建立循环存储队列,具体操作如下:
把如图3为例的存储空间序列化后,组合成一个循环队列指针,其中,Head(头指针)指向标号为0的存储块中第一个数据的位置,Rear(尾指针)指向标号为4的存储块最后一个数据的位置,整个虚拟化存储空间划分的存储块总数为len=5,即该循环队列的总长度,该循环队列指针结构如图4所示。
第四步:对于存储虚拟化存储空间的操作可以分为导入数据、释放数据、增加存储空间和删除存储空间四种主要的操作。
如图5所示,本实施例提供的VMware虚拟化存储分配系统,其包括一构建模块1、一处理模块2、一建立模块3和一执行模块4。
上面介绍了该VMware虚拟化存储分配系统包括的功能模块,下面具体介绍各功能模块所具备的功能:
该构建模块1用于构建SAN应用的VMware存储虚拟化的存储管理平台,将集群中的服务器、存储资源和服务进行虚拟化整合处理。
该处理模块2用于在该存储管理平台的集群存储资源虚拟化管理界面中,将存储空间资源按照物理块独立性划分为多个存储块,并对该些存储块进行序列化处理。
该建立模块3用于对序列化存储空间建立循环存储队列,其中,Head指向该循环存储队列的队首的存储块中第一个数据的位置,Rear指向该循环存储队列的队尾的存储块中最后一个数据的位置,该循环存储队列的总长度len等于该些存储块的总数。
该执行模块4用于基于循环队列算法对序列化存储空间执行数据操作,该数据操作包括导入数据、释放数据、增加存储空间和删除存储空间。
具体每一种操作的设计方案如下所示:
注:由于是集群环境,因此这里的数据块总数应大于1。
(1)导入数据
导入数据的具体流程如下:
当有数据需要导入时,首先判断(Rear+1)%len=Head,如果为true则显示一存储块的存储空间不足预警信息,需要由用户确定是否删除队首数据或新增存储空间,解除警报。其中对于删除队首数据操作,如果队首数据全部删除,则head->head.next,即head指向它的下一个位置处。
否则为false表示空间充足,将数据保存到Rear指针指向的存储块的剩余空间,如果Rear所指向的存储块的剩余空间不足则执行Rear->Rear.next操作,即指向Rear的下一个位置,并将剩余数据导入到现在Rear所指向的存储空间。数据导入操作过程描述如图6所示。
当有数据需要导入时,该执行模块4执行以下功能操作:
该执行模块4用于判断是否(Rear+1)%len=Head,若为true则显示一存储块的存储空间不足预警信息,由用户确定是否删除队首数据或新增存储空间以解除警报,否则为false则将数据保存到Rear指针指向的存储块的剩余空间,若Rear所指向的存储块的剩余空间不足则执行Rear->Rear.next操作,并将剩余数据导入到现在Rear所指向的存储块。数据导入操作具体如图6所示。
其中,对于删除队首数据操作,若队首数据全部删除,则head->head.next。
(2)释放数据
释放数据的具体流程如下:
释放数据操作分为释放的是以队首数据开头的连续数据和释放Head和Rear之间的数据。
其中,以队首数据开头的连续数据的操作中,则将直接移动Head指针到删除数据的最后一个数据的下一个位置处,具体描述如图7所示:
删除Head和Rear之间的数据,则需要进行数据迁移操作,将数据存储位置进行紧凑操作,同时Rear指针也进行移动到紧凑后数据的最后一个数据位置,具体描述如图8所示。
当释放数据时,该执行模块4执行以下功能操作:
释放数据包括释放以队首数据开头的连续数据和释放Head和Rear之间的数据。
其中,释放以队首数据开头的连续数据包括:
见图7,该执行模块4用于将直接移动Head指针到删除数据的最后一个数据的下一个位置处。
释放Head和Rear之间的数据包括:
见图8,该执行模块4用于删除Head和Rear之间的数据,进行数据迁移操作,将数据存储位置进行紧凑操作,同时Rear指针移动到紧凑后数据的最后一个数据位置。
(3)增加存储空间
增加存储空间的具体流程如下:
当需要增加存储空间时,标注需增加的存储空间的存储块为P,先执行P=Rear.next,后执行Rear=P,则将P加入到Rear和Rear.next之间,然后对整个队列重新进行序列化排序操作,具体过程如图9所示。
当需要增加存储空间时,该执行模块4执行以下功能操作:
标注需增加的存储空间的存储块为P。
如图9所示,该执行模块4用于先执行P=Rear.next,后执行Rear=P,则将P加入到Rear和Rear.next之间,然后对整个队列重新进行序列化排序操作。
(4)删除存储空间
删除存储空间的具体流程如下:
删除存储空间分为两种情况:
第一种是删除无数据存储空间;第二种是删除存在有效数据的存储空间。其中,第一种情况是增加存储空间的逆过程。标注需删除的存储空间的存储块为P,执行Rear.next=P.next,删除P存储块,然后对整个队列重新进行序列化排序操作。
第二种情况需要进行存储空间指针替换,然后进行数据的迁移,转变成无数据的存储空间的删除操作,具体描述如图10所示:
其中,Del_Stroe是要删除的存储空间,Del_Front是Del_Stroe的前一个存储节点,Replace_Store=Rear.next是数据即将迁移到的存储块。整个操作分为四步,这四步操作具体描述入下:
第一步:执行Rear.next= Replace_Store.next操作,即将Replace_Store指向的存储块从该循环存储队列中取出;
第二步:将Del_Store数据块中的数据拷贝到Replace_Store存储块中;
第三步:执行Del_Front= Replace_Store,然后执行Replace_Store =Del_Stroe.next,即将Replace_Store存储块替换到Del_Store的位置;
第四步:对循环队列重新序列化,同时删除Del_Store存储块。
当需要删除存储空间时,该执行模块4执行以下功能操作:
删除存储空间包括删除无数据的存储空间和删除存在有效数据的存储空间;
其中,删除无数据的存储空间包括:
标注需删除的存储空间的存储块为P。
该执行模块4用于执行Rear.next=P.next,删除P存储块,然后对整个队列重新进行序列化排序操作。
删除存在有效数据的存储空间包括:
如图10所示,该执行模块4用于执行Rear.next= Replace_Store.next操作,将Replace_Store指向的存储块从该循环存储队列中取出;
将Del_Store数据块中的数据拷贝到Replace_Store存储块中;
执行Del_Front= Replace_Store,然后执行Replace_Store =Del_Stroe.next,将Replace_Store存储块替换到Del_Store的位置;
对循环队列重新序列化,同时删除Del_Store存储块;
其中,Del_Stroe是要删除的存储块,Del_Front是Del_Stroe的前一个存储节点,Replace_Store=Rear.next是数据即将迁移到的存储块。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。