一种元数据集中负载转移方法及系统

阅读: 评论:0

著录项
  • CN201410114579.4
  • 20140325
  • CN103916467A
  • 20140709
  • 中国科学院计算技术研究所;天津中科蓝鲸信息技术有限公司
  • 王洋;郑彩平;张军伟;邵冰清;王利虎;张浩
  • H04L29/08
  • H04L29/08 G06F9/50

  • 北京市海淀区中关村科学院南路6号
  • 北京(11)
  • 北京律诚同业知识产权代理有限公司
  • 祁建国;梁挥
摘要
本发明公开了一种元数据集中负载转移方法及系统,涉及一种元数据集中多个服务器之间元数据负载转移方法。该方法包括:建立至少两个元数据服务器,用于建立负载均衡模块、远程子目录预申请模块、远程子目录创建模块、远程子目录初始化模块、远程子目录删除模块、远程子目录异步释放模块、远程子目录对象回收模块;建立一个客户端,将目录创建请求发送到父目录所在的元数据服务器,获取远程子目录对象标识,并添加到该父目录的目录项中;将目录删除请求发送到该父目录所在的元数据服务器,从该父目录的目录项中删除该远程子目录对象标识。本发明仅需本地一致性保证机制即可,无需使用分布式一致性保证机制,有效提高远程子目录创建、删除性能。
权利要求

1.一种元数据集中负载转移方法,其特征在于,包括下列步骤:

建立至少两个元数据服务器和一个客户端,该元数据服务器用于建立负载 均衡模块、远程子目录预申请模块、远程子目录创建模块、远程子目录初始化 模块、远程子目录删除模块、远程子目录异步释放模块、远程子目录对象回收 模块,其中通过该客户端发送创建和删除远程子目录命令,通过该负载均衡模 块选择负载转移目标元数据服务器,通过该负载转移目标元数据服务器中的该 远程子目录初始化模块创建远程子目录对象并初始化,生成远程子目录对象标 识,通过父目录所在的元数据服务器中的该远程子目录预申请模块预申请远程 子目录对象标识,根据该远程子目录对象标识,通过该父目录所在的元数据服 务器中的该远程子目录创建模块和该远程子目录删除模块进行远程子目录的 创建和删除,远程子目录的创建和删除操作仅在该父目录所在的元数据服务器 本地进行,无需和该负载转移目标元数据服务器交互,根据该远程子目录对象 标识,通过该远程子目录异步释放模块和该远程子目录对象回收模块回收该远 程子目录的元数据和数据资源。

2.如权利要求1所述的元数据集中负载转移方法,其特征在于,还包括:

通过该负载均衡模块收集并量化元数据服务器的负载和承受能力,通过负 载转移条件,判断是否需要进行负载转移,如果需要负载转移,则通过负载均 衡策略选择负载转移目标元数据服务器。

3.如权利要求1所述的元数据集中负载转移方法,其特征在于,还包括:

该远程子目录预申请模块,用于在该负载转移目标元数据服务器中一次申 请多个远程子目录对象标识,该远程子目录预申请模块以元数据服务器序号, 索引节点号,索引节点版本号三元组的形式对该远程子目录对象标识进行记 录;

该元数据服务器之间通过元数据服务器序号、索引节点号、索引节点版本 号三元组的形式进行该远程子目录对象标识的传递,其中元数据服务器序号标 识与该元数据服务器序号对应的远程子目录对象所在的负载转移目标元数据 服务器。

4.如权利要求1所述的元数据集中负载转移方法,其特征在于,还包括:

该远程子目录初始化模块,用于在该负载转移目标元数据服务器申请索引 节点,并进行初始化,生成远程子目录对象和远程子目录对象标识,其中该远 程子目录对象标识记录在该远程子目录初始化模块中,该客户端根据该远程子 目录对象标识访问远程子目录对象。

5.如权利要求1所述的元数据集中负载转移方法,其特征在于,还包括:

将待释放的该远程子目录对象标识发送到该远程子目录异步释放模块,通 过该远程子目录异步释放模块异步的将多个该远程子目录对象标识一次传递 给该负载转移目标元数据服务器上的该远程子目录对象回收模块;

