基于集群的元数据修改方法、装置及节点设备的制作方法

文档序号:6521955阅读:108来源:国知局
基于集群的元数据修改方法、装置及节点设备的制作方法
【专利摘要】本发明公开了一种基于集群的元数据修改方法、装置及节点设备,该方法包括:根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述当前节点设备的ID信息对应的存储单元中;在第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元;若竞争到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。该方案可以确保元数据修改的正确性。
【专利说明】基于集群的元数据修改方法、装置及节点设备
【技术领域】
[0001]本发明涉及通信【技术领域】,尤指一种基于集群的元数据修改方法、装置及节点设备。
【背景技术】
[0002]存储区域网络(Storage Array Network, SAN)是一种高速网络或子网络,SAN提供的共享存储以逻辑单元(Logical Unit Number, LUN)的形式向集群中的节点设备呈现。
[0003]在共享存储场景下,卷管理的元数据存放在LUN上,由于多个节点设备可以同时修改LUN中的元数据,因此必须保证各个节点设备修改元数据的操作是顺序进行的,这就需要在一个节点设备修改元数据时对元数据进行加锁保护,在某一时刻只有获取到集群锁的节点设备才能修改元数据,从而保证同一时刻不会存在两个或者两个以上的节点设备同时修改元数据。
[0004]目前常用的卷管理方式有两种:分布式卷管理和集中式卷管理。如图1所示为分布式卷管理方式的示意图,当节点设备要修改卷元数据时,首先获取集群锁,然后修改元数据,完成后再释放集群锁,其它节点设备可以继续获取集群锁来修改元数据。如图2所示为集中式卷管理方式的示意图,首先要选取一个节点设备作为主节点设备,其它节点设备需要修改元数据时,会发送元数据修改请求给主节点设备,由主节点设备来顺序执行元数据修改请求。
[0005]上述两种元数据修改方法中集群的节点设备之间是基于控制面进行通信的,节点设备必须与其它节点设备网络相通,一旦出现网络故障,节点设备之间的网络中断,就不能保证元数据修改的正确性。

【发明内容】

