一种分布式存储空间的管理方法和分布式存储系统的制作方法

文档序号:7776479阅读:219来源:国知局
一种分布式存储空间的管理方法和分布式存储系统的制作方法
【专利摘要】本发明公开了一种分布式存储空间的管理方法和分布式存储系统,该方案中当第一控制节点确定出第一分配队列的当前容量小于预先设置的容量阈值时,获取未分配的存储空间的存储空间标识信息,并将获取的存储空间标识信息存储到第一分配队列中,以便第二控制节点能够从第一分配队列中获取存储的存储空间标识信息,该方案通过使用队列完成存储空间的管理,使第一控制节点和第二控制节点在操作存储空间信息时是两个完全独立的过程,不会相互影响,因此相对于改变现有的事务机制而言,本方案实现简单,易于维护和扩展,存储空间的分配效率也相应提高。
【专利说明】一种分布式存储空间的管理方法和分布式存储系统
【技术领域】
[0001]本发明涉及磁盘存储【技术领域】,尤其是涉及一种分布式存储空间的管理方法和分布式存储系统。
【背景技术】
[0002]随着全球进入大数据时代,存储技术和存储业务不断革新,存储系统的形式得到了极大延伸。随着快照技术和数据保护技术被相继提出,包括最近非常热门的“虚拟机”和“云计算”技术,都极大的促进了存储技术的发展。
[0003]在存储技术中,存储空间的分配是最基本也是最重要的技术之一。目前有一种利用堆栈和事务机制实现的存储空间的分配方案:将包含有存储设备服务器的存储系统的容量合并成统一的存储池Pool,当终端侧向存储设备服务器发送存储空间分配请求时,存储设备服务器中的控制器作为逻辑卷Volume和Pool的工作控制器,控制Volume从堆栈中获取已分配的存储空间的信息,比如存储空间的标识(Identity,ID),这一操作属于前台事务;而堆栈中已分配的存储空间的ID是控制器控制Pool分配存储空间,再将分配的存储空间的存储空间的ID向堆栈中添加的,这一操作属于后台事务。
[0004]目前为了提高存储设备服务器存储数据时的安全性,通常一个存储设备服务器中都设置有两个控制器,包括一个主控制器和一个备用控制器。那么当Volume和Pool的工作控制器不在同一节点时,如图1所示,为Volume和Pool的工作控制器不在同一节点时的存储空间分配示意图,其中,A控制器作为Volume的工作控制器,B控制器作为Pool的工作控制器。参考图1,后台事务的两个阶段“控制Pool分配存储空间”和“向堆栈中添加分配的存储空间的ID”需要由A控制器和B控制器分别完成,而传统的事务机制只支持在一个控制器上执行一系列操作,无法支持这种跨控制器的操作。因此,必须对传统的事务机制进行改进,需要完成双端镜像、数据转发、双端互斥、状态迁移等一系列操作,这样做过于复杂繁琐,可扩展性和可维护性也比较差,还会影响存储空间的分配效率。
[0005]另外,A控制器既要从堆栈中获取存储空间的ID,又要在B控制器的控制下向堆栈添加存储空间的ID,即前台事务和后台事务需要对同一个堆栈进行修改,该修改过程包括内存准备阶段和提交硬盘阶段。那么当前台事务和后台事务同时对同一个堆栈进行修改时,为了避免两个事务相互影响而无法满足事务的数据一致性的特点,可以在内存准备阶段加锁保护,使这两个事务可以分先后顺序执行,不会相互影响,但是在提交硬盘阶段却无法加锁保护,所以仍然可能导致事务的数据不一致,因此同样要对传统的事务机制进行改进,仍然存在上述的复杂繁琐、可扩展性和可维护性比较差和存储空间的分配效率较低的问题。

【发明内容】

