《基于集群的元数据修改方法、装置及节点设备.pdf》由会员分享,可在线阅读,更多相关《基于集群的元数据修改方法、装置及节点设备.pdf(16页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103678537 A (43)申请公布日 2014.03.26 CN 103678537 A (21)申请号 201310637339.8 (22)申请日 2013.12.02 G06F 17/30(2006.01) (71)申请人 华为技术有限公司 地址 518129 广东省深圳市龙岗区坂田华为 总部办公楼 (72)发明人 亓晓振 (74)专利代理机构 北京同达信恒知识产权代理 有限公司 11291 代理人 黄志华 (54) 发明名称 基于集群的元数据修改方法、 装置及节点设 备 (57) 摘要 本发明公开了一种基于集群的元数据修改方 法、 装置及节点设备, 该方。
2、法包括 : 根据获取到的 元数据修改请求确定需要修改元数据的 LUN, 将 获取到的元数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与所述当前节点设 备的 ID 信息对应的存储单元中 ; 在第一存储空间 中竞争集群锁信息, 以及轮询每个所述第二存储 空间的存储单元 ; 若竞争到集群锁信息、 且轮询 到的存储单元中存储有元数据修改请求, 则获取 并执行存储的元数据修改请求后, 将得到的元数 据修改结果存储在获取对应的元数据修改请求的 存储单元中 ; 若轮询到的存储单元存储元数据修 改结果, 获取存储的元数据修改结果。 该方案可以 确保元数据修改的正确性。 (51)Int.Cl.。
3、 权利要求书 3 页 说明书 9 页 附图 3 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书9页 附图3页 (10)申请公布号 CN 103678537 A CN 103678537 A 1/3 页 2 1. 一种基于集群的元数据修改方法, 所述集群包括至少两个节点设备, 所述集群与存 储区域网络SAN连接, 所述SAN包括至少一个逻辑单元LUN, 其特征在于, 每个所述LUN包含 第一存储空间和第二存储空间, 针对每个所述节点设备, 所述方法包括 : 当前节点设备根据获取到的元数据修改请求确定需要修改元数据的 LUN, 将获取到的 元数据修改请求存储。
4、在位于确定出的 LUN 包含的第二存储空间、 且与所述当前节点设备的 标识 ID 信息对应的存储单元中 ; 所述当前节点设备在所述第一存储空间中竞争集群锁信息, 以及轮询每个所述第二存 储空间的存储单元 ; 若所述当前节点设备竞争到所述集群锁信息、 且轮询到的存储单元中存储有元数据修 改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取对 应的元数据修改请求的存储单元中 ; 若所述当前节点设备轮询到的存储单元存储元数据修改结果, 获取存储的元数据修改 结果。 2. 如权利要求 1 所述的方法, 其特征在于, 所述当前节点设备获取所述当前节点设备 的 ID 信息, 具。
5、体包括 : 所述当前节点设备启动后, 从一个所述第一存储空间包含的空闲的存储单元中选取任 意一个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 将选取的存储单元的 ID 信息作为所述当前节点设备的 ID 信息。 3. 如权利要求 1-2 任一所述的方法, 其特征在于, 所述第二存储空间的每个存储单元 包括接收子单元和发送子单元 ; 所述当前节点设备将获取到的元数据修改请求存储在位于确定出的 LUN 包含的第二 存储空间、 且与所述 ID 信息对应的存储单元的接收子单元中 ; 所述当前节点设备在所述第一存储空间中竞争集群锁信息, 以及轮询每个所述第二存 储空间的存储单元中的接收子单元 。
6、; 若所述当前节点设备竞争到所述集群锁信息、 且轮询到的接收子单元中存储有元数据 修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取 对应的元数据修改请求的存储单元的发送子单元中。 4. 如权利要求 3 所述的方法, 其特征在于, 所述当前节点设备轮询每个所述第二存储 空间的存储单元的发送子单元 ; 若轮询到的发送子单元存储有元数据修改结果, 获取存储的元数据修改结果。 5. 如权利要求 1-4 任一所述的方法, 其特征在于, 还包括 : 所述当前节点设备将所述当前节点设备的心跳信息存储在位于每个所述第一存储空 间、 且与所述 ID 信息对应的存储单元中 ; 所。
7、述当前节点设备在所述第一存储空间中竞争集群锁信息, 具体包括 : 所述当前节点设备轮询每个所述第一存储空间的存储单元, 并查看轮询到的存储单元 中是否存储所述集群锁信息 ; 若轮询到的存储单元中未存储所述集群锁信息, 则竞争到所述集群锁信息, 并存储在 所述 ID 信息对应的所述第一存储空间的存储单元中 ; 若轮询到的存储空间中存储有所述集群锁信息, 查看轮询到的存储空间中存储的心跳 权 利 要 求 书 CN 103678537 A 2 2/3 页 3 信息是否超时, 若超时, 则竞争到所述集群锁信息, 并存储在所述 ID 信息对应的所述第一 存储空间的存储单元中 ; 若未超时, 则未竞争到所。
8、述集群锁信息。 6. 一种元数据修改装置, 应用于集群包括的至少两个节点设备中, 所述集群与存储区 域网络SAN连接, 所述SAN包括至少一个逻辑单元LUN, 其特征在于, 每个所述LUN包含第一 存储空间和第二存储空间, 所述装置包括 : 存储模块, 用于根据获取到的元数据修改请求确定需要修改元数据的 LUN, 将获取到的 元数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与自身所在的节点设备 的标识 ID 信息对应的存储单元中 ; 处理模块, 用于在所述第一存储空间中竞争所述集群锁信息, 以及轮询每个所述第二 存储空间的存储单元 ; 若竞争到集群锁信息、 且轮询到的存储单元。
9、中存储有元数据修改请 求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取对应的 元数据修改请求的存储单元中 ; 若所述轮询模块轮询到的存储单元存储元数据修改结果, 获取存储的元数据修改结果。 7. 如权利要求 6 所述的装置, 其特征在于, 所述存储模块, 具体用于 : 所述节点设备启动后, 从一个所述第一存储空间包含的空闲的存储单元中选取任意一 个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 将选取的存储单元的 ID 信息作为所述节点设备的 ID 信息。 8. 如权利要求 6-7 任一所述的装置, 其特征在于, 所述第二存储空间的每个存储单元 包括接收子。
10、单元和发送子单元 ; 所述存储模块, 具体用于将获取到的元数据修改请求存储在位于确定出的 LUN 包含的 第二存储空间、 且与所述 ID 信息对应的存储单元的接收子单元中 ; 所述处理模块, 具体用于在所述第一存储空间中竞争集群锁信息, 以及轮询每个所述 第二存储空间的存储单元中的接收子单元 ; 若竞争到所述集群锁信息、 且轮询到的接收子 单元中存储有元数据修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据 修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。 9. 如权利要求 8 所述的装置, 其特征在于, 所述处理模块, 具体用于轮询每个所述第二 存储空间的存储单。
11、元的发送子单元 ; 若轮询到的发送子单元存储有元数据修改结果, 获取 存储的元数据修改结果。 10. 如权利要求 6-9 任一所述的装置, 其特征在于, 所述存储模块, 还用于将所述节点 设备的心跳信息存储在位于每个所述第一存储空间、 且与所述 ID 信息对应的存储单元中 ; 所述处理模块, 具体用于 : 轮询每个所述第一存储空间的存储单元, 并查看轮询到的存储单元中是否存储所述集 群锁信息 ; 若轮询到的存储单元中未存储所述集群锁信息, 则竞争到所述集群锁信息, 并存储在 所述 ID 信息对应的所述第一存储空间的存储单元中 ; 若轮询到的存储空间中存储有所述集群锁信息, 查看轮询到的存储空间。
12、中存储的心跳 信息是否超时, 若超时, 则竞争到所述集群锁信息, 并存储在所述 ID 信息对应的所述第一 存储空间的存储单元中 ; 若未超时, 则未竞争到所述集群锁信息。 11. 一种节点设备, 应用于集群中, 所述集群包括至少两个所述节点设备, 所述集群与 权 利 要 求 书 CN 103678537 A 3 3/3 页 4 存储区域网络SAN连接, 所述SAN包括至少一个逻辑单元LUN, 其特征在于, 每个所述LUN包 含第一存储空间和第二存储空间, 每个所述节点设备包括 : 存储器, 用于根据获取到的元数据修改请求确定需要修改元数据的 LUN, 将获取到的元 数据修改请求存储在位于确定出。
13、的 LUN 包含的第二存储空间、 且与自身所在的节点设备的 标识 ID 信息对应的存储单元中 ; 处理器, 用于在所述第一存储空间中竞争所述集群锁信息, 以及轮询每个所述第二存 储空间的存储单元 ; 若竞争到所述集群锁信息、 且轮询到的存储单元中存储有元数据修改 请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取对应 的元数据修改请求的存储单元中 ; 若轮询到的存储单元存储元数据修改结果, 获取存储的 元数据修改结果。 12. 如权利要求 11 所述的节点设备, 其特征在于, 所述存储器, 具体用于 : 所述节点设备启动后, 从一个所述第一存储空间包含的空闲的存储单。
14、元中选取任意一 个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 将选取的存储单元的 ID 信息作为所述节点设备的 ID 信息。 13. 如权利要求 11-12 任一所述的节点设备, 其特征在于, 所述第二存储空间的每个存 储单元包括接收子单元和发送子单元 ; 所述存储器, 具体用于将获取到的元数据修改请求存储在位于确定出的 LUN 包含的第 二存储空间、 且与所述 ID 信息对应的存储单元的接收子单元中 ; 所述处理器, 具体用于在所述第一存储空间中竞争集群锁信息, 以及轮询每个所述第 二存储空间的存储单元中的接收子单元 ; 若竞争到所述集群锁信息、 且轮询到的接收子单 元中存储有。
15、元数据修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修 改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。 14. 如权利要求 13 所述的节点设备, 其特征在于, 所述处理器, 具体用于轮询每个所述 第二存储空间的存储单元的发送子单元 ; 若轮询到的发送子单元存储有元数据修改结果, 获取存储的元数据修改结果。 15. 如权利要求 11-14 任一所述的节点设备, 其特征在于, 所述存储器, 还用于将所述 节点设备的心跳信息存储在位于每个所述第一存储空间、 且与所述 ID 信息对应的存储单 元中 ; 所述处理器, 具体用于 : 轮询每个所述第一存储空间的存储单元,。
16、 并查看轮询到的存储单元中是否存储所述集 群锁信息 ; 若轮询到的存储单元中未存储所述集群锁信息, 则竞争到所述集群锁信息, 并存储在 所述 ID 信息对应的所述第一存储空间的存储单元中 ; 若轮询到的存储空间中存储有所述集群锁信息, 查看轮询到的存储空间中存储的心跳 信息是否超时, 若超时, 则竞争到所述集群锁信息, 并存储在所述 ID 信息对应的所述第一 存储空间的存储单元中 ; 若未超时, 则未竞争到所述集群锁信息。 权 利 要 求 书 CN 103678537 A 4 1/9 页 5 基于集群的元数据修改方法、 装置及节点设备 技术领域 0001 本发明涉及通信技术领域, 尤指一种基于。
17、集群的元数据修改方法、 装置及节点设 备。 背景技术 0002 存储区域网络 (Storage Array Network, SAN) 是一种高速网络或子网络, SAN 提 供的共享存储以逻辑单元 (Logical Unit Number, LUN) 的形式向集群中的节点设备呈现。 0003 在共享存储场景下, 卷管理的元数据存放在 LUN 上, 由于多个节点设备可以同时 修改 LUN 中的元数据, 因此必须保证各个节点设备修改元数据的操作是顺序进行的, 这就 需要在一个节点设备修改元数据时对元数据进行加锁保护, 在某一时刻只有获取到集群锁 的节点设备才能修改元数据, 从而保证同一时刻不会存在。
18、两个或者两个以上的节点设备同 时修改元数据。 0004 目前常用的卷管理方式有两种 : 分布式卷管理和集中式卷管理。如图 1 所示为分 布式卷管理方式的示意图, 当节点设备要修改卷元数据时, 首先获取集群锁, 然后修改元数 据, 完成后再释放集群锁, 其它节点设备可以继续获取集群锁来修改元数据。如图 2 所示为 集中式卷管理方式的示意图, 首先要选取一个节点设备作为主节点设备, 其它节点设备需 要修改元数据时, 会发送元数据修改请求给主节点设备, 由主节点设备来顺序执行元数据 修改请求。 0005 上述两种元数据修改方法中集群的节点设备之间是基于控制面进行通信的, 节点 设备必须与其它节点设备。
19、网络相通, 一旦出现网络故障, 节点设备之间的网络中断, 就不能 保证元数据修改的正确性。 发明内容 0006 本发明实施例提供一种基于集群的元数据修改方法、 装置及节点设备, 用以解决 现有的元数据修改方法中一旦网络出现故障无法保证元数据修改的正确性的问题。 0007 第一方面, 本发明实施例提供一种基于集群的元数据修改方法, 所述集群包括至 少两个节点设备, 所述集群与存储区域网络SAN连接, 所述SAN包括至少一个逻辑单元LUN, 每个所述 LUN 包含第一存储空间和第二存储空间, 针对每个所述节点设备, 所述方法包括 : 0008 当前节点设备根据获取到的元数据修改请求确定需要修改元数。
20、据的 LUN, 将获取 到的元数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与所述当前节点设 备的标识 ID 信息对应的存储单元中 ; 0009 所述当前节点设备在所述第一存储空间中竞争集群锁信息, 以及轮询每个所述第 二存储空间的存储单元 ; 0010 若所述当前节点设备竞争到所述集群锁信息、 且轮询到的存储单元中存储有元数 据修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获 取对应的元数据修改请求的存储单元中 ; 说 明 书 CN 103678537 A 5 2/9 页 6 0011 若所述当前节点设备轮询到的存储单元存储元数据修改结果, 。
21、获取存储的元数据 修改结果。 0012 结合第一方面, 在第一种可能的实现方式中, 所述当前节点设备获取所述当前节 点设备的 ID 信息, 具体包括 : 0013 所述当前节点设备启动后, 从一个所述第一存储空间包含的空闲的存储单元中选 取任意一个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 0014 将选取的存储单元的 ID 信息作为所述当前节点设备的 ID 信息。 0015 结合第一方面或者第一方面的第一种可能的实现方式, 在第二种可能的实现方式 中, 所述第二存储空间的每个存储单元包括接收子单元和发送子单元 ; 0016 所述当前节点设备将获取到的元数据修改请求存储在位于确定。
22、出的 LUN 包含的 第二存储空间、 且与所述 ID 信息对应的存储单元的接收子单元中 ; 0017 所述当前节点设备在所述第一存储空间中竞争集群锁信息, 以及轮询每个所述第 二存储空间的存储单元中的接收子单元 ; 0018 若所述当前节点设备竞争到所述集群锁信息、 且轮询到的接收子单元中存储有元 数据修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在 获取对应的元数据修改请求的存储单元的发送子单元中。 0019 结合第一方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述当前 节点设备轮询每个所述第二存储空间的存储单元的发送子单元 ; 0020 若轮询到。
23、的发送子单元存储有元数据修改结果, 获取存储的元数据修改结果。 0021 结合第一方面、 第一方面的第一种可能的实现方式、 第一方面的第二种可能的实 现方式或第一方面的第三种可能的实现方式, 在第四种可能的实现方式中, 还包括 : 0022 所述当前节点设备将所述当前节点设备的心跳信息存储在位于每个所述第一存 储空间、 且与所述 ID 信息对应的存储单元中 ; 0023 所述当前节点设备在所述第一存储空间中竞争集群锁信息, 具体包括 : 0024 所述当前节点设备轮询每个所述第一存储空间的存储单元, 并查看轮询到的存储 单元中是否存储所述集群锁信息 ; 0025 若轮询到的存储单元中未存储所述。
24、集群锁信息, 则竞争到所述集群锁信息, 并存 储在所述 ID 信息对应的所述第一存储空间的存储单元中 ; 0026 若轮询到的存储空间中存储有所述集群锁信息, 查看轮询到的存储空间中存储的 心跳信息是否超时, 若超时, 则竞争到所述集群锁信息, 并存储在所述 ID 信息对应的所述 第一存储空间的存储单元中 ; 若未超时, 则未竞争到所述集群锁信息。 0027 第二方面, 一种元数据修改装置, 应用于集群包括的至少两个节点设备中, 所述集 群与存储区域网络 SAN 连接, 所述 SAN 包括至少一个逻辑单元 LUN, 每个所述 LUN 包含第一 存储空间和第二存储空间, 所述装置包括 : 002。
25、8 存储模块, 用于根据获取到的元数据修改请求确定需要修改元数据的 LUN, 将获取 到的元数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与自身所在的节点 设备的标识 ID 信息对应的存储单元中 ; 0029 处理模块, 用于在所述第一存储空间中竞争所述集群锁信息, 以及轮询每个所述 第二存储空间的存储单元 ; 若竞争到集群锁信息、 且轮询到的存储单元中存储有元数据修 说 明 书 CN 103678537 A 6 3/9 页 7 改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取对 应的元数据修改请求的存储单元中 ; 若所述轮询模块轮询到的存储单。
26、元存储元数据修改结 果, 获取存储的元数据修改结果。 0030 结合第二方面, 在第一种可能的实现方式中, 所述存储模块, 具体用于 : 0031 所述节点设备启动后, 从一个所述第一存储空间包含的空闲的存储单元中选取任 意一个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 0032 将选取的存储单元的 ID 信息作为所述节点设备的 ID 信息。 0033 结合第二方面或者第一方面的第二种可能的实现方式, 在第二种可能的实现方式 中, 所述第二存储空间的每个存储单元包括接收子单元和发送子单元 ; 0034 所述存储模块, 具体用于将获取到的元数据修改请求存储在位于确定出的 LUN 包。
27、 含的第二存储空间、 且与所述 ID 信息对应的存储单元的接收子单元中 ; 0035 所述处理模块, 具体用于在所述第一存储空间中竞争集群锁信息, 以及轮询每个 所述第二存储空间的存储单元中的接收子单元 ; 若竞争到所述集群锁信息、 且轮询到的接 收子单元中存储有元数据修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元 数据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。 0036 结合第二方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述处理 模块, 具体用于轮询每个所述第二存储空间的存储单元的发送子单元 ; 若轮询到的发送子 单元存储有元数据修改结果,。
28、 获取存储的元数据修改结果。 0037 结合第二方面、 第二方面的第一种可能的实现方式、 第二方面的第二种可能的实 现方式或第二方面的第三种可能的实现方式, 在第四种可能的实现方式中, 所述存储模块, 还用于将所述节点设备的心跳信息存储在位于每个所述第一存储空间、 且与所述 ID 信息 对应的存储单元中 ; 0038 所述处理模块, 具体用于 : 0039 轮询每个所述第一存储空间的存储单元, 并查看轮询到的存储单元中是否存储所 述集群锁信息 ; 0040 若轮询到的存储单元中未存储所述集群锁信息, 则竞争到所述集群锁信息, 并存 储在所述 ID 信息对应的所述第一存储空间的存储单元中 ; 0。
29、041 若轮询到的存储空间中存储有所述集群锁信息, 查看轮询到的存储空间中存储的 心跳信息是否超时, 若超时, 则竞争到所述集群锁信息, 并存储在所述 ID 信息对应的所述 第一存储空间的存储单元中 ; 若未超时, 则未竞争到所述集群锁信息。 0042 第三方面, 一种节点设备, 应用于集群中, 所述集群包括至少两个所述节点设备, 所述集群与存储区域网络 SAN 连接, 所述 SAN 包括至少一个逻辑单元 LUN, 每个所述 LUN 包 含第一存储空间和第二存储空间, 每个所述节点设备包括 : 0043 存储器, 用于根据获取到的元数据修改请求确定需要修改元数据的 LUN, 将获取到 的元数据。
30、修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与自身所在的节点设 备的标识 ID 信息对应的存储单元中 ; 0044 处理器, 用于在所述第一存储空间中竞争所述集群锁信息, 以及轮询每个所述第 二存储空间的存储单元 ; 若竞争到所述集群锁信息、 且轮询到的存储单元中存储有元数据 修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取 说 明 书 CN 103678537 A 7 4/9 页 8 对应的元数据修改请求的存储单元中 ; 若轮询到的存储单元存储元数据修改结果, 获取存 储的元数据修改结果。 0045 结合第三方面, 在第一种可能的实现方式中,。
31、 所述存储器, 具体用于 : 0046 所述节点设备启动后, 从一个所述第一存储空间包含的空闲的存储单元中选取任 意一个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 0047 将选取的存储单元的 ID 信息作为所述节点设备的 ID 信息。 0048 结合第三方面或者第三方面的第一种可能的实现方式, 在第二种可能的实现方式 中, 所述第二存储空间的每个存储单元包括接收子单元和发送子单元 ; 0049 所述存储器, 具体用于将获取到的元数据修改请求存储在位于确定出的 LUN 包含 的第二存储空间、 且与所述 ID 信息对应的存储单元的接收子单元中 ; 0050 所述处理器, 具体用于在。
32、所述第一存储空间中竞争集群锁信息, 以及轮询每个所 述第二存储空间的存储单元中的接收子单元 ; 若竞争到所述集群锁信息、 且轮询到的接收 子单元中存储有元数据修改请求, 则获取并执行存储的元数据修改请求后, 将得到的元数 据修改结果存储在获取对应的元数据修改请求的存储单元的发送子单元中。 0051 结合第三方面的第二种可能的实现方式, 在第三种可能的实现方式中, 所述处理 器, 具体用于轮询每个所述第二存储空间的存储单元的发送子单元 ; 若轮询到的发送子单 元存储有元数据修改结果, 获取存储的元数据修改结果。 0052 结合第三方面、 第三方面的第一种可能的实现方式、 第三方面的第二种可能的实。
33、 现方式或第三方面的第三种可能的实现方式, 在第四种可能的实现方式中, 所述存储器, 还 用于将所述节点设备的心跳信息存储在位于每个所述第一存储空间、 且与所述 ID 信息对 应的存储单元中 ; 0053 所述处理器, 具体用于 : 0054 轮询每个所述第一存储空间的存储单元, 并查看轮询到的存储单元中是否存储所 述集群锁信息 ; 0055 若轮询到的存储单元中未存储所述集群锁信息, 则竞争到所述集群锁信息, 并存 储在所述 ID 信息对应的所述第一存储空间的存储单元中 ; 0056 若轮询到的存储空间中存储有所述集群锁信息, 查看轮询到的存储空间中存储的 心跳信息是否超时, 若超时, 则竞。
34、争到所述集群锁信息, 并存储在所述 ID 信息对应的所述 第一存储空间的存储单元中 ; 若未超时, 则未竞争到所述集群锁信息。 0057 根据第一方面提供的基于集群的元数据修改方法、 第二方面提供的元数据修改装 置或者第三方面提供的节点设备, 集群中的每个节点设备都可以获取元数据修改请求, 将 获取到的元数据修改请求存储在第二存储空间对应的存储单元中 ; 还可以在第一存储空间 中竞争集群锁信息, 以及轮询第二存储空间的存储单元, 若竞争到集群锁信息、 且轮询到的 存储单元中存储有元数据修改请求, 则可以获取元数据修改请求并执行, 再将得到的元数 据修改结果存储在第二存储空间对应的存储单元中, 。
35、若轮询到的存储单元存储有元数据修 改结果, 获取存储的元数据修改结果 ; 可见, 集群中节点设备之间的通信不再是基于控制面 进行的, 而是通过 LUN 中的第一存储空间和第二存储空间实现的, 集群中节点设备之间在 竞争集群锁时是基于 LUN 中的第一存储空间进行通信的, 最终获取到的集群锁也是存储在 LUN 中的第一存储空间的, 集群中节点设备之间在进行元数据修改时是基于 LUN 中的第二 说 明 书 CN 103678537 A 8 5/9 页 9 存储空间进行通信的, 元数据修改请求以及元数据修改结果都是存储在 LUN 中的第二存储 空间的, 即使集群中节点设备之间的网络出现故障, 集群中。
36、节点设备之间不能通过网络通 信, 仍可以通过 LUN 中的第一存储空间和第二存储空间正常通信, 从而可以确保元数据修 改的正确性。 附图说明 0058 图 1 为现有技术中第一种卷管理方式的示意图 ; 0059 图 2 为现有技术中第二种卷管理方式的示意图 ; 0060 图 3 为本发明实施例中基于集群的元数据修改方法的应用场景的示意图 ; 0061 图 4 为本发明实施例中基于集群的元数据修改方法的流程图 ; 0062 图 5 为本发明实施例中第二存储空间的每个存储单元的结构示意图 ; 0063 图 6 为本发明实施例中基于集群的元数据装置的结构示意图 ; 0064 图 7 为本发明实施例中。
37、节点设备的结构示意图。 具体实施方式 0065 针对现有的元数据修改方法中一旦网络出现故障无法保证元数据修改的正确性 的问题, 发明人经研究发现, 出现该问题的原因是, 一旦出现网络故障, 节点之间无法进行 通信, 从而影响元数据修改的正确性。 因此, 本发明实施例提供一种基于集群的元数据修改 方法, 如图 3 所示, 集群包括至少两个节点设备, 集群与 SAN 连接, SAN 包括至少一个 LUN, 每 个 LUN 包含第一存储空间和第二存储空间, 针对每个节点设备, 该方法的流程如图 4 所示, 执行步骤如下 : 0066 S40 : 根据获取到的元数据修改请求确定需要修改元数据的 LUN。
38、, 将获取到的元 数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与当前节点设备的标识 (Identification, ID) 信息对应的存储单元中。 0067 基于集群的卷管理中涉及到元数据修改的操作有创建卷、 删除卷、 扩容卷、 减容卷 等。 0068 当前节点设备可以在自身产生元数据修改请求, 也可以从设备接口接收到元数据 修改请求。获取到元数据修改请求之后, 根据其中携带的需要修改元数据的 LUN 的信息就 可以确定需要修改元数据的 LUN, 将该元数据修改请求存储在位于确定出的 LUN 包含的第 二存储空间、 且与当前节点设备的 ID 信息对应的存储单元中。 006。
39、9 其中, 第二存储空间是 LUN 上的一段区域, 可以将第二存储空间等分后得到存储 单元, 这样当前节点设备只要根据 ID 信息和每个存储单元的大小就可以计算在第二存储 空间中的偏移量, 从而找到对应的存储单元。 0070 S41 : 在第一存储空间中竞争集群锁信息, 以及轮询每个第二存储空间的存储单 元。 0071 S40与S41并没有严格的先后执行顺序, 可以同时执行, 也可以先执行S40, 再执行 S41, 当然也可以先执行 S41, 再执行 S40。 0072 S42 : 若竞争到集群锁信息、 且轮询到的存储单元中存储有元数据修改请求, 获取 并执行存储的元数据修改请求后, 将得到的。
40、元数据修改结果存储在获取对应的元数据修改 说 明 书 CN 103678537 A 9 6/9 页 10 请求的存储单元中。 0073 当前节点设备在获取到集群锁信息后, 一旦轮询到存储单元中存储有元数据修改 请求, 就可以获取并执行该元数据修改请求了。 0074 第一存储空间是 LUN 上的一段区域, 可以将第一存储空间进行等分后得到存储单 元, 这样当前节点设备只要根据预先获取的 ID 信息和每个存储单元的大小就可以计算在 第一存储空间中的偏移量, 从而找到对应的存储单元。 0075 S43 : 若轮询到的存储单元存储有元数据修改结果, 获取存储的元数据修改结果。 0076 当前节点设备轮。
41、询到与接收到的元数据修改请求对应的元数据修改结果时, 获取 该元数据修改结果, 这样就完成了处理一个元数据修改请求的流程。 0077 S42与S43并没有严格的先后执行顺序, 可以同时执行, 也可以先执行S42, 再执行 S43, 当然也可以先执行 S43, 再执行 S42。 0078 该方案中, 集群中节点设备之间的通信不再是基于控制面进行的, 而是通过 LUN 中的第一存储空间和第二存储空间实现的, 集群中节点设备之间在竞争集群锁时是基于 LUN 中的第一存储空间进行通信的, 最终获取到的集群锁也是存储在 LUN 中的第一存储空 间的, 集群中节点设备之间在进行元数据修改时是基于 LUN 。
42、中的第二存储空间进行通信 的, 元数据修改请求以及元数据修改结果都是存储在 LUN 中的第二存储空间的, 即使集群 中节点设备之间的网络出现故障, 集群中节点设备之间不能通过网络通信, 仍可以通过 LUN 中的第一存储空间和第二存储空间正常通信, 从而可以确保元数据修改的正确性。 0079 具体的, 上述 S40 中的当前节点设备获取当前节点设备的 ID 信息, 具体包括 : 0080 当前节点设备启动后, 从一个第一存储空间包含的空闲的存储单元中选取任意一 个存储单元、 地址最小的存储单元或者地址最大的存储单元 ; 0081 将选取的存储单元的 ID 信息作为当前节点设备的 ID 信息。 0。
43、082 如图 5 所示, 第二存储空间的每个存储单元包括接收子单元和发送子单元, 并且 接收子单元和发送子单元大小相等。 0083 具体的, 上述 S40 中的当前节点设备将获取到的元数据修改请求存储在位于确定 出的LUN包含的第二存储空间、 且与当前节点设备的ID信息对应的存储单元中, 具体包括 : 当前节点设备将获取到的元数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与 ID 信息对应的存储单元的接收子单元中。 0084 具体的, 上述 S41 中的当前节点设备在第一存储空间中竞争集群锁信息, 以及轮 询每个第二存储空间的存储单元中的接收子单元 ; 0085 若当前节点设。
44、备竞争到集群锁信息、 且轮询到的接收子单元中存储有元数据修改 请求, 则获取并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取对应 的元数据修改请求的存储单元的发送子单元中。 0086 具体的, 上述 S41 中可以是当前节点设备轮询每个第二存储空间的存储单元的发 送子单元 ; 0087 若轮询到的发送子单元存储有元数据修改结果, 获取存储的元数据修改结果。 0088 可选的, 上述基于集群的元数据修改方法还包括 : 当前节点设备将当前节点设备 的心跳信息存储在位于每个第一存储空间、 且与 ID 信息对应的存储单元中。 0089 当前节点设备启动后, 可以一定的时间周期将自身的心。
45、跳信息存储在位于每个第 说 明 书 CN 103678537 A 10 7/9 页 11 一存储空间、 与前节点设备的 ID 信息对应的存储单元中, 心跳信息中会携带时间信息, 来 表明该心跳信息生成的时间。 0090 上述 S41 中的当前节点设备在第一存储空间中竞争集群锁信息, 具体包括 : 0091 当前节点设备轮询每个第一存储空间的存储单元, 并查看轮询到的存储单元中是 否存储集群锁信息 ; 0092 若轮询到的存储单元中未存储集群锁信息, 则竞争到集群锁信息, 并存储在 ID 信 息对应的第一存储空间的存储单元中 ; 0093 若轮询到的存储空间中存储有集群锁信息, 查看轮询到的存储。
46、空间中存储的心跳 信息是否超时, 若超时, 则竞争到集群锁信息, 并存储在 ID 信息对应的第一存储空间的存 储单元中 ; 若未超时, 则未竞争到集群锁信息。 0094 当前节点设备可以去竞争集群锁, 竞争到集群锁后可以执行元数据修改请求, 并 将得到的元数据修改结果存储在相应第二存储空间的存储单元中。在竞争集群锁的过程 中, 若轮询到的第一存储空间的存储单元中存储了集群锁, 就可以去查看该存储单元中的 心跳信息, 根据心跳信息中携带的时间信息与当前时间信息的差值来确定心跳信息是否超 时, 若超时就可以获取到该集群锁信息。 0095 由于集群锁只有一个, 所以只有获取到集群锁的节点设备才能执行。
47、元数据修改请 求, 这样就可以保证元数据修改的正确性, 同时由于每个节点设备都会轮询每个第一存储 空间的存储单元, 一旦获取到集群锁的节点设备故障后, 其他的节点设备可以获取到集群 锁, 继续执行元数据修改请求, 完成元数据修改请。 0096 可以对第一存储空间、 第二存储空间命名以及第二存储空间的存储单元中的发 送子单元和接收子单元命名, 例如, 将第一存储空间命名为租约 (Lease) 文件、 第二存储 空间命名为邮箱 (Mailbox) 文件、 第二存储空间的存储单元中的发送子单元命名为收件箱 (Inbox) 文件、 第二存储空间的存储单元中的接收子单元命名为发件箱 (Outbox) 文。
48、件。 0097 由于 Mailbox 文件中的 Inbox 文件和 Outbox 文件大小相等, 所以节点设备可以根 据 ID 信息和 Inbox 文件 (或者 Outbox 文件) 的大小计算偏移量找到对应的 Inbox 文件和 Outbox 文件。为了提高节点设备并行处理的元数据修改请求的个数, Inbox 文件和 Outbox 文件中可以存放多条元数据修改请求。 0098 节点设备既可以将获取到的元数据修改请求放入对应的 Inbox 中, 还可以到对应 的 Outbox 中获取元数据处理结果, 从而完成一次元数据修改的流程。 0099 基于同一发明构思, 本发明实施例提供一种基于集群的元。
49、数据修改装置, 应用于 如图 3 所示的集群包括的至少两个节点设备中, 该装置的结构如图 6 所示, 包括 : 0100 存储模块 60, 用于根据获取到的元数据修改请求确定需要修改元数据的 LUN, 将 获取到的元数据修改请求存储在位于确定出的 LUN 包含的第二存储空间、 且与自身所在的 节点设备的 ID 信息对应的存储单元中。 0101 处理模块 61, 用于第一存储空间中竞争集群锁信息, 以及轮询每个第二存储空间 的存储单元 ; 若竞争到集群锁信息、 且轮询到的存储单元中存储有元数据修改请求, 则获取 并执行存储的元数据修改请求后, 将得到的元数据修改结果存储在获取对应的元数据修改 请求的存储单元中 ; 若轮询模块轮询到的存储单元存储元数据修改结果, 获取存储的元数 据修改结果。 说 明 书 CN 103678537 A 11 8/9 页 12 0102 具体的, 上述存储。