[0006]本发明实施例提供一种基于集群的元数据修改方法、装置及节点设备,用以解决现有的元数据修改方法中一旦网络出现故障无法保证元数据修改的正确性的问题。
[0007]第一方面,本发明实施例提供一种基于集群的元数据修改方法,所述集群包括至少两个节点设备,所述集群与存储区域网络SAN连接,所述SAN包括至少一个逻辑单元LUN,每个所述LUN包含第一存储空间和第二存储空间,针对每个所述节点设备,所述方法包括:
[0008]当前节点设备根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述当前节点设备的标识ID信息对应的存储单元中;
[0009]所述当前节点设备在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元;
[0010]若所述当前节点设备竞争到所述集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;[0011]若所述当前节点设备轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
[0012]结合第一方面,在第一种可能的实现方式中,所述当前节点设备获取所述当前节点设备的ID信息,具体包括:
[0013]所述当前节点设备启动后,从一个所述第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元;
[0014]将选取的存储单元的ID信息作为所述当前节点设备的ID信息。
[0015]结合第一方面或者第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第二存储空间的每个存储单元包括接收子单元和发送子单元;
[0016]所述当前节点设备将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述ID信息对应的存储单元的接收子单元中;
[0017]所述当前节点设备在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元中的接收子单元;
[0018]若所述当前节点设备竞争到所述集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
[0019]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述当前节点设备轮询每个所述第二存储空间的存储单元的发送子单元;
[0020]若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
[0021]结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,还包括:
[0022]所述当前节点设备将所述当前节点设备的心跳信息存储在位于每个所述第一存储空间、且与所述ID信息对应的存储单元中;
[0023]所述当前节点设备在所述第一存储空间中竞争集群锁信息,具体包括:
[0024]所述当前节点设备轮询每个所述第一存储空间的存储单元,并查看轮询到的存储单元中是否存储所述集群锁信息;
[0025]若轮询到的存储单元中未存储所述集群锁信息,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;
[0026]若轮询到的存储空间中存储有所述集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;若未超时,则未竞争到所述集群锁信息。
[0027]第二方面,一种元数据修改装置,应用于集群包括的至少两个节点设备中,所述集群与存储区域网络SAN连接,所述SAN包括至少一个逻辑单元LUN,每个所述LUN包含第一存储空间和第二存储空间,所述装置包括:
[0028]存储模块,用于根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与自身所在的节点设备的标识ID信息对应的存储单元中;
[0029]处理模块,用于在所述第一存储空间中竞争所述集群锁信息,以及轮询每个所述第二存储空间的存储单元;若竞争到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若所述轮询模块轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
[0030]结合第二方面,在第一种可能的实现方式中,所述存储模块,具体用于:
[0031]所述节点设备启动后,从一个所述第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元;
[0032]将选取的存储单元的ID信息作为所述节点设备的ID信息。
[0033]结合第二方面或者第一方面的第二种可能的实现方式,在第二种可能的实现方式中,所述第二存储空间的每个存储单元包括接收子单元和发送子单元;
[0034]所述存储模块,具体用于将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述ID信息对应的存储单元的接收子单元中;
[0035]所述处理模块,具体用于在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元中的接收子单元;若竞争到所述集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
[0036]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块,具体用于轮询每个所述第二存储空间的存储单元的发送子单元;若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
[0037]结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述存储模块,还用于将所述节点设备的心跳信息存储在位于每个所述第一存储空间、且与所述ID信息对应的存储单元中;
[0038]所述处理模块,具体用于:
[0039]轮询每个所述第一存储空间的存储单元,并查看轮询到的存储单元中是否存储所述集群锁信息;
[0040]若轮询到的存储单元中未存储所述集群锁信息,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;
[0041]若轮询到的存储空间中存储有所述集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;若未超时,则未竞争到所述集群锁信息。
[0042]第三方面,一种节点设备,应用于集群中,所述集群包括至少两个所述节点设备,所述集群与存储区域网络SAN连接,所述SAN包括至少一个逻辑单元LUN,每个所述LUN包含第一存储空间和第二存储空间,每个所述节点设备包括:
[0043]存储器,用于根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与自身所在的节点设备的标识ID信息对应的存储单元中;
[0044]处理器,用于在所述第一存储空间中竞争所述集群锁信息,以及轮询每个所述第二存储空间的存储单元;若竞争到所述集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
[0045]结合第三方面,在第一种可能的实现方式中,所述存储器,具体用于:
[0046]所述节点设备启动后,从一个所述第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元;
[0047]将选取的存储单元的ID信息作为所述节点设备的ID信息。
[0048]结合第三方面或者第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述第二存储空间的每个存储单元包括接收子单元和发送子单元;
[0049]所述存储器,具体用于将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述ID信息对应的存储单元的接收子单元中;
[0050]所述处理器,具体用于在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元中的接收子单元;若竞争到所述集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
[0051]结合第三方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理器,具体用于轮询每个所述第二存储空间的存储单元的发送子单元;若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
[0052]结合第三方面、第三方面的第一种可能的实现方式、第三方面的第二种可能的实现方式或第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述存储器,还用于将所述节点设备的心跳信息存储在位于每个所述第一存储空间、且与所述ID信息对应的存储单元中;
[0053]所述处理器,具体用于:
[0054]轮询每个所述第一存储空间的存储单元,并查看轮询到的存储单元中是否存储所述集群锁信息;
[0055]若轮询到的存储单元中未存储所述集群锁信息,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;
[0056]若轮询到的存储空间中存储有所述集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;若未超时,则未竞争到所述集群锁信息。
[0057]根据第一方面提供的基于集群的元数据修改方法、第二方面提供的元数据修改装置或者第三方面提供的节点设备,集群中的每个节点设备都可以获取元数据修改请求,将获取到的元数据修改请求存储在第二存储空间对应的存储单元中;还可以在第一存储空间中竞争集群锁信息,以及轮询第二存储空间的存储单元,若竞争到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则可以获取元数据修改请求并执行,再将得到的元数据修改结果存储在第二存储空间对应的存储单元中,若轮询到的存储单元存储有元数据修改结果,获取存储的元数据修改结果;可见,集群中节点设备之间的通信不再是基于控制面进行的,而是通过LUN中的第一存储空间和第二存储空间实现的,集群中节点设备之间在竞争集群锁时是基于LUN中的第一存储空间进行通信的,最终获取到的集群锁也是存储在LUN中的第一存储空间的,集群中节点设备之间在进行元数据修改时是基于LUN中的第二存储空间进行通信的,元数据修改请求以及元数据修改结果都是存储在LUN中的第二存储空间的,即使集群中节点设备之间的网络出现故障,集群中节点设备之间不能通过网络通信,仍可以通过LUN中的第一存储空间和第二存储空间正常通信,从而可以确保元数据修改的正确性。
【专利附图】