[0006]本发明实施例提供一种分布式存储空间的管理方法和分布式存储系统,用以解决现有技术中当逻辑卷和存储池的工作控制器不在同一节点时存在的分配过程复杂繁琐、可扩展性和可维护性比较差和存储空间的分配效率较低的问题。
[0007]第一方面,提供一种分布式存储空间的管理方法,应用于分布式存储系统中,所述分布式存储系统中包含至少一个存储空间服务器,在创建逻辑卷时,所述逻辑卷的工作控制器所在节点为第二控制节点,所述逻辑卷对应的存储池的工作控制器所在节点为第一控制节点,所述方法包括:
[0008]第一控制节点确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;所述第一分配队列中存储的存储空间标识信息能够被第二控制节点获取;
[0009]当所述容量小于预先设置的容量阈值时,获取所述第一控制节点所在的存储设备服务器中存储的未分配的存储空间的存储空间标识信息,和/或第二分配队列中存储的未分配的存储空间的存储空间标识信息;其中,所述第二分配队列中存储的存储空间标识信息是除所述第一控制节点和所述第二控制节点之外的其它控制节点对自身所在的存储设备服务器中未分配的存储空间进行分配得到的;
[0010]将获取的未分配的存储空间的存储空间标识信息存储到所述第一分配队列中;
[0011]其中,每个存储空间标识信息所指示的存储空间均是根据对存储空间服务器中的每个硬盘的空间进行切分得到硬盘切分单元CK,再对由来自不同硬盘的CK组成的存储集合CKG进行划分得到的。
[0012]结合第一方面,在第一种可能的实现方式中,所述方法还包括:
[0013]所述第二控制节点接收到存储空间分配请求消息后,从所述第一分配队列中获取与所述存储空间分配请求消息请求的存储空间大小对应的存储空间标识信息;
[0014]将获取到的存储空间标识信息反馈给所述存储空间分配请求消息的发送方,使所述发送方能够将数据存储到由获取到的存储空间标识信息所指示的存储空间组成的逻辑卷中。
[0015]结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,每个存储空间标识信息所指示的存储空间的大小均相同;则
[0016]第一控制节点确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量,具体包括:
[0017]根据所述第一分配队列中的头指针、尾指针的位置信息以及每个存储空间标识信息所指示的存储空间的大小,确定所述第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;
[0018]其中,所述头指针指向所述第一分配队列中已存储存储空间标识信息的起始位置,所述尾指针指向所述第一分配队列中未存储存储空间标识信息的起始位置。
[0019]结合第一方面、第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,还包括:
[0020]第一控制节点从第一释放队列中获取待释放的存储空间标识信息;
[0021]释放与所述待释放的存储空间标识信息对应的存储空间。
[0022]结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,释放与所述待释放的存储空间标识信息对应的存储空间,具体包括:
[0023]判断所述待释放的存储空间标识信息对应的存储空间是否来自除第一控制节点之外的其它控制节点所在的存储设备服务器;[0024]当判断结果为是时,将所述待释放的存储空间标识信息存储到能被所述其它控制节点访问的第二释放队列中,使所述其它控制节点能够从所述第二释放队列中获取所述待释放的存储空间标识信息,并将所述其它控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间;
[0025]当判断结果为否时,将所述第一控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间。
[0026]第二方面,提供一种分布式存储系统,所述分布式存储系统中包含至少一个存储空间服务器,在创建逻辑卷时,所述逻辑卷的工作控制器所在节点为第二控制节点,所述逻辑卷对应的存储池的工作控制器所在节点为第一控制节点,其中:
[0027]所述第一控制节点,用于确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;当所述容量小于预先设置的容量阈值时,获取所述第一控制节点所在的存储设备服务器中存储的未分配的存储空间的存储空间标识信息,和/或第二分配队列中存储的未分配的存储空间的存储空间标识信息;将获取的未分配的存储空间的存储空间标识信息存储到所述第一分配队列中;
[0028]其中,所述第一分配队列中存储的存储空间标识信息能够被第二控制节点获取;所述第二分配队列中存储的存储空间标识信息是除所述第一控制节点和所述第二控制节点之外的其它控制节点对自身所在的存储设备服务器中未分配的存储空间进行分配得到的;以及每个存储空间标识信息所指示的存储空间均是根据对存储空间服务器中的每个硬盘的空间进行切分得到硬盘切分单元CK,再对由来自不同硬盘的CK组成的存储集合CKG进行划分得到的。
[0029]结合第二方面,在第一种可能的实现方式中,所述系统还包括:
[0030]所述第二控制节点,用于接收到存储空间分配请求消息后,从所述第一分配队列中获取与所述存储空间分配请求消息请求的存储空间大小对应的存储空间标识信息;将获取到的存储空间标识信息反馈给所述存储空间分配请求消息的发送方,使所述发送方能够将数据存储到由获取到的存储空间标识信息所指示的存储空间组成的逻辑卷中
[0031]结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,每个存储空间标识信息所指示的存储空间的大小均相同;则
[0032]所述第一控制节点,具体用于:
[0033]根据所述第一分配队列中的头指针、尾指针的位置信息以及每个存储空间标识信息所指示的存储空间的大小,确定所述第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;其中,所述头指针指向所述第一分配队列中已存储存储空间标识信息的起始位置,所述尾指针指向所述第一分配队列中未存储存储空间标识信息的起始位置。
[0034]结合第二方面、第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述第一控制节点,还用于:
[0035]从第一释放队列中获取待释放的存储空间标识信息,并释放与所述待释放的存储空间标识信息对应的存储空间。
[0036]结合第二方面的第三种可能的实现方式中,在第四种可能的实现方式中,所述第一控制节点,具体用于:
[0037]判断所述待释放的存储空间标识信息对应的存储空间是否来自除第一控制节点之外的其它控制节点所在的存储设备服务器;当判断结果为是时,将所述待释放的存储空间标识信息存储到能被所述其它控制节点访问的第二释放队列中,使所述其它控制节点能够从所述第二释放队列中获取所述待释放的存储空间标识信息,并将所述其它控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间;当判断结果为否时,将所述第一控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间。
[0038]本发明实施例中,当第一控制节点确定出第一分配队列的当前容量小于预先设置的容量阈值时,获取未分配的存储空间的存储空间标识信息,并将获取的存储空间标识信息存储到第一分配队列中,以便第二控制节点能够从第一分配队列中获取存储的存储空间标识信息,该方案通过使用队列完成存储空间的管理,使第一控制节点和第二控制节点在操作存储空间信息时是两个完全独立的过程,不会相互影响,因此相对于改变现有的事务机制而言,本方案实现简单,易于维护和扩展,存储空间的分配效率也相应提高。
【专利附图】

