【技术实现步骤摘要】
一种分布式存储系统中的重新分片方法及系统
本专利技术涉及互联网
,特别涉及一种分布式存储系统中的重新分片方法及系统。
技术介绍
在当前的分布式存储系统中,存储桶(bucket)的元数据可以存储于bucketindex的数据结构中。在传统的分布式存储系统中,单个存储桶的元数据可以全部存储于同一个分片(shard)文件中。然而,随着存储桶中文件数据的不断增加,分片文件的数据量也在不断增加。过大体积的分片文件,会导致底层存储性能消耗严重、一致性校验过程耗时较长等一系列问题。鉴于此,目前可以将同一个存储桶划分为多个分片,并在这多个分片中分别存储一部分元数据。具体地,如图1所示,现有的分布式存储系统可以通过omap来实现不同的分片,omap可以存放元数据的文件,当用户想要上传某个目标文件时,分布式存储系统可以选定一个文件存储网关(RGW,RadosGateWay),并通过选定的文件存储网关来确定,该目标文件的元数据应当被存放入哪个omap中。然而,现有的这种通过omap来实现分片的方式,在面对重新分片(reshard)时会存在一定的缺陷:如果需要调整分片数量,那么必然会对应地调整omap的数量。由于omap中存放了文件的元数据,那么在进行重新分片时,需要将分布式存储系统设置为离线状态。这样,在进行重新分片时,可以将原有的元数据在重新分片后的omap中进行迁移和重新分配。在完成重新分片的过程之后,可以将分布式存储系统设置为在线状态,从而继续向用户提供服务。随着元数据数据的不断增多,每次重新分片的耗时也必然会 ...
【技术保护点】
1.一种分布式存储系统中的重新分片方法,其特征在于,所述分布式存储系统中包含至少一个存储桶,每个所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息;所述方法包括:/n在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中;/n删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应;/n根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。/n
【技术特征摘要】
1.一种分布式存储系统中的重新分片方法,其特征在于,所述分布式存储系统中包含至少一个存储桶,每个所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息;所述方法包括:
在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中;
删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应;
根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。
2.根据权利要求1所述的方法,其特征在于,所述存储桶的头部字段中包括所述存储桶的当前版本号;
相应地,在针对所述存储桶重新分片时,从所述存储桶的头部字段中识别所述存储桶的当前版本号,并在将各个所述分片统计信息中的统计值累加至所述头部字段中之后,更新所述当前版本号,并用更新后的版本号替换所述头部字段中的所述当前版本号。
3.根据权利要求2所述的方法,其特征在于,在从所述存储桶的头部字段中识别所述存储桶的当前版本号之后,所述方法还包括:
将所述存储桶的头部字段和所述当前版本号关联存储于备份数据集合中,以及将所述预设数量的分片的各个分片统计信息和所述当前版本号关联存储于所述备份数据集合中;
若重新分片过程中出现异常导致重新分片失败,基于所述备份数据集合中与所述当前版本号关联的头部字段和各个分片统计信息,对所述存储桶进行数据还原。
4.根据权利要求1所述的方法,其特征在于,在对操作日志集合中的操作日志进行分组之后,所述方法还包括:
分别创建各个所述分片的元数据处理任务,其中,当前分片的元数据处理任务中至少包括所述当前分片的分片标识;
在执行所述当前分片的元数据处理任务时,读取所述当前分片的分片统计信息,并基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志;
依次处理读取的各个所述操作日志,并根据处理结果更新所述当前分片的分片统计信息。
5.根据权利要求4所述的方法,其特征在于,所述操作日志集合中的操作日志按照以下方式生成:
接收指向目标文件的文件处理请求,并计算所述目标文件的哈希值;
生成所述文件处理请求对应的操作日志,并将计算得到的所述哈希值写入所述操作日志的指定字段中。
6.根据权利要求4或5所述的方法,其特征在于,基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志包括:
遍历所述操作日志集合中的每条操作日志,并针对当前操作日志,识别所述当前操作日志的指定字段中填写的哈希值;
将识别的所述哈希值对所述预设数量进行取模运算,若取模运算的结果与所述当前分片的分片标识相匹配,将所述当前操作日志作为属于所述当前分片的操作日志。
7.根据权利要求4所述的方法,其特征在于,读取所述当前分片的分片统计信息包括:
在分片统计信息集合中查询所述当前分片的分片标识指向的分片统计信息,并将查询得到的所述分片统计信息作为所述当前分片的分片统计信息。
8.根据权利要求4所述的方法,其特征在于,根据处理结果更新所述当前分片的分片统计信息包括:
若读取的当前操作日志为上传新文件的上传操作日志,在所述当前操作日志中识别所述新文件的指定参数统计值,并将识别出的所述指定参数统计值累加至所述当前分片的分片统计信息中;
若读取的当前操作日志为修改已存储文件的修改操作日志,在所述当前操作日志中识别所述已存储文件修改后的指定参数统计...
【专利技术属性】
技术研发人员:孙细妹,苏学敏,
申请(专利权)人:厦门网宿有限公司,
类型:发明
国别省市:福建;35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。