通过该负载转移目标元数据服务器的该远程子目录对象回收模块记录该 远程子目录对象标识,通过该远程子目录对象标识查与其相对应的该负载转 移目标元数据服务器的该远程子目录对象,并回收该远程子目录对象的元数据 和数据资源。

6.一种元数据集中负载转移系统,其特征在于,包括:

至少两个元数据服务器和一个客户端,该元数据服务器用于建立负载均衡 模块、远程子目录预申请模块、远程子目录创建模块、远程子目录初始化模块、 远程子目录删除模块、远程子目录异步释放模块、远程子目录对象回收模块, 其中通过该客户端发送创建和删除远程子目录命令,通过该负载均衡模块选择 负载转移目标元数据服务器,通过该负载转移目标元数据服务器中的该远程子 目录初始化模块创建远程子目录对象并初始化,生成远程子目录对象标识,通 过父目录所在的元数据服务器中的该远程子目录预申请模块预申请远程子目 录对象标识,根据该远程子目录对象标识,通过该父目录所在的元数据服务器 中的该远程子目录创建模块和该远程子目录删除模块进行远程子目录的创建 和删除,远程子目录的创建和删除操作仅在该父目录所在的元数据服务器本地 进行,无需和该负载转移目标元数据服务器交互,根据该远程子目录对象标识, 通过该远程子目录异步释放模块和该远程子目录对象回收模块回收该远程子 目录的元数据和数据资源。

7.如权利要求6所述的元数据集中负载转移系统,其特征在于,该负载 均衡模块,用于收集并量化元数据服务器的负载和承受能力,通过负载转移条 件,判断是否需要进行负载转移,如果需要负载转移,则通过负载均衡策略选 择负载转移目标元数据服务器。

8.如权利要求6所述的元数据集中负载转移系统,其特征在于,该远程 子目录预申请模块,用于在该负载转移目标元数据服务器中一次申请多个远程 子目录对象标识,该远程子目录预申请模块以元数据服务器序号,索引节点号, 索引节点版本号三元组的形式对该远程子目录对象标识进行记录;

该元数据服务器之间通过元数据服务器序号、索引节点号、索引节点版本 号三元组的形式进行该远程子目录对象标识的传递,其中元数据服务器序号标 识与其对应的远程子目录对象所在的负载转移目标元数据服务器。

9.如权利要求6所述的元数据集中负载转移系统,其特征在于,该远程 子目录初始化模块,用于在该负载转移目标元数据服务器申请索引节点,并进 行初始化,生成远程子目录对象和远程子目录对象标识,其中该远程子目录对 象标识记录在该远程子目录初始化模块中,该客户端根据该远程子目录对象标 识访问远程子目录对象。

10.如权利要求6所述的元数据集中负载转移系统,其特征在于,还包 括:

该远程子目录异步释放模块,用于异步的将多个该远程子目录对象标识一 次传递给该负载转移目标元数据服务器上的该远程子目录对象回收模块;

该远程子目录对象回收模块,用于记录该远程子目录对象标识,通过该远 程子目录对象标识查与其相对应的该负载转移目标元数据服务器的该远程 子目录对象,并回收该远程子目录对象的元数据和数据资源。

说明书
技术领域

本发明涉及集文件系统的元数据负载分布技术,特别涉及一种元数据集 中多个服务器之间元数据负载转移方法。

在大规模集文件系统中,元数据与数据服务分离已经成为了一种趋势。 一方面,数据访问不必通过元数据服务器,而是采用带外方式直接访问存储设 备,从而获取较高的数据访问性能;另一方面,元数据服务器专门提供元数据 服务,卸载了数据访问负载,从而单台元数据服务器可以支持更高的客户端访 问性能,管理更多的存储设备,支持更大的系统规模扩展。然而,随着系统规 模的不断扩大,单台元数据服务器逐渐成为制约系统扩展的瓶颈。为了进一步 提升集文件系统的扩展能力,通常采用多台元数据服务器构成元数据服务器 集,以分散元数据负载,支持通过增加元数据服务器数量达到集文件系统 的横向扩展。