【附图说明】
[0039]图1为现有技术中Volume和Pool的工作控制器不在同一节点时的存储空间分配示意图;
[0040]图2为本发明实施例一提供的一种分布式存储空间的管理方法的原理流程图;
[0041]图3为本发明实施例二提供的一种队列的结构示意图;
[0042]图4为本发明实施例二提供的一种分布式存储空间的分配方法的示意图;
[0043]图5为本发明实施例二提供的基于上述原理实现的Pool控制器和Volume控制器之间同步的不意图;
[0044]图6为本发明实施例三提供的一种分布式存储空间的分配方法在实际应用中的实现流程图;
[0045]图7为本发明实施例四提供的一种分布式存储系统的结构示意图;
[0046]图8为本发明实施例五提供的一种第一控制节点的硬件结构示意图。
【具体实施方式】
[0047]为了解决现有技术中当逻辑卷和存储池的工作控制器不在同一节点时存在的分配过程复杂繁琐、可扩展性和可维护性比较差和存储空间的分配效率较低的问题,本发明实施例提出了一种分布式存储空间的管理方法和分布式存储系统。该方案中当第一控制节点确定出第一分配队列的当前容量小于预先设置的容量阈值时,获取未分配的存储空间的存储空间标识信息,并将获取的存储空间标识信息存储到第一分配队列中,以便第二控制节点能够从第一分配队列中获取存储的存储空间标识信息,该方案通过使用队列完成存储空间的管理,使第一控制节点和第二控制节点在操作存储空间信息时是两个完全独立的过程,不会相互影响,因此相对于改变现有的事务机制而言,本方案实现简单,易于维护和扩展,存储空间的分配效率也相应提高。
[0048]下面将结合各个附图对本发明实施例技术方案的主要实现原理、【具体实施方式】及其对应能够达到的有益效果进行详细地阐述。
[0049]实施例一[0050]本发明实施例一提出一种分布式存储空间的管理方法,该方法应用于分布式存储系统中,该分布式存储系统中包含至少一个存储空间服务器,在创建逻辑卷时,逻辑卷的工作控制器所在节点为第二控制节点,逻辑卷对应的存储池的工作控制器所在节点为第一控制节点,如图2所示,其处理流程具体包括:
[0051]步骤21,第一控制节点确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;其中,该第一分配队列中存储的存储空间标识信息能够被第二控制节点获取;
[0052]当分布式存储系统中有多个存储空间服务器时,此时存储池Pool由多个存储空间服务器中的存储空间共同构成,在每个存储空间服务器上均会存在一个Pool的工作控制器。当创建逻辑卷时,会指定一个存储空间服务器为该逻辑卷的籍贯存储空间服务器,即在籍贯存储空间服务器上创建该逻辑卷(如果不指定的话,则默认该逻辑卷的工作控制器所在的存储空间服务器为籍贯存储空间服务器),则逻辑卷对应的存储池的工作控制器就是:逻辑卷所在的籍贯存储空间服务器上该逻辑卷所属的存储池的工作控制器。
[0053]本发明实施例中,每个存储空间标识信息所指示的存储空间可以是根据对存储空间服务器中的每个硬盘的空间进行切分得到硬盘切分单元(Chunk,CK),再对由来自不同硬盘的CK组成的存储集合(Chunk Group, CKG)进行划分得到的,具体的,首先将Pool中每个硬盘的存储空间划分成许多较小的CK,而来自不同硬盘的若干个CK共同组成一个CKG,再将每个CKG划分成许多更小的存储单元,可以称为Extent,而Extent的ID (称为ExtentID)即为存储空间标识信息。这种存储空间的划分方法能够使Pool中每个硬盘的读写10负载均衡,从而消除单盘热点。
[0054]进一步的,当每个存储空间标识信息所指示的存储空间大小均相同时,则可以按照下述方式来确定第一分配队列的当前容量:根据该第一分配队列中的头指针、尾指针的位置信息以及每个存储空间标识信息所指示的存储的大小,来确定该第一分配队列的当前容量,其中头指针指向第一分配队列中已存储存储空间标识信息的起始位置,尾指针则指向第一分配队列中未分配存储空间标识信息的起始位置。
[0055]步骤22,当第一分配队列中存储的存储空间标识信息所指示的存储空间的容量小于预先设置的容量阈值时,获取未分配的存储空间的存储空间标识信息;
[0056]其中,在获取未分配的存储空间的存储空间标识信息时,可以获取第一控制节点所在的存储设备服务器中存储的未分配的存储空间的存储空间标识信息;
[0057]由于第一控制节点所在的存储设备服务器能容纳的硬盘数量有限,存储空间也有限,因此不能够满足目前大数据大业务的分布式存储。为了使可用的存储空间更多,可以利用多个存储设备服务器共同实现存储空间的共享和分配,因此还可以采用下述方式来获取未分配的存储空间的存储空间标识信息:
[0058]获取第二分配队列中存储的未分配的存储空间的存储空间标识信息;其中,第二分配队列中存储的存储空间标识信息是除第一控制节点和第二控制节点之外的其它控制节点对自身所在的存储设备服务器中未分配的存储空间进行分配得到的。
[0059]步骤23,将获取的未分配的存储空间的存储空间标识信息存储到上述第一分配队列中,以便第二控制节点能够从上述第一分配队列中获取存储的存储空间标识信息。
[0060]其中,当第二控制节点接收到存储空间分配请求消息后,从该第一分配队列中获取与存储空间分配请求消息请求的存储空间大小对应的存储空间标识信息,然后将获取到的存储空间标识信息反馈给存储空间分配请求消息的发送方,使该发送方能够将数据存储至岫获取到的存储空间标识信息所指示的存储空间组成的逻辑卷中。
[0061]在某些情况下,例如当第二控制节点从第一分配队列中获取的存储空间标识信息所指示的存储空间不再被使用或者终止使用时,可以执行下述步骤24和步骤25以释放存储空间:
[0062]步骤24,从第一释放队列中获取待释放的存储空间标识信息;其中,第一释放队列中的存储空间标识信息是第二控制节点存储的。
[0063]步骤25,释放与该待释放的存储空间标识信息对应的存储空间。
[0064]其中,该步骤可以具体包括:
[0065]判断该待释放的存储空间标识信息对应的存储空间是否来自除第一控制节点之外的其它控制节点所在的存储设备服务器;
[0066]当判断结果为是时,将该待释放的存储空间标识信息存储到能被所述其它控制节点访问的第二释放队列中,使所述其它控制节点能够从该第二释放队列中获取该待释放的存储空间标识信息,并将自身所在的存储设备服务器中与该待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间;
[0067]当判断结果为否时,说明该待释放的存储空间标识信息对应的存储空间来自于第一控制节点所在的存储设备服务器,则直接将第一控制节点所在的存储设备服务器中与待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间。
[0068]本发明实施例中,通过使用队列完成存储空间的分配,使第一控制节点和第二控制节点在操作存储空间信息时是两个完全独立的过程,不会相互影响,因此与改变现有的事务机制的方法相比,本方案实现简单,易于维护和扩展,存储空间的分配效率也相应提闻。
[0069]实施例二
[0070]本发明实施例二是在图2所示方法基础上对本发明的分布式存储空间的分配方法的具体实现过程进行详细说明。
[0071]如图3所示,为本发明实施例二提供的一种队列的结构示意图。其中,上述实施例一中涉及到的第一分配队列、第二分配队列、第一释放队列和第二释放队列均是基于本发明实施例二提供的该队列的原理实现的。
[0072]参考图3,本发明实施例中的第一控制节点为负责向队列中存储存储空间标识信息的控制节点,因此称其为生产端,而第二控制节点为负责从队列中获取存储空间标识信息的控制节点,因此称其为消费纟而。该队列中包含:头指针Head、尾指针Tail,以及Head与Tail之间的缓存区Buffer。以本发明实施例中的第一分配队列为例,Head指向第一分配队列中已存储存储空间标识信息的起始位置,而Tail则指向第一分配队列中未分配存储空间标识信息的起始位置,Buffer为Head和Tail之间的区域。生产端和消费端在内存空间中共同维护该队列,而在硬盘空间中,消费端负责维护队列的Head,生产端负责维护队列的 Tail 和 Buffer0
[0073]较佳的,本发明实施例中的队列可以采用循环队列。
[0074]如图4所示,为本发明实施例二提供的基于上述队列的一种分布式存储空间的管理方法的示意图。其中,针对消费端而言,只需根据队列中的Head从队列获取Extent ID;而针对生产端而言,确定出队列的当前容量小于预先设置的容量阈值时,启动后台分配,获取未分配的存储空间的Extent ID,并根据队列中的Tail,将获取的Extent ID存储到队列中。
[0075]较佳的,消费端在从队列获取Extent ID后,可以将队列中Head当前的位置信息同步给生产端,同理,生产端也可以在将获取的Extent ID存储到队列中之后,再将队列中Tail以及Buffer当前的位置信息同步给消费端。
[0076]如图5所示,为本发明实施例二提供的基于上述原理实现的Pool工作控制器和Volume工作控制器之间同步的示意图。其中,Pool工作控制器为本发明实施例中的第一控制节点,该Pool上的Volume的Volume工作控制器为本发明实施例中的第二控制节点。
[0077]参考图5,Pool工作控制器和Volume工作控制器可以分布在同一个存储设备服务器上的不同控制节点上,也可以分布在不同存储设备服务器上的不同控制节点上。这样Pool工作控制器分配的Extent ID就要通过队列跨控制器传送到Volume工作控制器,同样Volume工作控制器释放的Extent ID就要通过队列跨控制器传送到Pool工作控制器,而且队列中的Head、Tail以及的位置信息必须保存在硬盘空间上,以便系统故障后可以上电恢复。
[0078]实施例三
[0079]下面以存储空间的分配过程为例,详细介绍本发明实施例提供的一种分布式存储空间的分配方法在实际应用中的实现过程。如图6所示,为本发明实施例三提供的一种分布式存储空间的分配方法在实际应用中的实现流程图。Volume Queue相当于本发明实施例中的第一分配队列,用于实现跨控制节点的存储空间的分配,Pool Queue相当于本发明实施例中的第二分配队列,用于实现跨存储设备服务器的存储空间的分配;本实施例中的第一分配队列和第二分配队列均为循环队列。
[0080]本发明实施例的Pool由多个存储设备服务器(本发明实施例中可以称存储设备服务器为引擎)包含的存储空间组成,在每个存储设备服务器上都存在一个该Pool的控制器,本发明实施例中将除第一控制节点外的其它控制器所在节点称为其它控制节点。
[0081]1> Volume Queue:Volume 工作控制器为 Extent ID 的消费端,控制 Volume QueueHead, Volume 的 Home Pair Pool 工作控制器为 Extent ID 的生产端,控制 Volume QueueTail。
[0082]其中,每个Volume在创建时,都会被指定一个引擎作为该Volume的籍贯引擎,即Home Pair (如果不指定的话,则默认为该Volume的Volume工作控制器所在引擎),所以Volume的Home Pair Pool工作控制器就是:Volume所在的籍贯引擎上该Volume所属Pool的Pool工作控制器。
[0083]2、Pool Queue:Volume 的 Home Pair Pool 工作控制器为 Extent ID 的消费端,控制Pool Queue Head, Extent所属Pool工作控制器为Extent ID的生产端,控制Pool QueueTail。
[0084]而消费端和生产端的具体操作过程在上述实施例二中已详细介绍,在此不再赘述。
[0085]本发明实施例中,通过队列来完成存储空间的分配,不仅可以实现跨控制节点的存储空间管理,还能实现跨引擎的存储空间管理,充分满足了目前大数据大业务的分布式存储需求;同时,由于不同控制节点之间在操作存储空间信息时是两个完全独立的过程,不会相互影响,因此与改变现有的事务机制相比,本方案实现简单,易于维护和扩展,存储空间的分配效率也相应提高,使得存储空间的管理系统的整体性能大大提高。
[0086]基于上述发明构思,本发明实施例还提供了一种分布式存储系统,如图7所示,为该分布式存储系统的结构示意图,该分布式存储系统中包含至少一个存储空间服务器,在创建逻辑卷时,所述逻辑卷的工作控制器所在节点为第二控制节点72,所述逻辑卷对应的存储池的工作控制器所在节点为第一控制节点71,其中:
[0087]所述第一控制节点71,用于确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;当所述容量小于预先设置的容量阈值时,获取所述第一控制节点所在的存储设备服务器中存储的未分配的存储空间的存储空间标识信息,和/或第二分配队列中存储的未分配的存储空间的存储空间标识信息;将获取的未分配的存储空间的存储空间标识信息存储到所述第一分配队列中;
[0088]其中,所述第一分配队列中存储的存储空间标识信息能够被第二控制节点获取;所述第二分配队列中存储的存储空间标识信息是除所述第一控制节点和所述第二控制节点之外的其它控制节点对自身所在的存储设备服务器中未分配的存储空间进行分配得到的;以及每个存储空间标识信息所指示的存储空间均是根据对存储空间服务器中的每个硬盘的空间进行切分得到硬盘切分单元CK,再对由来自不同硬盘的CK组成的存储集合CKG进行划分得到的。
[0089]所述系统还包括:
[0090]所述第二控制节点72,用于接收到存储空间分配请求消息后,从所述第一分配队列中获取与所述存储空间分配请求消息请求的存储空间大小对应的存储空间标识信息;将获取到的存储空间标识信息反馈给所述存储空间分配请求消息的发送方,使所述发送方能够将数据存储到由获取到的存储空间标识信息所指示的存储空间组成的逻辑卷中。
[0091]当每个存储空间标识信息所指示的存储空间的大小均相同时,所述第一控制节点71,可以具体用于:
[0092]根据所述第一分配队列中的头指针、尾指针的位置信息以及每个存储空间标识信息所指示的存储空间的大小,确定所述第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;其中,所述头指针指向所述第一分配队列中已存储存储空间标识信息的起始位置,所述尾指针指向所述第一分配队列中未存储存储空间标识信息的起始位置。
[0093]可选的,所述第一控制节点71,还可以用于:
[0094]从第一释放队列中获取待释放的存储空间标识信息,并释放与所述待释放的存储空间标识信息对应的存储空间。
[0095]其中,所述第一控制节点71,可以具体用于:
[0096]判断所述待释放的存储空间标识信息对应的存储空间是否来自除第一控制节点之外的其它控制节点所在的存储设备服务器;当判断结果为是时,将所述待释放的存储空间标识信息存储到能被所述其它控制节点访问的第二释放队列中,使所述其它控制节点能够从所述第二释放队列中获取所述待释放的存储空间标识信息,并将所述其它控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间;当判断结果为否时,将所述第一控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间。
[0097]相应的,本发明实施例还提供了一种第一控制节点,如图8所示,为该第一控制节点的硬件结构示意图,包括:处理器81、存储器82、通信接口 83和总线84,其中:
[0098]处理器81、存储器82、通信接口 83通过总线84相互连接;总线84可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称 EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0099]存储器82,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器82可能包含高速随机存取存储器(random access memory,简称RAM)存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。[0100]处理器81执行存储器82所存放的程序,用于执行本发明实施例提供的上述分布式存储空间的管理方法。
[0101]本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0102]本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的
>J-U ρ?α装直。
[0103]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0104]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0105]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0106]显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种分布式存储空间的管理方法,应用于分布式存储系统中,所述分布式存储系统中包含至少一个存储空间服务器,其特征在于,在创建逻辑卷时,所述逻辑卷的工作控制器所在节点为第二控制节点,所述逻辑卷对应的存储池的工作控制器所在节点为第一控制节点,所述方法包括: 第一控制节点确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;所述第一分配队列中存储的存储空间标识信息能够被第二控制节点获取; 当所述容量小于预先设置的容量阈值时,获取所述第一控制节点所在的存储设备服务器中存储的未分配的存储空间的存储空间标识信息,和/或第二分配队列中存储的未分配的存储空间的存储空间标识信息;其中,所述第二分配队列中存储的存储空间标识信息是除所述第一控制节点和所述第二控制节点之外的其它控制节点对自身所在的存储设备服务器中未分配的存储空间进行分配得到的; 将获取的未分配的存储空间的存储空间标识信息存储到所述第一分配队列中; 其中,每个存储空间标识信息所指示的存储空间均是根据对存储空间服务器中的每个硬盘的空间进行切分得到硬盘切分单元CK,再对由来自不同硬盘的CK组成的存储集合CKG进行划分得到的。
2.如权利要求1所述的方法,其特征在于,所述方法还包括: 所述第二控制节点接收到存储空间分配请求消息后,从所述第一分配队列中获取与所述存储空间分配请求消息请求的存储空间大小对应的存储空间标识信息; 将获取到的存储空间标识信息反馈给所述存储空间分配请求消息的发送方,使所述发送方能够将数据存储到由获取到的存储空间标识信息所指示的存储空间组成的逻辑卷中。
3.如权利要求1或2所述的方法,其特征在于,每个存储空间标识信息所指示的存储空间的大小均相同;则` 第一控制节点确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量,具体包括: 根据所述第一分配队列中的头指针、尾指针的位置信息以及每个存储空间标识信息所指示的存储空间的大小,确定所述第一分配队列中存储的存储空间标识信息所指示的存储空间的容量; 其中,所述头指针指向所述第一分配队列中已存储存储空间标识信息的起始位置,所述尾指针指向所述第一分配队列中未存储存储空间标识信息的起始位置。
4.如权利要求1~3任一所述的方法,其特征在于,还包括: 第一控制节点从第一释放队列中获取待释放的存储空间标识信息; 释放与所述待释放的存储空间标识信息对应的存储空间。
5.如权利要求4所述的方法,其特征在于,释放与所述待释放的存储空间标识信息对应的存储空间,具体包括: 判断所述待释放的存储空间标识信息对应的存储空间是否来自除第一控制节点之外的其它控制节点所在的存储设备服务器; 当判断结果为是时,将所述待释放的存储空间标识信息存储到能被所述其它控制节点访问的第二释放队列中,使所述其它控制节点能够从所述第二释放队列中获取所述待释放的存储空间标识信息,并将所述其它控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间; 当判断结果为否时,将所述第一控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间。
6.—种分布式存储系统,所述分布式存储系统中包含至少一个存储空间服务器,其特征在于,在创建逻辑卷时,所述逻辑卷的工作控制器所在节点为第二控制节点,所述逻辑卷对应的存储池的工作控制器所在节点为第一控制节点,其中: 所述第一控制节点,用于确定第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;当所述容量小于预先设置的容量阈值时,获取所述第一控制节点所在的存储设备服务器中存储的未分配的存储空间的存储空间标识信息,和/或第二分配队列中存储的未分配的存储空间的存储空间标识信息;将获取的未分配的存储空间的存储空间标识信息存储到所述第一分配队列中; 其中,所述第一分配队列中存储的存储空间标识信息能够被第二控制节点获取;所述第二分配队列中存储的存储空间标识信息是除所述第一控制节点和所述第二控制节点之外的其它控制节点对自身所在的存储设备服务器中未分配的存储空间进行分配得到的;以及每个存储空间标识信息所指示的存储空间均是根据对存储空间服务器中的每个硬盘的空间进行切分得到硬盘切分单元CK,再对由来自不同硬盘的CK组成的存储集合CKG进行划分得到的。
7.如权利要求6所述的系统,其特征在于,所述系统还包括: 所述第二控制节点,用于接收到存储空间分配请求消息后,从所述第一分配队列中获取与所述存储空间 分配请求消息请求的存储空间大小对应的存储空间标识信息;将获取到的存储空间标识信息反馈给所述存储空间分配请求消息的发送方,使所述发送方能够将数据存储到由获取到的存储空间标识信息所指示的存储空间组成的逻辑卷中。
8.如权利要求6或7所述的系统,其特征在于,每个存储空间标识信息所指示的存储空间的大小均相同;则 所述第一控制节点,具体用于: 根据所述第一分配队列中的头指针、尾指针的位置信息以及每个存储空间标识信息所指示的存储空间的大小,确定所述第一分配队列中存储的存储空间标识信息所指示的存储空间的容量;其中,所述头指针指向所述第一分配队列中已存储存储空间标识信息的起始位置,所述尾指针指向所述第一分配队列中未存储存储空间标识信息的起始位置。
9.如权利要求6~8任一项所述的系统,其特征在于, 所述第一控制节点,还用于: 从第一释放队列中获取待释放的存储空间标识信息,并释放与所述待释放的存储空间标识信息对应的存储空间。
10.如权利要求9所述的系统,其特征在于,所述第一控制节点,具体用于: 判断所述待释放的存储空间标识信息对应的存储空间是否来自除第一控制节点之外的其它控制节点所在的存储设备服务器;当判断结果为是时,将所述待释放的存储空间标识信息存储到能被所述其它控制节点访问的第二释放队列中,使所述其它控制节点能够从所述第二释放队列中获取所述待释放的存储空间标识信息,并将所述其它控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间;当判断结果为否时, 将所述第一控制节点所在的存储设备服务器中与所述待释放的存储空间标识信息对应的存储空间标记为未分配的存储空间。
【文档编号】H04L29/08GK103634379SQ201310568042
【公开日】2014年3月12日 申请日期:2013年11月13日 优先权日:2013年11月13日
【发明者】肖祖仁 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1