【附图说明】
[0058]图1为现有技术中第一种卷管理方式的示意图;
[0059]图2为现有技术中第二种卷管理方式的示意图;
[0060]图3为本发明实施例中基于集群的元数据修改方法的应用场景的示意图;
[0061]图4为本发明实施例中基于集群的元数据修改方法的流程图;
[0062]图5为本发明实施例中第二存储空间的每个存储单元的结构示意图;
[0063]图6为本发明实施例中基于集群的元数据装置的结构示意图;
[0064]图7为本发明实施例中节点设备的结构示意图。
【具体实施方式】
[0065]针对现有的元数据修改方法中一旦网络出现故障无法保证元数据修改的正确性的问题,发明人经研究发现,出现该问题的原因是,一旦出现网络故障,节点之间无法进行通信,从而影响元数据修改的正确性。因此,本发明实施例提供一种基于集群的元数据修改方法,如图3所示,集群包括至少两个节点设备,集群与SAN连接,SAN包括至少一个LUN,每个LUN包含第一存储空间和第二存储空间,针对每个节点设备,该方法的流程如图4所示,执行步骤如下:
[0066]S40:根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与当前节点设备的标识(Identification, ID)信息对应的存储单元中。
[0067]基于集群的卷管理中涉及到元数据修改的操作有创建卷、删除卷、扩容卷、减容卷
坐寸ο
[0068]当前节点设备可以在自身产生元数据修改请求,也可以从设备接口接收到元数据修改请求。获取到元数据修改请求之后,根据其中携带的需要修改元数据的LUN的信息就可以确定需要修改元数据的LUN,将该元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与当前节点设备的ID信息对应的存储单元中。
[0069]其中,第二存储空间是LUN上的一段区域,可以将第二存储空间等分后得到存储单元,这样当前节点设备只要根据ID信息和每个存储单元的大小就可以计算在第二存储空间中的偏移量,从而找到对应的存储单元。
[0070]S41:在第一存储空间中竞争集群锁信息,以及轮询每个第二存储空间的存储单
J Li ο
[0071]S40与S41并没有严格的先后执行顺序,可以同时执行,也可以先执行S40,再执行S41,当然也可以先执行S41,再执行S40。
[0072]S42:若竞争到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中。
[0073]当前节点设备在获取到集群锁信息后,一旦轮询到存储单元中存储有元数据修改请求,就可以获取并执行该元数据修改请求了。
[0074]第一存储空间是LUN上的一段区域,可以将第一存储空间进行等分后得到存储单元,这样当前节点设备只要根据预先获取的ID信息和每个存储单元的大小就可以计算在第一存储空间中的偏移量,从而找到对应的存储单元。
[0075]S43:若轮询到的存储单元存储有元数据修改结果,获取存储的元数据修改结果。
[0076]当前节点设备轮询到与接收到的元数据修改请求对应的元数据修改结果时,获取该元数据修改结果,这样就完成了处理一个元数据修改请求的流程。
[0077]S42与S43并没有严格的先后执行顺序,可以同时执行,也可以先执行S42,再执行S43,当然也可以先执行S43,再执行S42。
[0078]该方案中,集群中节点设备之间的通信不再是基于控制面进行的,而是通过LUN中的第一存储空间和第二存储空间实现的,集群中节点设备之间在竞争集群锁时是基于LUN中的第一存储空间进行通信的,最终获取到的集群锁也是存储在LUN中的第一存储空间的,集群中节点设备之间在进行元数据修改时是基于LUN中的第二存储空间进行通信的,元数据修改请求以及元数据修改结果都是存储在LUN中的第二存储空间的,即使集群中节点设备之间的网络出现故障,集群中节点设备之间不能通过网络通信,仍可以通过LUN中的第一存储空间和第二存储空间正常通信,从而可以确保元数据修改的正确性。
[0079]具体的,上述S40中的当前节点设备获取当前节点设备的ID信息,具体包括:
[0080]当前节点设备启动后,从一个第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元;
[0081]将选取的存储单元的ID信息作为当前节点设备的ID信息。
[0082]如图5所示,第二存储空间的每个存储单元包括接收子单元和发送子单元,并且接收子单元和发送子单元大小相等。
[0083]具体的,上述S40中的当前节点设备将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与当前节点设备的ID信息对应的存储单元中,具体包括:当前节点设备将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与ID信息对应的存储单兀的接收子单兀中。
[0084]具体的,上述S41中的当前节点设备在第一存储空间中竞争集群锁信息,以及轮询每个第二存储空间的存储单元中的接收子单元;
[0085]若当前节点设备竞争到集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
[0086]具体的,上述S41中可以是当前节点设备轮询每个第二存储空间的存储单元的发送子单元;
[0087]若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
[0088]可选的,上述基于集群的元数据修改方法还包括:当前节点设备将当前节点设备的心跳信息存储在位于每个第一存储空间、且与ID信息对应的存储单元中。
[0089]当前节点设备启动后,可以一定的时间周期将自身的心跳信息存储在位于每个第一存储空间、与前节点设备的ID信息对应的存储单元中,心跳信息中会携带时间信息,来表明该心跳信息生成的时间。
[0090]上述S41中的当前节点设备在第一存储空间中竞争集群锁信息,具体包括:
[0091]当前节点设备轮询每个第一存储空间的存储单元,并查看轮询到的存储单元中是否存储集群锁信息;
[0092]若轮询到的存储单元中未存储集群锁信息,则竞争到集群锁信息,并存储在ID信息对应的第一存储空间的存储单元中;
[0093]若轮询到的存储空间中存储有集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到集群锁信息,并存储在ID信息对应的第一存储空间的存储单元中;若未超时,则未竞争到集群锁信息。
[0094]当前节点设备可以去竞争集群锁,竞争到集群锁后可以执行元数据修改请求,并将得到的元数据修改结果存储在相应第二存储空间的存储单元中。在竞争集群锁的过程中,若轮询到的第一存储空间的存储单元中存储了集群锁,就可以去查看该存储单元中的心跳信息,根据心跳信息中携带的时间信息与当前时间信息的差值来确定心跳信息是否超时,若超时就可以获取到该集群锁信息。
[0095]由于集群锁只有一个,所以只有获取到集群锁的节点设备才能执行元数据修改请求,这样就可以保证元数据修改的正确性,同时由于每个节点设备都会轮询每个第一存储空间的存储单元,一旦获取到集群锁的节点设备故障后,其他的节点设备可以获取到集群锁,继续执行元数据修改请求,完成元数据修改请。
[0096]可以对第一存储空间、第二存储空间命名以及第二存储空间的存储单元中的发送子单元和接收子单元命名,例如,将第一存储空间命名为租约(Lease)文件、第二存储空间命名为邮箱(Mailbox)文件、第二存储空间的存储单元中的发送子单元命名为收件箱(Inbox)文件、第二存储空间的存储单元中的接收子单元命名为发件箱(Outbox)文件。
[0097]由于Mailbox文件中的Inbox文件和Outbox文件大小相等,所以节点设备可以根据ID信息和Inbox文件(或者Outbox文件)的大小计算偏移量找到对应的Inbox文件和Outbox文件。为了提高节点设备并行处理的元数据修改请求的个数,Inbox文件和Outbox文件中可以存放多条元数据修改请求。
[0098]节点设备既可以将获取到的元数据修改请求放入对应的Inbox中,还可以到对应的Outbox中获取元数据处理结果,从而完成一次元数据修改的流程。
[0099]基于同一发明构思,本发明实施例提供一种基于集群的元数据修改装置,应用于如图3所示的集群包括的至少两个节点设备中,该装置的结构如图6所示,包括:
[0100]存储模块60,用于根据获取到的元数据修改请求确定需要修改元数据的LUNdf获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与自身所在的节点设备的ID信息对应的存储单元中。
[0101]处理模块61,用于第一存储空间中竞争集群锁信息,以及轮询每个第二存储空间的存储单元;若竞争到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若轮询模块轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。[0102]具体的,上述存储模块60,具体用于:
[0103]节点设备启动后,从一个第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元;
[0104]将选取的存储单元的ID信息作为节点设备的ID信息。
[0105]具体的,第二存储空间的每个存储单元包括接收子单元和发送子单元;
[0106]上述存储模块60,具体用于将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与ID信息对应的存储单元的接收子单元中.[0107]上述处理模块61,具体用于第一存储空间中竞争集群锁信息,以及轮询每个第二存储空间的存储单元中的接收子单元;若竞争到集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
[0108]具体的,上述处理模块61,具体用于轮询每个第二存储空间的存储单元的发送子单元;若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
[0109]可选的,上述存储模块60,还用于将节点设备的心跳信息存储在位于每个第一存储空间、且与ID信息对应的存储单元中。
[0110]处理模块61,具体用于轮询每个第一存储空间的存储单元,并查看轮询到的存储单元中是否存储集群锁信息;
[0111]若轮询到的存储单元中未存储集群锁信息,则竞争到集群锁信息,并存储在ID信息对应的第一存储空间的存储单元中;
[0112]若轮询到的存储空间中存储有集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到集群锁信息,并存储在ID信息对应的第一存储空间的存储单元中;若未超时,则未竞争到集群锁信息。
[0113]基于同一发明构思,本发明实施例提供一种节点设备,应用于如图3所示的集群中,该节点设备的结构如图7所示,包括:
[0114]存储器70,用于根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与自身所在的节点设备的ID信息对应的存储单元中。
[0115]处理器71,用于第一存储空间中竞争集群锁信息,以及轮询每个第二存储空间的存储单元;若进行到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
[0116]存储器70与处理器71之间通过总线连接。
[0117]具体的,上述存储器70,具体用于:
[0118]节点设备启动后,从一个第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元;
[0119]将选取的存储单元的ID信息作为节点设备的ID信息。
[0120]具体的,第二存储空间的每个存储单元包括接收子单元和发送子单元。
[0121]上述存储器70,具体用于将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与ID信息对应的存储单元的接收子单元中。[0122]上述处理器71,具体用于第一存储空间中竞争集群锁信息,以及轮询每个第二存储空间的存储单元中的接收子单元;若竞争到集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
[0123]具体的,上述处理器71,具体用于轮询每个第二存储空间的存储单元的发送子单元;若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
[0124]可选的,上述存储器70,还用于将节点设备的心跳信息存储在位于每个第一存储空间、且与ID信息对应的存储单元中。
[0125]上述处理器71,具体用于:轮询每个第一存储空间的存储单元,并查看轮询到的存储单元中是否存储集群锁信息;
[0126]若轮询到的存储单元中未存储集群锁信息,则竞争到集群锁信息,并存储在ID信息对应的第一存储空间的存储单元中;
[0127]若轮询到的存储空间中存储有集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到集群锁信息,并存储在ID信息对应的第一存储空间的存储单元中;若未超时,则未竞争到集群锁信息。
[0128]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0129]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0130]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0131]尽管已描述了本发明的可选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括可选实施例以及落入本发明范围的所有变更和修改。
[0132]显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种基于集群的元数据修改方法,所述集群包括至少两个节点设备,所述集群与存储区域网络SAN连接,所述SAN包括至少一个逻辑单元LUN,其特征在于,每个所述LUN包含第一存储空间和第二存储空间,针对每个所述节点设备,所述方法包括: 当前节点设备根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述当前节点设备的标识ID信息对应的存储单元中; 所述当前节点设备在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元; 若所述当前节点设备竞争到所述集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中; 若所述当前节点设备轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
2.如权利要求1所述的方法,其特征在于,所述当前节点设备获取所述当前节点设备的ID信息,具体包括: 所述当前节点设备启动后,从一个所述第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元; 将选取的存储单元的ID信息作为所述当前节点设备的ID信息。
3.如权利要求1-2任一所述的方法,其特征在于,所述第二存储空间的每个存储单元包括接收子单元和发送子单元; 所述当前节点设备将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述ID信息对应的存储单元的接收子单元中; 所述当前节点设备在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元中的接收子单元; 若所述当前节点设备竞争到所述集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
4.如权利要求3所述的方法,其特征在于,所述当前节点设备轮询每个所述第二存储空间的存储单元的发送子单元; 若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
5.如权利要求1-4任一所述的方法,其特征在于,还包括: 所述当前节点设备将所述当前节点设备的心跳信息存储在位于每个所述第一存储空间、且与所述ID信息对应的存储单元中; 所述当前节点设备在所述第一存储空间中竞争集群锁信息,具体包括: 所述当前节点设备轮询每个所述第一存储空间的存储单元,并查看轮询到的存储单元中是否存储所述集群锁信息; 若轮询到的存储单元中未存储所述集群锁信息,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中; 若轮询到的存储空间中存储有所述集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;若未超时,则未竞争到所述集群锁信息。
6.一种元数据修改装置,应用于集群包括的至少两个节点设备中,所述集群与存储区域网络SAN连接,所述SAN包括至少一个逻辑单元LUN,其特征在于,每个所述LUN包含第一存储空间和第二存储空间,所述装置包括: 存储模块,用于根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与自身所在的节点设备的标识ID信息对应的存储单元中; 处理模块,用于在所述第一存储空间中竞争所述集群锁信息,以及轮询每个所述第二存储空间的存储单元;若竞争到集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若所述轮询模块轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
7.如权利要求6所述的装置,其特征在于,所述存储模块,具体用于: 所述节点设备启动后,从一个所述第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元; 将选取的存储单元的ID信息作为所述节点设备的ID信息。
8.如权利要求6-7任一所述的装置,其特征在于,所述第二存储空间的每个存储单元包括接收子单元和发送子单元; 所述存储模块,具体用于将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述ID信息对应的存储单元的接收子单元中; 所述处理模块,具体用于在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元中的接收子单元;若竞争到所述集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。
9.如权利要求8所述的装置,其特征在于,所述处理模块,具体用于轮询每个所述第二存储空间的存储单元的发送子单元;若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
10.如权利要求6-9任一所述的装置,其特征在于,所述存储模块,还用于将所述节点设备的心跳信息存储在位于每个所述第一存储空间、且与所述ID信息对应的存储单元中; 所述处理模块,具体用于: 轮询每个所述第一存储空间的存储单元,并查看轮询到的存储单元中是否存储所述集群锁信息; 若轮询到的存储单元中未存储所述集群锁信息,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中; 若轮询到的存储空间中存储有所述集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;若未超时,则未竞争到所述集群锁信息。
11.一种节点设备,应用于集群中,所述集群包括至少两个所述节点设备,所述集群与存储区域网络SAN连接,所述SAN包括至少一个逻辑单元LUN,其特征在于,每个所述LUN包含第一存储空间和第二存储空间,每个所述节点设备包括: 存储器,用于根据获取到的元数据修改请求确定需要修改元数据的LUN,将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与自身所在的节点设备的标识ID信息对应的存储单元中; 处理器,用于在所述第一存储空间中竞争所述集群锁信息,以及轮询每个所述第二存储空间的存储单元;若竞争到所述集群锁信息、且轮询到的存储单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的元数据修改请求的存储单元中;若轮询到的存储单元存储元数据修改结果,获取存储的元数据修改结果。
12.如权利要求11所述的节点设备,其特征在于,所述存储器,具体用于: 所述节点设备启动后,从一个所述第一存储空间包含的空闲的存储单元中选取任意一个存储单元、地址最小的存储单元或者地址最大的存储单元; 将选取的存储单元的ID信息作为所述节点设备的ID信息。
13.如权利要求11-12任一所述的节点设备,其特征在于,所述第二存储空间的每个存储单元包括接收子单元和发送子单元; 所述存储器,具体用于将获取到的元数据修改请求存储在位于确定出的LUN包含的第二存储空间、且与所述ID信息对应的存储单元的接收子单元中; 所述处理器,具体用于在所述第一存储空间中竞争集群锁信息,以及轮询每个所述第二存储空间的存储单元中的接收子单元;若竞争到所述集群锁信息、且轮询到的接收子单元中存储有元数据修改请求,则获取并执行存储的元数据修改请求后,将得到的元数据修改结果存储在获取对应的 元数据修改请求的存储单元的发送子单元中。
14.如权利要求13所述的节点设备,其特征在于,所述处理器,具体用于轮询每个所述第二存储空间的存储单元的发送子单元;若轮询到的发送子单元存储有元数据修改结果,获取存储的元数据修改结果。
15.如权利要求11-14任一所述的节点设备,其特征在于,所述存储器,还用于将所述节点设备的心跳信息存储在位于每个所述第一存储空间、且与所述ID信息对应的存储单元中; 所述处理器,具体用于: 轮询每个所述第一存储空间的存储单元,并查看轮询到的存储单元中是否存储所述集群锁信息; 若轮询到的存储单元中未存储所述集群锁信息,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中; 若轮询到的存储空间中存储有所述集群锁信息,查看轮询到的存储空间中存储的心跳信息是否超时,若超时,则竞争到所述集群锁信息,并存储在所述ID信息对应的所述第一存储空间的存储单元中;若未超时,则未竞争到所述集群锁信息。
【文档编号】G06F17/30GK103678537SQ201310637339
【公开日】2014年3月26日 申请日期:2013年12月2日 优先权日:2013年12月2日
【发明者】亓晓振 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1