以目录为粒度、把一些子目录的负载转移到其他元数据服务器是元数据负 载分散的一种常用方法,被Lustre、BWFS等集文件系统所采用。元数据负 载的分布是在子目录的创建过程中,以创建远程子目录的方式将子目录元数据 负载转移到其他的元数据服务器,即选择父目录所在的元数据服务器之外的元 数据服务器进行子目录创建,该子目录称为远程子目录。远程子目录的创建和 删除过程涉及到多个元数据服务器,需要多次的网络交互开销和一致性维护开 销,增加了系统实现复杂度,对元数据服务性能,尤其对远程子目录创建、删 除延迟性能产生了较大影响。

以典型的Lustre文件系统中基于子目录的负载转移方法为例,分析其远 程子目录的创建和删除过程的开销。

Lustre文件系统远程子目录创建步骤:

步骤1,客户端首先选择一个负载转移目标元数据服务器RMDS(Remote  MDS),为待创建的子目录分配FID,FID唯一标识Lustre文件系统中的一个 文件或目录对象;然后发送远程子目录创建请求MKDIR到父目录所在的元数据 服务器MMDS(Master MDS),请求参数中包含客户端已分配的子目录FID。

步骤2,父目录所在的元数据服务器MMDS创建一个分布式事务,在所述 事务中完成负载转移目标元数据服务器RMDS根据FID创建子目录对象、设置 相应对象属性并同步磁盘、父目录所在的元数据服务器MMDS在父目录中添加 子目录项并同步磁盘的操作。所述分布式事务涉及到多个元数据服务器,为保 证一致性需要多次的网络交互和磁盘同步开销。

Lustre文件系统远程子目录删除步骤:

步骤1,客户端发送远程子目录删除请求RMDIR到父目录所在的元数据服 务器MMDS。

步骤2,父目录所在的元数据服务器MMDS创建一个分布式事务,在所述 事务中完成父目录所在元数据服务器MMDS在父目录中删除子目录项并同步、 负载转移目标元数据服务器RMDS释放子目录对象并同步的操作。所述分布式 事务涉及到多个元数据服务器,为保证一致性需要多次的网络交互和磁盘同步 开销。

可见,Lustre采用分布式事务日志记录和磁盘同步写的方式保证涉及到 多个元数据服务器的远程子目录创建、删除操作的一致性。然而,分布式事务 需要多次的网络交互和磁盘同步开销,对操作延迟影响较大。

发明专利“分布式文件系统虚拟目录组织及命名空间管理的方法”公开了 一种分布式文件系统虚拟目录组织及命名空间管理的方法,包括以下步骤:根 据用户查询请求和上下文,利用文件系统中文件元数据,以关系代数的方式按 需计算和动态生成虚拟目录,以虚拟文件视图的层现形式为用户提供满足当前 上下文的文件服务;在虚拟目录命名空间中进行文件创建、删除、移动、重命 名、打开、关闭、读、写、截断的文件操作,以及进行上下文目录的创建、删 除和重命名的操作。该专利的有益效果为,在大规模海量文件存储系统中引入 按需计算和动态生成的虚拟目录,克服了传统层次目录结构无法提供按需服务 的缺点,提供了一种高效的文件检索和组织形式。在虚拟目录的组织过程中引 入了包含文件属性和上下文的文件元数据,能根据上下文的变化为用户主动提 供文件服务。但是该专利引入一种新的分布式文件系统虚拟目录组织和命名空 间管理方法,在虚拟目录中进行文件创建、删除、重命名等操作,力求能根据 上下文的变化为用户主动提供文件服务。不涉及元数据负载在多元数据服务器 之间的分布。

发明专利“一种基于目录划分的元数据分布方法及装置”公开了一种基于 目录划分的元数据分布方法,包括以下步骤:获取元数据中的文件名,得到名 称文件;对目录进行目录划分,得到多个目录分片文件,并为每个目录分片文 件分配一个目录分片号;分别为每个名称文件分配一个目录分片号,将名称文 件保存在相应的目录分片文件中;将名称文件存储于当前的目录分片文件中或 者将目录分片文件进行分裂,为分裂出的目录分片文件分配目录分片号,将名 称文件存储于当前的目录分片文件中或者分裂后的目录分片文件中;根据目录 分片号与预定值判断当前的目录分片文件分裂出的目录分片文件的存储位 置。该专利提高了系统的并发度,利用了更多并行资源,利用本地性优势,减 少对网络带宽的消耗,提升系统的整体性能。但是该发明涉及文件系统目录的 划分,将大目录分成多个分片分别进行组织和管理。不涉及跨元数据服务器的 分布式的目录创建。

发明专利“分布式文件系统中元数据管理的负载均衡方法及其系统”公开 了一种分布式文件系统中元数据管理的负载均衡的方法和系统,当元数据的数 据结构即目录树成为热点元数据时,通过采用元数据复制的方式更新目录树的 访问热度;当元数据的服务节点的负载均衡度超过预定的数值时,通过采用元 数据迁移的方式,将部分工作负载从过载节点迁移到过轻节点上,通过上述两 种方式来实现多个元数据服务节点之间的负载均衡。该系统包括信息通讯模 块、元数据操作模块、元数据服务节点管理模块、元数据管理模块、元数据策 略执行模块以及工作负载采集模块。本发明通过元数据复制和元数据迁移这两 种方式,提高了元数据服务资源的利用率,达到了负载均衡的目的,使元数据 服务系统可以平滑扩展。但是该发明涉及元数据管理的负载均衡问题,采用元 数据复制的方法改善某个元数据服务器成为热点的情况,以及使用负载迁移的 方式将负载从一个元数据服务器迁移到另一个元数据服务器以达到负载均 衡。不涉及跨元数据服务器的分布式的目录创建。

针对现有技术的不足,我们提出了一种新的元数据集中负载转移方法将 元数据负载分布到不同的元数据服务器,能够避免远程子目录创建、删除操作 中为保证一致性而需要的多次的网络交互和磁盘同步开销,提高系统性能。

本发明要解决的技术问题是现有技术中集文件系统在多台元数据服务 器间负载分布机制复杂度高、一致性维护开销问题大,提供一种新的元数据负 载转移方法,在目录创建和删除过程中不使用分布式事务来保证一致性、无需 磁盘的同步等待,在很大程度上提高系统性能、降低系统实现复杂度。

为了达到以上目的,本发明采用了将分布式的远程子目录创建和删除操作 转化为本地操作技术方案。

具体的讲,本发明公开一种元数据集中负载转移方法,包括下列步骤:

建立至少两个元数据服务器和一个客户端,该元数据服务器用于建立负载 均衡模块、远程子目录预申请模块、远程子目录创建模块、远程子目录初始化 模块、远程子目录删除模块、远程子目录异步释放模块、远程子目录对象回收 模块,其中通过该客户端发送创建和删除远程子目录命令,通过该负载均衡模 块选择负载转移目标元数据服务器,通过该负载转移目标元数据服务器中的该 远程子目录初始化模块创建远程子目录对象并初始化,生成远程子目录对象标 识,通过父目录所在的元数据服务器中的该远程子目录预申请模块预申请远程 子目录对象标识,根据该远程子目录对象标识,通过该父目录所在的元数据服 务器中的该远程子目录创建模块和该远程子目录删除模块进行远程子目录的 创建和删除,远程子目录的创建和删除操作仅在该父目录所在的元数据服务器 本地进行,无需和该负载转移目标元数据服务器交互,根据该远程子目录对象 标识,通过该远程子目录异步释放模块和该远程子目录对象回收模块回收该远 程子目录的元数据和数据资源。

所述的元数据集中负载转移方法,还包括:

通过该负载均衡模块收集并量化元数据服务器的负载和承受能力,通过负 载转移条件,判断是否需要进行负载转移,如果需要负载转移,则通过负载均 衡策略选择负载转移目标元数据服务器。

所述的元数据集中负载转移方法,还包括:

该远程子目录预申请模块,用于在该负载转移目标元数据服务器中一次申 请多个远程子目录对象标识,该远程子目录预申请模块以元数据服务器序号, 索引节点号,索引节点版本号三元组的形式对该远程子目录对象标识进行记 录;

该元数据服务器之间通过元数据服务器序号、索引节点号、索引节点版本 号三元组的形式进行该远程子目录对象标识的传递,其中元数据服务器序号标 识与该元数据服务器序号对应的远程子目录对象所在的负载转移目标元数据 服务器。

所述的元数据集中负载转移方法,还包括:

该远程子目录初始化模块,用于在该负载转移目标元数据服务器申请索引 节点,并进行初始化,生成远程子目录对象和远程子目录对象标识,其中该远 程子目录对象标识记录在该远程子目录初始化模块中,该客户端根据该远程子 目录对象标识访问远程子目录对象。

所述的元数据集中负载转移方法,还包括:

将待释放的该远程子目录对象标识发送到该远程子目录异步释放模块,通 过该远程子目录异步释放模块异步的将多个该远程子目录对象标识一次传递 给该负载转移目标元数据服务器上的该远程子目录对象回收模块;

通过该负载转移目标元数据服务器的该远程子目录对象回收模块记录该 远程子目录对象标识,通过该远程子目录对象标识查与其相对应的该负载转 移目标元数据服务器的该远程子目录对象,并回收该远程子目录对象的元数据 和数据资源。

本发明还公开一种元数据集中负载转移系统,包括:

至少两个元数据服务器和一个客户端,该元数据服务器用于建立负载均衡 模块、远程子目录预申请模块、远程子目录创建模块、远程子目录初始化模块、 远程子目录删除模块、远程子目录异步释放模块、远程子目录对象回收模块, 其中通过该客户端发送创建和删除远程子目录命令,通过该负载均衡模块选择 负载转移目标元数据服务器,通过该负载转移目标元数据服务器中的该远程子 目录初始化模块创建远程子目录对象并初始化,生成远程子目录对象标识,通 过父目录所在的元数据服务器中的该远程子目录预申请模块预申请远程子目 录对象标识,根据该远程子目录对象标识,通过该父目录所在的元数据服务器 中的该远程子目录创建模块和该远程子目录删除模块进行远程子目录的创建 和删除,远程子目录的创建和删除操作仅在该父目录所在的元数据服务器本地 进行,无需和该负载转移目标元数据服务器交互,根据该远程子目录对象标识, 通过该远程子目录异步释放模块和该远程子目录对象回收模块回收该远程子 目录的元数据和数据资源。

所述的元数据集中负载转移系统,该负载均衡模块,用于收集并量化元 数据服务器的负载和承受能力,通过负载转移条件,判断是否需要进行负载转 移,如果需要负载转移,则通过负载均衡策略选择负载转移目标元数据服务器。

所述的元数据集中负载转移系统,该远程子目录预申请模块,用于在该 负载转移目标元数据服务器中一次申请多个远程子目录对象标识,该远程子目 录预申请模块以元数据服务器序号,索引节点号,索引节点版本号三元组的形 式对该远程子目录对象标识进行记录;

该元数据服务器之间通过元数据服务器序号、索引节点号、索引节点版本 号三元组的形式进行该远程子目录对象标识的传递,其中元数据服务器序号标 识与其对应的远程子目录对象所在的负载转移目标元数据服务器。

所述的元数据集中负载转移系统,该远程子目录初始化模块,用于在该 负载转移目标元数据服务器申请索引节点,并进行初始化,生成远程子目录对 象和远程子目录对象标识,其中该远程子目录对象标识记录在该远程子目录初 始化模块中,该客户端根据该远程子目录对象标识访问远程子目录对象。

所述的元数据集中负载转移系统,还包括:

该远程子目录异步释放模块,用于异步的将多个该远程子目录对象标识一 次传递给该负载转移目标元数据服务器上的该远程子目录对象回收模块;

该远程子目录对象回收模块,用于记录该远程子目录对象标识,通过该远 程子目录对象标识查与其相对应的该负载转移目标元数据服务器的该远程 子目录对象,并回收该远程子目录对象的元数据和数据资源。

本发明的技术效果为:

能够有效降低远程子目录创建、删除过程中一致性维护开销,提高系统性 能。

图1为远程子目录创建和删除过程模块图

图2为远程子目录对象申请和释放流程图

其中,附图标记

1  为客户端;

2  为父目录所在的元数据服务器;

21 为负载均衡模块;

22 为远程子目录创建模块;

23 为远程子目录预申请模块;

24 为远程子目录删除模块;

25 为远程子目录异步释放模块;

3  为负载转移目标元数据服务器;

31 为远程子目录初始化模块;

32 为远程子目录对象回收模块;

步骤100为删除远程子目录,

其中包括步骤101、步骤102、步骤103;

步骤200为创建远程子目录,

其中包括步骤201、步骤202、步骤203;

以下给出本发明的具体实施方式,结合附图对本发明做出了详细描述。

如图1所示,本发明至少包含两个元数据服务器和一个客户端。所述元数 据服务器端包含负载均衡模块21、远程子目录创建模块22、远程子目录预申 请模块23、远程子目录初始化模块31、远程子目录删除模块24、远程子目录 异步释放模块25、远程子目录对象回收模块32。

负载均衡模块21,用于协调不同元数据服务器的负载,选择合适的负载 转移目标元数据服务器3。客户端1的目录创建请求到达元数据服务器后,首 先经过负载均衡模块21。负载均衡模块21通过收集并量化不同元数据服务器 当前的负载和承受能力,根据负载转移条件,判断是否需要进行负载转移。如 果需要负载转移,则根据负载均衡策略选择一个合适的目标元数据服务器。

远程子目录创建模块22,用于完成远程子目录的创建,实现负载转移。 本模块根据负载均衡模块21选定的负载转移目标元数据服务器3,从远程子 目录预申请模块23中获取已预申请到的负载转移目标元数据服务器3上的远 程子目录对象标识,并将远程子目录对象标识添加到父目录的目录项中。所述 远程子目录创建操作仅涉及到父目录所在元数据服务器,仅需要保证该操作的 本地一致性。

远程子目录预申请模块23,在接收并执行目录创建请求之前,预先从负 载转移目标元数据服务器3上申请多个可用的远程子目录对象标识,并记录在 所述模块中。在执行远程子目录创建请求时,远程子目录创建模块22直接使 用所述模块预申请的远程子目录对象标识。在预申请过程中,采用批量申请的 方式,多个远程子目录对象标识的预申请仅需要一次一致性维护开销。

远程子目录初始化模块31,元数据服务器预先初始化多个负载转移目标 服务器3上的远程子目录对象作为父目录所在的元数据服务器2的远程子目录 使用。申请空闲可用的负载转移目标服务器3索引节点inode并进行初始化, 设置必要的属性,包括设置类型为目录,专门供父目录所在的元数据服务器1 创建远程子目录用。之后生成远程子目录对象标识,并记录在所述模块中,客 户端1后续可以直接根据远程子目录对象标识访问该已初始化的远程子目 录。所述远程子目录初始化操作仅涉及到负载转移目标元数据服务器3,仅需 要保证该操作的本地一致性。

远程子目录删除模块24,用于完成远程子目录的删除。本模块执行删除 远程子目录项操作,将待删除的远程子目录对象标识从父目录的目录项中移 除,并将被删除的对象标识传递给远程子目录异步释放模块25。所述远程子 目录删除操作仅涉及到父目录所在的元数据服务器2,仅需要保证该操作的本 地一致性。

远程子目录异步释放模块25,用于异步地释放远程子目录对象标识。当 接收到远程子目录删除模块24多个删除的远程子目录对象标识后,本模块异 步的将多个删除的远程子目录对象标识一次传递给负载转移目标元数据服务 器2上的远程子目录对象回收模块32。在异步释放过程中,采用批量的方式, 多个远程子目录对象标识的释放仅需要一次一致性维护开销。

远程子目录对象回收模块32,用于回收负载转移目标元数据服务器3上 远程子目录异步释放模块25释放的远程子目录对象标识对应的远程子目录对 象及其所占的元数据和数据资源进行释放回收,以供后续的目录或文件创建操 作使用。所述远程子目录对象回收操作仅涉及到负载转移目标元数据服务器 3,仅需要保证该操作的本地一致性。

本发明主要包括远程子目录的创建和远程子目录的删除两个操作。如图2 所示,在负载转移目标元数据服务器3中,通过步骤203初始化远程索引节点, 通过步骤202远程索引节点预留缓存,在父目录所在的元数据服务器2中,通 过步骤201远程索引节点创建缓存,通过步骤200创建远程子目录;

在父目录所在的元数据服务器2中,通过步骤100删除远程子目录,通过 步骤101远程索引节点删除缓存,在负载转移目标元数据服务器3中,通过步 骤102远程索引节点回收缓存,通过步骤103释放远程索引节点。

元数据服务器之间以(元数据服务器序号,索引节点号,索引节点版本号) 三元组的形式进行远程子目录对象标识传递。

以下为远程子目录的创建和远程子目录的删除的具体步骤:

远程子目录的创建操作

在本操作中,本发明将分布式远程子目录创建过程中的添加目录项和创建 目录对象作为两个独立的过程。负载转移目标元数据服务器3端的远程子目录 初始化模块31首先预留部分远程子目录,并形成远程子目录对象标识;父目 录所在元数据服务器2端的远程子目录预申请模块23在系统空闲时向负载转 移目标元数据服务器3预申请部分远程子目录对象标识,并记录到父目录所在 元数据服务器2本地;在父目录所在的元数据服务器2需要创建远程子目录 时,只需使用上述远程子目录标识在父目录所在的元数据服务器2的远程子目 录创建模块22内添加目录项。该方法将分布式的远程子目录创建过程,转化 为负载转移目标元数据服务器3端本地的远程子目录初始化和父目录所在的 元数据服务器2端本地的远程子目录创建,仅需本地一致性保证机制即可,无 需使用复杂的分布式一致性保证机制,无需磁盘同步等待,可有效提高远程子 目录创建性能。

远程子目录对象初始化步骤如下:

负载转移目标元数据服务器3端的远程子目录初始化模块31申请多个索 引节点,并进行初始化,作为父目录所在的元数据服务器2的远程子目录使用。

远程子目录初始化模块31在负载转移目标元数据服务器3申请若干索引 节点,并分别对它们进行初始化。其中包括:设置索引节点的属性如索引节点 号、索引节点版本号、目录大小等;设置类型为目录,标识该索引节点为目录; 标识为远程,标识该索引节点是为父目录所在的元数据服务器2预留,后续将 作为远程子目录对象使用。并且生成远程子目录对象标识,记录在远程子目录 初始化模块31中。远程子目录对象经过初始化后,就可以被客户端1根据远 程子目录对象标识直接访问。

远程子目录初始化模块31记录所有预留的远程子目录对象标识。远程子 目录对象标识包括索引节点号,索引节点版本号。作为一种优选方案,为了节 省缓存空间,初始化索引节点时可选择一些连续的索引节点进行预留,并设置 相同的索引节点版本号。然后以扩展段紧凑方式记录多个远程子目录对象标 识,具体格式为(起始索引节点号号,连续的索引节点个数,索引节点版本号)。 在之后的访问中,根据远程子目录对象标识即可查并访问负载转移目标元数 据服务器3相对应的远程子目录对象。

远程子目录对象预申请具体步骤如下:

父目录所在的元数据服务器2中的远程子目录预申请模块23从负载转移 目标元数据服务器3中一次预申请多个远程子目录对象标识。

远程子目录预申请模块23在系统空闲时从负载转移目标元数据服务器3 申请多个预留远程子目录对象标识,元数据服务器之间以(元数据服务器序号, 索引节点号,索引节点版本号)三元组的形式进行远程子目录对象标识传递, 其中与元数据服务器序号标识相对应的目录对象在负载转移目标元数据服务 器3中。因此,(元数据服务器序号、索引节点号、索引节点版本号)三元组 即可唯一代表文件系统中的一个远程子目录对象。

远程子目录预申请模块23记下预申请到的远程子目录对象标识,同样以 (元数据服务器序号,索引节点号,索引节点版本号)三元组的形式进行远程子 目录对象标识记录。

上述为远程子目录创建的准备工作,可在系统空闲时完成,以下为远程子 目录的创建步骤。

远程子目录创建步骤如下:

父目录所在的元数据服务器2响应客户端1的远程子目录创建请求,如果 负载均衡模块21确定需要进行负载转移,则进行远程子目录创建操作。

客户端1使用标准目录创建命令将目录创建请求发送到父目录所在的元 数据服务器2。

父目录所在的元数据服务器2上的负载均衡模21块通过负载收集和一定 的负载均衡策略决定需要进行负载迁移。

父目录所在的元数据服务器2上的负载均衡模块21选择合适的负载转移 目标元数据服务器3。

步骤34,父目录所在的元数据服务器2上的远程子目录创建模块22从远 程子目录预申请模块23中获取负载转移目标元数据服务器3的一个预申请的 远程子目录标识,添加到父目录所在的元数据服务器2的目录项中。

所述远程子目录创建步骤仅在父目录所在的元数据服务器2本地进行,无 需和负载转移目标元数据服务器3交互。完成后,可返回给客户端1。

远程子目录删除操作

在本操作中,本发明将分布式目录删除过程中的目录项删除和目录对象释 放作为两个独立的子过程。先由父目录所在的元数据服务器2端远程子目录删 除模块24在父目录所在的元数据服务器2本地完成目录项删除子操作,再由 远程子目录异步释放模块25将待释放的远程子目录对象标识通过异步的远程 过程调用发送到负载转移目标元数据服务器3,负载转移目标元数据服务器3 端远程子目录对象回收模块31记下这些对象标识,之后再异步地在负载转移 目标元数据服务器3本地完成回收。该方法将分布式的远程子目录删除过程, 转化为父目录所在的元数据服务器2端本地的远程子目录删除和负载转移目 标元数据服务器3端本地的远程子目录对象回收,仅需本地一致性保证机制即 可,无需使用复杂的分布式一致性保证机制,无需磁盘同步等待,可有效提高 远程子目录删除性能,以下是具体步骤。

远程子目录删除步骤如下:

父目录所在的元数据服务器2响应客户端1的目录删除请求,如果是远程 子目录,则进行远程子目录删除;

客户端1使用标准的目录删除命令将目录删除请求发送到父目录所在的 元数据服务器2;

父目录所在的元数据服务器2判断待删除的目录为远程子目录;

远程子目录删除模块24执行父目录所在的元数据服务器2本地的目录项 删除操作,并将待释放的远程子目录对象标识发送到远程子目录异步释放模块 25。远程子目录异步释放模块25仍以(元数据服务器序号,索引节点号,索引 节点版本号)三元组的形式记录待释放的远程子目录对象标识。

本步骤仅在父目录所在的元数据服务器2本地完成,无需与负载转移目标 元数据服务器3交互。完成后,即可返回给客户端1。

远程子目录对象回收步骤如下:

本步骤对远程子目录对象进行释放回收。

父目录所在的元数据服务器2端的远程子目录异步释放模块25在系统空 闲时,将记录的远程子目录对象标识发送到由相应的元数据服务器序号标识的 负载转移目标元数据服务器3,请求进行资源回收。元数据服务器之间以(元 数据服务器序号,索引节点号,索引节点版本号)三元组的形式进行远程子目 录对象标识传递。

负载转移目标元数据服务器3端的远程子目录对象回收模块32记下父目 录所在的元数据服务器2发送过来的远程子目录对象标识。这里至少需要记录 目录对象的索引节点号和索引节点版本号。

负载转移目标元数据服务器3端的远程子目录对象回收模块32在系统空 闲时,根据记录下的远程子目录对象标识(索引节点号、索引节点版本号)查 到负载转移目标元数据服务器3本地对象,回收相应的元数据和数据资源。

本文发布于:2023-04-14 21:06:04,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86853.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图