CN111913909B - 一种分布式存储系统中的重新分片方法及系统 - Google Patents
一种分布式存储系统中的重新分片方法及系统 Download PDFInfo
- Publication number
- CN111913909B CN111913909B CN201910379263.0A CN201910379263A CN111913909B CN 111913909 B CN111913909 B CN 111913909B CN 201910379263 A CN201910379263 A CN 201910379263A CN 111913909 B CN111913909 B CN 111913909B
- Authority
- CN
- China
- Prior art keywords
- current
- slicing
- operation log
- statistical information
- piece
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 239000012634 fragment Substances 0.000 claims abstract description 86
- 238000013467 fragmentation Methods 0.000 claims abstract description 22
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims description 61
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 230000002159 abnormal effect Effects 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 238000005192 partition Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000002085 persistent effect Effects 0.000 description 4
- 238000003672 processing method Methods 0.000 description 2
- 241001178520 Stomatepia mongo Species 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式存储系统中的重新分片方法及系统,所述方法包括:在针对存储桶重新分片时,将各个分片统计信息中的统计值累加至头部字段中;删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应;根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。本申请提供的技术方案,能够在分布式存储系统处于在线状态时,对分布式存储系统中的存储桶进行重新分片。
Description
技术领域
本发明涉及互联网技术领域,特别涉及一种分布式存储系统中的重新分片方法及系统。
背景技术
在当前的分布式存储系统中,存储桶(bucket)的元数据可以存储于bucket index的数据结构中。在传统的分布式存储系统中,单个存储桶的元数据可以全部存储于同一个分片(shard)文件中。然而,随着存储桶中文件数据的不断增加,分片文件的数据量也在不断增加。过大体积的分片文件,会导致底层存储性能消耗严重、一致性校验过程耗时较长等一系列问题。
鉴于此,目前可以将同一个存储桶划分为多个分片,并在这多个分片中分别存储一部分元数据。具体地,如图1所示,现有的分布式存储系统可以通过omap来实现不同的分片,omap可以存放元数据的文件,当用户想要上传某个目标文件时,分布式存储系统可以选定一个文件存储网关(RGW,Rados GateWay),并通过选定的文件存储网关来确定,该目标文件的元数据应当被存放入哪个omap中。
然而,现有的这种通过omap来实现分片的方式,在面对重新分片(reshard)时会存在一定的缺陷:如果需要调整分片数量,那么必然会对应地调整omap的数量。由于omap中存放了文件的元数据,那么在进行重新分片时,需要将分布式存储系统设置为离线状态。这样,在进行重新分片时,可以将原有的元数据在重新分片后的omap中进行迁移和重新分配。在完成重新分片的过程之后,可以将分布式存储系统设置为在线状态,从而继续向用户提供服务。随着元数据数据的不断增多,每次重新分片的耗时也必然会增加,这就导致分布式存储系统处于离线的状态过久,无法正常地向用户提供服务。
发明内容
本申请的目的在于提供一种分布式存储系统中的重新分片方法及系统,能够在分布式存储系统处于在线状态时,对分布式存储系统中的存储桶进行重新分片。
为实现上述目的,本申请一方面一种分布式存储系统中的重新分片方法,所述分布式存储系统中包含至少一个存储桶,每个所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息;所述方法包括:在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中;删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应;根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。
为实现上述目的,本申请另一方面还提供一种分布式存储系统中的重新分片系统,所述分布式存储系统中包含至少一个存储桶,所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息;所述重新分片系统包括:统计值累加单元,用于在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中;统计信息创建单元,用于删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应;操作日志分组单元,用于根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。
由上可见,本申请提供的技术方案,存储桶可以具备自身的用于记载指定参数统计信息的头部字段,存储桶划分的多个分片也可以具备各自的分片统计信息。当需要对存储桶进行重新分片时,可以先将各个所述分片统计信息中的统计值累加至所述头部字段中,这样,头部字段便可以汇总记录当前各个分片的统计值。然后,可以删除当前的各个分片的分片统计信息,并根据重新分片后的分片数量,创建等量的多个新的分片统计信息。这些新的分片统计信息,可以用于记录重新分片后的各个分片的统计值。此外,对于操作日志集合中待处理的操作日志,也可以根据重新分片后的分片数量进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致,重新分片后的每个分片都可以对应自身的操作日志的分组。
由上可见,本申请提供的技术方案,并不会对待处理文件的元数据进行重新分片,而是重新创建分片统计信息,以及对操作日志进行重新分组。这种重新分片的过程并不需要迁移大量的元数据,也不会对在线业务造成影响,因此本申请提供的重新分片的方法,能够在分布式存储系统处于在线状态时,对分布式存储系统中的存储桶进行高效的重新分片。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有技术中的分布式存储系统的结构示意图;
图2是本发明实施方式中分布式存储系统的结构示意图;
图3是本发明实施方式中的分片示意图;
图4是本发明实施方式中的重新分片示意图;
图5是本发明实施方式中的数据处理方法步骤图;
图6是本发明实施方式中的分片区间示意图;
图7是本发明实施方式中的重新分片方法步骤图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本申请提供一种分布式存储系统中的重新分片方法。请参阅图2,所述分布式存储系统中各个文件的元数据均可以存储于持久化数据库中。该持久化数据库例如可以是MongoDB。如图2所示,所述分布式存储系统中可以包括多个RGW,当用户客户端需要上传某个文件时,可以通过其中的一个RGW提供的接口,将文件的实际数据以及文件的元数据存储于所述持久化数据库中。
在所述分布式存储系统中,用户可以创建和管理自身的存储桶,所述存储桶可以被划分为预设数量的分片。与所述存储桶相关的各项信息,均可以存储于上述的持久化数据库中。具体地,与所述存储桶相关的信息可以包括:操作日志集合、元数据信息集合、用于记载指定参数统计信息的头部字段、各个分片的分片统计信息等。所述指定参数可以指文件数量和/或文件所占的数据量。该指定参数也可以被称为存储桶的总计费值。其中,当该用户的客户端向分布式存储系统发送文件处理请求时,分布式存储系统可以针对该文件处理请求生成操作日志,并且可以将该操作日志存放于用户的存储桶对应的操作日志集合中。所述元数据信息集合中,可以记录位于所述存储桶内的各个文件的元数据信息。所述元数据信息可以包括文件大小、文件修改时间、文件拥有者、文件标签等多种信息。所述头部字段则可以记录所述存储桶的总计费值。所述总计费值例如可以包括所述存储桶内的文件总数、所述存储桶内文件所占的总数据空间等。所述各个分片的分片统计信息,则可以记录各个分片的计费值。例如,所述分片统计信息可以记录当前分片内的文件总数,以及当前分片内文件所占的总数据空间等。
请参阅图3,操作日志集合中的操作日志,可以根据当前的分片数量进行分组。如图3所示,假设存储桶当前被划分为两个分片,而该存储桶的操作日志集合中有8条待处理的操作日志,那么这8条待处理的操作日志可以被分为两组,分别对应划分的两个分片。
如果对存储桶进行重新分片后,可以将操作日志集合中未处理的操作日志同步地重新分组。请参阅图4,在将存储桶由原先的两个分片重新划分为四个分片后,未处理的8条操作日志也相应地划分为四组,分别对应四个分片。
在本实施方式中,当分布式存储系统接收到用户客户端发来的指向目标文件的文件处理请求后,可以通过哈希算法计算所述目标文件的哈希值。然后,在针对该文件处理请求生成操作日志时,可以将计算得到的所述哈希值写入所述操作日志的指定字段中。所述指定字段例如可以是key_hash字段。这样便可以生成一条携带哈希值的操作日志,该携带哈希值的操作日志可以被写入上述的操作日志集合中。
本申请提供一种应用于上述分布式存储系统中的重新分片方法。所述分布式存储系统中包含至少一个存储桶,所述存储桶当前可以被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息。请参阅图7,所述重新分片方法可以包括以下步骤。
S21:在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中。
在本实施方式中,当需要针对所述存储桶重新分片时,为了记录存储桶当前的统计值,可以将各个所述分片统计信息中的统计值累加至所述头部字段中。需要说明的是,所述头部字段在最初创建时,初始的统计值可以是0,并且在没有进行重新分片前,该初始的统计值都不会实时更新。而各个分片的分片统计信息中记录的统计值,会随着用户客户端发来的文件处理请求而实时更新。也就是说,在重新分片之前,存储桶的头部字段中并不能反映存储桶当前的总的统计值,而该总的统计值,只能根据各个分片的分片统计信息进行汇总得到。
因此,在进行重新分片时,需要将各个分片的分片统计信息中记录的统计值累加至所述存储桶的头部字段中,从而通过头部字段来表示存储桶当前总的统计值。
S23:删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应。
在本实施方式中,在将存储桶当前的总统计值更新至头部字段中后,可以删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息。例如,存储桶原先被划分为2个分片,而重新分片之后,将存储桶划分为4个分片,那么此时需要将原先的2个分片的分片统计信息删除,并创新4份新的分片统计信息。创建的新的分片统计信息中的初始统计值可以为0。这样,创建的所述若干个新的分片统计信息可以与重新分片后的各个分片一一对应,以记录各个分片后续各自的统计值。
S25:根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。
在本实施方式中,在重新创建了分片统计信息后,可以根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组。例如,操作日志集合中的操作日志原先是分为两组,在将存储桶重新划分为4个分片后,操作日志集合中的操作日志也应当被分为4组,使得操作日志的分组数与所述重新分片后的分片数量保持一致。
在一个实施方式中,所述存储桶的头部字段中还可以包括所述存储桶的当前版本号。具体地,在存储桶创建之初,版本号可以是0,后续每对所述存储桶进行一次重新分片,版本号可以累加1。这样,在针对所述存储桶重新分片时,可以从所述存储桶的头部字段中识别所述存储桶的当前版本号,并在将各个所述分片统计信息中的统计值累加至所述头部字段中之后,更新所述当前版本号,并用更新后的版本号替换所述头部字段中的所述当前版本号。上述更新的方式,便可以是在当前版本号的基础上加1,以生成新的版本号。
在本实施方式中,在从所述存储桶的头部字段中识别所述存储桶的当前版本号之后,还可以将所述存储桶的头部字段和所述当前版本号关联存储于备份数据集合中,并且可以将所述预设数量的分片的各个分片统计信息和所述当前版本号关联存储于所述备份数据集合中。所述备份数据集合中的数据,可以用于数据还原。具体地,若重新分片过程中出现异常导致重新分片失败,那么可以基于所述备份数据集合中与所述当前版本号关联的头部字段和各个分片统计信息,对所述存储桶进行数据还原,这样,能够将头部字段和各个分片的分片统计信息,还原至重新分片之前,以提高分布式存储系统的稳定性。
请参阅图5,本申请还提供的一种分布式存储系统中的数据处理方法,可以包括以下步骤。
S11:分别创建各个所述分片的元数据处理任务,其中,当前分片的元数据处理任务中至少包括所述当前分片的分片标识。
在本实施方式中,负责处理操作日志的调度线程可以针对所述存储桶划分的各个分片,分别创建元数据处理任务。在创建的各个所述元数据处理任务中,均可以携带所述存储桶的描述信息。该描述信息例如可以包括所述存储桶的创建者、创建时间等。此外,针对当前分片的元数据处理任务而且,还可以携带所述当前分片的分片标识。这样,通过分片标识可以区分不同的元数据处理任务。
在本实施方式中,所述分片标识可以是分片的编号。在一个应用示例中,所述分片的编号可以从0开始逐渐递增。例如,第一个分片的分片标识可以是0,第二个分片的分片标识可以是1,以此类推。当然,随着实际应用场景的变化,所述分片标识的形式也可以多种多样,本申请对此并不做限定。
S13:在执行所述当前分片的元数据处理任务时,读取所述当前分片的分片统计信息,并基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志。
在本实施方式中,存储桶的每个分片,都可以具备各自的worker线程(工作线程),该worker线程可以接收并执行当前分片的元数据处理任务。具体地,多个分片可以由多个worker线程负责处理,假设有1-20个分片,配置的worker线程数是40,那么同时并发执行的worker线程有20,还有20个worker线程当前会空闲。所以在同一时刻,各个分片的元数据处理任务由自身唯一的工作线程执行。在执行当前分片的元数据处理任务时,首先可以根据元数据处理任务中携带的分片标识,从分片统计信息集合中查询所述当前分片的分片标识指向的分片统计信息,并将查询得到的所述分片统计信息作为所述当前分片的分片统计信息。这样,worker线程可以读取到所述当前分片的分片统计信息。此外,worker线程还可以根据所述当前分片的分片标识,从操作日志集合中筛选出属于所述当前分片的操作日志。操作日志集合中的每条操作日志,均可以携带计算得到的哈希值,worker线程可以根据该哈希值,来判断当前的操作日志是否属于当前分片。具体地,worker线程可以遍历所述操作日志集合中的每条操作日志,并针对当前操作日志,识别所述当前操作日志的指定字段中填写的哈希值。然后,可以将识别的所述哈希值对所述预设数量进行取模运算(mod),若分片标识是按照从0开始的编号方式,那么取模运算的结果只可能是多个分片标识中的一个。那么,若取模运算的结果与所述当前分片的分片标识相匹配,则可以将所述当前操作日志作为属于所述当前分片的操作日志。相反,若取模运算的结果与所述当前分片的分片标识不匹配,则表示所述当前操作日志不属于所述当前分片。
在本申请中,上述步骤S25中操作日志的分组方式也可以如步骤S13所述,利用操作日志携带的哈希值对重新分片后的分片数量进行取模运算,并将取模运算结果相同的操作日志划分至同一组,从而可以产生与重新分片后的分片数量相等的操作日志分组。
S15:依次处理读取的各个所述操作日志,并根据处理结果更新所述当前分片的分片统计信息。
在本实施方式中,按照上述的方式,worker线程可以从操作日志集合中筛选出属于当前分片的各个操作日志,并可以按照操作日志的生成时间,依次处理各个操作日志。
具体地,在对操作日志进行处理时,针对读取的当前操作日志,可以从所述当前操作日志中提取待处理的目标文件的元数据信息,该元数据信息可以表示经过所述当前操作日志处理之后的目标文件的元数据信息。这样,在提取出所述目标文件的元数据信息后,可以将提取的所述元数据信息写入所述存储桶的元数据信息集合中。
此外,根据当前操作日志的类型的不同,还可以对当前分片的分片统计信息进行不同的处理。具体地,若当前操作日志为上传新文件的上传操作日志,那么可以在所述当前操作日志中识别所述新文件的指定参数统计值,并将识别出的所述指定参数统计值累加至所述当前分片的分片统计信息中。所述当前分片的分片统计信息中可以记录处于所述当前分片内的各个文件的指定参数统计总值,因此,当需要在所述当前分片内写入新文件时,则需要将该新文件的指定参数统计值累加至分片统计信息中。类似地,若读取的当前操作日志为修改已存储文件的修改操作日志,则可以在所述当前操作日志中识别所述已存储文件修改后的指定参数统计值,并在所述当前分片的分片统计信息中,将所述已存储文件当前的指定参数统计值修改为识别出的所述修改后的指定参数统计值。另外,若读取的当前操作日志为删除已存储文件的删除操作日志,则可以在所述当前操作日志中识别待删除的所述已存储文件的指定参数统计值,并在所述当前分片的分片统计信息中,将识别出的所述指定参数统计值扣除。上述的指定参数统计值,在实际应用中可以指文件的数据量。
在本实施方式中,当前分片的分片统计信息还可以统计处于所述当前分片内的文件的总个数。因此,若读取的当前操作日志为上传新文件的上传操作日志,可以在所述当前分片的分片统计信息中增加文件个数。具体地,如果上传的新文件的数量为1,那么便可以在分片统计新型中将文件个数加1。若读取的当前操作日志为修改已存储文件的修改操作日志,可以保持所述当前分片的分片统计信息中的文件总数不变。若读取的当前操作日志为删除已存储文件的删除操作日志,可以在所述当前分片的分片统计信息中减少文件个数。具体地,如果删除的新文件的数量为1,那么便可以在分片统计新型中将文件个数减1。
这样,当worker线程逐一处理完属于当前分片的各个操作日志后,可以同步地对当前分片的分片统计信息完成更新。最终,worker线程可以将更新后的分片统计信息写入分片统计信息集合中,以替换所述当前分片更新前的分片统计信息。至此,worker线程便完成了所述当前分片的元数据处理任务,此时,worker线程可以通知上述的调度线程,表示本次的元数据处理任务已经完成,并等待接收所述当前分片的下一个元数据处理任务。
在本申请中,在步骤S25之后,可以按照步骤S11至S15描述的方案,为重新分片后的各个分片创建元数据处理任务,并在执行所述元数据处理任务后,对操作日志集合中的各个操作日志进行处理,从而更新各个分片的分片统计信息。
在一个实施方式中,上述的worker线程还可以处理一个分片区间内的多个分片的元数据处理任务。这样,每个worker线程可以具备自身的分片区间,每个worker线程可以执行属于自身的分片区间内的元数据处理任务。具体地,所述存储桶的分片可以进一步划分为多个分片区间,每个分片区间可以由起始分片标识和终止分片标识来限定。例如,存储桶当前共划分为8个分片,而这8个分片可以进一步划分为3个分片区间,这3个分片区间可以表示为[0,2]、[3,5]、[6,7]。这样,最终可以通过三个worker线程来处理这8个分片的元数据处理任务。请参阅图6,操作日志集合中的操作日志,最终便可以由这3个worker线程来执行。
在实际应用中,分片区间的范围可以灵活设置。例如,当系统的处理性能不足时,可以适当减小分片区间的范围,使得每个worker线程需要执行的元数据处理任务不会过多。而当系统的处理性能充足时,可以适当增加分片区间的范围,使得每个worker线程需要执行的元数据处理任务增多。
本申请还提供一种分布式存储系统中的重新分片系统,所述分布式存储系统中包含至少一个存储桶,所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息;所述重新分片系统包括:
统计值累加单元,用于在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中;
统计信息创建单元,用于删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应;
操作日志分组单元,用于根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致。
在一个实施方式中,所述存储桶的头部字段中包括所述存储桶的当前版本号;相应地,所述系统还包括:
当前版本号识别单元,用于在针对所述存储桶重新分片时,从所述存储桶的头部字段中识别所述存储桶的当前版本号;
版本号更新单元,用于在将各个所述分片统计信息中的统计值累加至所述头部字段中之后,更新所述当前版本号,并用更新后的版本号替换所述头部字段中的所述当前版本号。
在一个实施方式中,所述系统还包括:
备份存储单元,用于将所述存储桶的头部字段和所述当前版本号关联存储于备份数据集合中,以及将所述预设数量的分片的各个分片统计信息和所述当前版本号关联存储于所述备份数据集合中;
还原单元,用于若重新分片过程中出现异常导致重新分片失败,基于所述备份数据集合中与所述当前版本号关联的头部字段和各个分片统计信息,对所述存储桶进行数据还原。
在一个实施方式中,所述系统还包括:
任务创建单元,用于分别创建各个所述分片的元数据处理任务,其中,当前分片的元数据处理任务中至少包括所述当前分片的分片标识;
任务执行单元,用于在执行所述当前分片的元数据处理任务时,读取所述当前分片的分片统计信息,并基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志;
日志处理单元,用于依次处理读取的各个所述操作日志,并根据处理结果更新所述当前分片的分片统计信息。
由上可见,本申请提供的技术方案,存储桶可以具备自身的头部字段,存储桶划分的多个分片也可以具备各自的分片统计信息。当需要对存储桶进行重新分片时,可以先将各个所述分片统计信息中的统计值累加至所述头部字段中,这样,头部字段便可以汇总记录当前各个分片的统计值。然后,可以删除当前的各个分片的分片统计信息,并根据重新分片后的分片数量,创建等量的多个新的分片统计信息。这些新的分片统计信息,可以用于记录重新分片后的各个分片的统计值。此外,对于操作日志集合中待处理的操作日志,也可以根据重新分片后的分片数量进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致,重新分片后的每个分片都可以对应自身的操作日志的分组。
由于本申请的分片方式与传统的分片方式不同,因此在对分片的元数据进行处理时,可以分别创建各个分片的元数据处理任务,然后,在执行当前分片的元数据处理任务时,可以读取当前分片的分片统计信息,并可以从操作日志集合中读取属于所述当前分片的操作日志。最终,可以依次处理读取的各个所述操作日志,并根据处理结果更新所述当前分片的分片统计信息,从而完成对分片的元数据进行更新的过程。
由上可见,本申请提供的技术方案,并不会对待处理文件的元数据进行重新分片,而是重新创建分片统计信息,以及对操作日志进行重新分组。这种重新分片的过程并不需要迁移大量的元数据,也不会对在线业务造成影响,因此本申请提供的重新分片的方法,能够在分布式存储系统处于在线状态时,对分布式存储系统中的存储桶进行高效的重新分片。此外,重新分片后的操作日志可以被更多个或者更少的进程并行处理,从而实现并行处理的动态调节过程。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种分布式存储系统中的重新分片方法,其特征在于,所述分布式存储系统中包含至少一个存储桶,每个所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息,所述存储桶的头部字段中包括所述存储桶的当前版本号;所述方法包括:
在针对所述存储桶重新分片时,从所述存储桶的头部字段中识别所述存储桶的当前版本号,并将各个所述分片统计信息中的统计值累加至所述头部字段中;
将所述存储桶的头部字段和所述当前版本号关联存储于备份数据集合中,以及将所述预设数量的分片的各个分片统计信息和所述当前版本号关联存储于所述备份数据集合中;
删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应,以记录重新分片后的各个分片各自的统计值;
根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致;
若重新分片过程中出现异常导致重新分片失败,基于所述备份数据集合中与所述当前版本号关联的头部字段和各个分片统计信息,对所述存储桶进行数据还原。
2.根据权利要求1所述的方法,其特征在于,在将各个所述分片统计信息中的统计值累加至所述头部字段中之后,所述方法还包括:
更新所述当前版本号,并用更新后的版本号替换所述头部字段中的所述当前版本号。
3.根据权利要求1所述的方法,其特征在于,在对操作日志集合中的操作日志进行分组之后,所述方法还包括:
分别创建各个所述分片的元数据处理任务,其中,当前分片的元数据处理任务中至少包括所述当前分片的分片标识;
在执行所述当前分片的元数据处理任务时,读取所述当前分片的分片统计信息,并基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志;
依次处理读取的各个所述操作日志,并根据处理结果更新所述当前分片的分片统计信息。
4.根据权利要求3所述的方法,其特征在于,所述操作日志集合中的操作日志按照以下方式生成:
接收指向目标文件的文件处理请求,并计算所述目标文件的哈希值;
生成所述文件处理请求对应的操作日志,并将计算得到的所述哈希值写入所述操作日志的指定字段中。
5.根据权利要求3或4所述的方法,其特征在于,基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志包括:
遍历所述操作日志集合中的每条操作日志,并针对当前操作日志,识别所述当前操作日志的指定字段中填写的哈希值;
将识别的所述哈希值对所述预设数量进行取模运算,若取模运算的结果与所述当前分片的分片标识相匹配,将所述当前操作日志作为属于所述当前分片的操作日志。
6.根据权利要求3所述的方法,其特征在于,读取所述当前分片的分片统计信息包括:
在分片统计信息集合中查询所述当前分片的分片标识指向的分片统计信息,并将查询得到的所述分片统计信息作为所述当前分片的分片统计信息。
7.根据权利要求3所述的方法,其特征在于,根据处理结果更新所述当前分片的分片统计信息包括:
若读取的当前操作日志为上传新文件的上传操作日志,在所述当前操作日志中识别所述新文件的指定参数统计值,并将识别出的所述指定参数统计值累加至所述当前分片的分片统计信息中;
若读取的当前操作日志为修改已存储文件的修改操作日志,在所述当前操作日志中识别所述已存储文件修改后的指定参数统计值,并在所述当前分片的分片统计信息中,将所述已存储文件当前的指定参数统计值修改为识别出的所述修改后的指定参数统计值;
若读取的当前操作日志为删除已存储文件的删除操作日志,在所述当前操作日志中识别待删除的所述已存储文件的指定参数统计值,并在所述当前分片的分片统计信息中,将识别出的所述指定参数统计值扣除。
8.根据权利要求3或7所述的方法,其特征在于,根据处理结果更新所述当前分片的分片统计信息还包括:
若读取的当前操作日志为上传新文件的上传操作日志,在所述当前分片的分片统计信息中增加文件个数;
若读取的当前操作日志为修改已存储文件的修改操作日志,保持所述当前分片的分片统计信息中的文件个数不变;
若读取的当前操作日志为删除已存储文件的删除操作日志,在所述当前分片的分片统计信息中减少文件个数。
9.根据权利要求3所述的方法,其特征在于,依次处理读取的各个所述操作日志包括:
针对读取的当前操作日志,从所述当前操作日志中提取待处理的目标文件的元数据信息,并将提取的所述元数据信息写入所述存储桶的元数据信息集合中。
10.根据权利要求3所述的方法,其特征在于,各个所述分片的元数据处理任务通过多个工作线程执行;其中,同一时刻,各个分片的元数据处理任务由自身唯一的工作线程执行。
11.一种分布式存储系统中的重新分片系统,其特征在于,所述分布式存储系统中包含至少一个存储桶,所述存储桶被划分为预设数量的分片,并且所述存储桶具备用于记载指定参数统计信息的头部字段,以及各个所述分片具备各自的分片统计信息,所述存储桶的头部字段中包括所述存储桶的当前版本号;所述重新分片系统包括:
统计值累加单元,用于在针对所述存储桶重新分片时,将各个所述分片统计信息中的统计值累加至所述头部字段中;
当前版本号识别单元,用于在针对所述存储桶重新分片时,从所述存储桶的头部字段中识别所述存储桶的当前版本号;
备份存储单元,用于将所述存储桶的头部字段和所述当前版本号关联存储于备份数据集合中,以及将所述预设数量的分片的各个分片统计信息和所述当前版本号关联存储于所述备份数据集合中;
统计信息创建单元,用于删除各个所述分片统计信息,并根据重新分片后的分片数量,创建与所述分片数量相等的若干个新的分片统计信息;其中,所述若干个新的分片统计信息与重新分片后的各个分片一一对应,以记录重新分片后的各个分片各自的统计值;
操作日志分组单元,用于根据所述重新分片后的分片数量,对操作日志集合中的操作日志进行分组,以使得操作日志的分组数与所述重新分片后的分片数量保持一致;
还原单元,用于若重新分片过程中出现异常导致重新分片失败,基于所述备份数据集合中与所述当前版本号关联的头部字段和各个分片统计信息,对所述存储桶进行数据还原。
12.根据权利要求11所述的系统,其特征在于,
版本号更新单元,用于在将各个所述分片统计信息中的统计值累加至所述头部字段中之后,更新所述当前版本号,并用更新后的版本号替换所述头部字段中的所述当前版本号。
13.根据权利要求11所述的系统,其特征在于,所述系统还包括:
任务创建单元,用于分别创建各个所述分片的元数据处理任务,其中,当前分片的元数据处理任务中至少包括所述当前分片的分片标识;
任务执行单元,用于在执行所述当前分片的元数据处理任务时,读取所述当前分片的分片统计信息,并基于所述当前分片的分片标识,从操作日志集合中读取属于所述当前分片的操作日志;
日志处理单元,用于依次处理读取的各个所述操作日志,并根据处理结果更新所述当前分片的分片统计信息。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379263.0A CN111913909B (zh) | 2019-05-08 | 2019-05-08 | 一种分布式存储系统中的重新分片方法及系统 |
EP19828544.7A EP3754515A4 (en) | 2019-05-08 | 2019-06-06 | REFRAGMENTATION PROCESS AND SYSTEM IN A DISTRIBUTED STORAGE SYSTEM |
PCT/CN2019/090319 WO2020224023A1 (zh) | 2019-05-08 | 2019-06-06 | 一种分布式存储系统中的重新分片方法及系统 |
US16/835,034 US11314701B2 (en) | 2019-05-08 | 2020-03-30 | Resharding method and system for a distributed storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910379263.0A CN111913909B (zh) | 2019-05-08 | 2019-05-08 | 一种分布式存储系统中的重新分片方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111913909A CN111913909A (zh) | 2020-11-10 |
CN111913909B true CN111913909B (zh) | 2024-02-23 |
Family
ID=72039330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910379263.0A Active CN111913909B (zh) | 2019-05-08 | 2019-05-08 | 一种分布式存储系统中的重新分片方法及系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11314701B2 (zh) |
EP (1) | EP3754515A4 (zh) |
CN (1) | CN111913909B (zh) |
WO (1) | WO2020224023A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US11226847B2 (en) | 2019-08-29 | 2022-01-18 | Robin Systems, Inc. | Implementing an application manifest in a node-specific manner using an intent-based orchestrator |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11113158B2 (en) | 2019-10-04 | 2021-09-07 | Robin Systems, Inc. | Rolling back kubernetes applications |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
US11108638B1 (en) | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
CN112445801B (zh) * | 2020-11-27 | 2024-06-14 | 杭州海康威视数字技术股份有限公司 | 数据表的元信息管理方法、装置及存储介质 |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
CN112929213B (zh) * | 2021-01-28 | 2022-06-14 | 苏州浪潮智能科技有限公司 | 一种分片处理方法、系统、存储介质及设备 |
US20220244988A1 (en) * | 2021-01-30 | 2022-08-04 | Salesforce.Com, Inc. | Data shards for distributed processing |
CN112783835B (zh) * | 2021-03-11 | 2024-06-04 | 百果园技术(新加坡)有限公司 | 索引管理方法、装置及电子设备 |
CN113111033A (zh) * | 2021-04-07 | 2021-07-13 | 山东英信计算机技术有限公司 | 一种分布式对象存储系统中桶索引动态重分的方法和系统 |
CN114546669B (zh) * | 2022-02-25 | 2024-06-25 | 苏州浪潮智能科技有限公司 | 一种基于桶分片的数据同步处理方法、系统及终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102945275A (zh) * | 2012-11-08 | 2013-02-27 | 华为技术有限公司 | 文件碎片整理方法、装置及设备 |
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
US8560577B1 (en) * | 2010-07-12 | 2013-10-15 | Vmware, Inc. | Method for coordinating stats collection and analysis among multiple hosts |
CN103457963A (zh) * | 2012-05-28 | 2013-12-18 | 联想(北京)有限公司 | 存储文件的方法及分布式存储系统 |
WO2017114176A1 (zh) * | 2015-12-30 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种分布式环境协调消费队列方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162506A1 (en) * | 2006-01-12 | 2007-07-12 | International Business Machines Corporation | Method and system for performing a redistribute transparently in a multi-node system |
US8447989B2 (en) * | 2008-10-02 | 2013-05-21 | Ricoh Co., Ltd. | Method and apparatus for tamper proof camera logs |
US10795868B2 (en) * | 2013-11-22 | 2020-10-06 | Teradata Us, Inc. | Summarizing statistical data for database systems and/or environments |
US9639571B2 (en) * | 2013-12-30 | 2017-05-02 | VoltDB, Inc. | Methods and systems for increasing capacity and performing data rebalancing without downtime to a distributed shared-nothing database with serializable isolation |
US10042910B2 (en) * | 2014-02-24 | 2018-08-07 | Sap Se | Database table re-partitioning using two active partition specifications |
CN104239417B (zh) * | 2014-08-19 | 2017-06-09 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库数据分片后动态调整方法及装置 |
US20160171071A1 (en) * | 2014-12-11 | 2016-06-16 | International Business Machines Corporation | Dynamic creation and configuration of partitioned index through analytics based on existing data population |
US9836480B2 (en) * | 2015-01-12 | 2017-12-05 | Qumulo, Inc. | Filesystem capacity and performance metrics and visualizations |
CN107368260A (zh) * | 2017-06-30 | 2017-11-21 | 北京奇虎科技有限公司 | 基于分布式系统的存储空间整理方法、装置及系统 |
-
2019
- 2019-05-08 CN CN201910379263.0A patent/CN111913909B/zh active Active
- 2019-06-06 WO PCT/CN2019/090319 patent/WO2020224023A1/zh unknown
- 2019-06-06 EP EP19828544.7A patent/EP3754515A4/en not_active Withdrawn
-
2020
- 2020-03-30 US US16/835,034 patent/US11314701B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8392482B1 (en) * | 2008-03-31 | 2013-03-05 | Amazon Technologies, Inc. | Versioning of database partition maps |
US8560577B1 (en) * | 2010-07-12 | 2013-10-15 | Vmware, Inc. | Method for coordinating stats collection and analysis among multiple hosts |
CN103457963A (zh) * | 2012-05-28 | 2013-12-18 | 联想(北京)有限公司 | 存储文件的方法及分布式存储系统 |
CN102945275A (zh) * | 2012-11-08 | 2013-02-27 | 华为技术有限公司 | 文件碎片整理方法、装置及设备 |
WO2017114176A1 (zh) * | 2015-12-30 | 2017-07-06 | 阿里巴巴集团控股有限公司 | 一种分布式环境协调消费队列方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20200356537A1 (en) | 2020-11-12 |
US11314701B2 (en) | 2022-04-26 |
EP3754515A1 (en) | 2020-12-23 |
WO2020224023A1 (zh) | 2020-11-12 |
CN111913909A (zh) | 2020-11-10 |
EP3754515A4 (en) | 2020-12-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111913909B (zh) | 一种分布式存储系统中的重新分片方法及系统 | |
CN111913925B (zh) | 一种分布式存储系统中的数据处理方法及系统 | |
US11934356B2 (en) | Synchronization of metadata in a distributed storage system | |
US8886610B2 (en) | Backup simulation for backing up filesystems to a storage device | |
CN102110121B (zh) | 一种数据处理方法及其系统 | |
CN102141963B (zh) | 一种数据分析方法和设备 | |
CN107229420B (zh) | 数据存储方法、读取方法、删除方法和数据操作系统 | |
US11436194B1 (en) | Storage system for file system objects | |
CN104301360A (zh) | 一种日志数据记录的方法、日志服务器及系统 | |
CN107103068A (zh) | 业务缓存的更新方法及装置 | |
CN113204598B (zh) | 一种数据同步方法、系统及存储介质 | |
US20170031959A1 (en) | Scheduling database compaction in ip drives | |
CN112579550B (zh) | 一种分布式文件系统的元数据信息同步方法及系统 | |
KR20190063835A (ko) | 인-메모리 데이터베이스의 실시간 데이터 변경 처리 시스템 | |
CN105608126A (zh) | 一种建立海量数据库二级索引的方法和装置 | |
CN111930556A (zh) | 一种分布式存储数据的备份方法及其装置 | |
CN112612576A (zh) | 虚拟机备份方法、装置、电子设备及存储介质 | |
CN104317963A (zh) | 一种数据处理方法及装置 | |
US11079960B2 (en) | Object storage system with priority meta object replication | |
US20220083262A1 (en) | Efficiency sets for determination of unique data | |
US11526275B2 (en) | Creation and use of an efficiency set to estimate an amount of data stored in a data set of a storage system having one or more characteristics | |
CN108959614A (zh) | 一种快照管理方法、系统、装置、设备及可读存储介质 | |
CN102495838B (zh) | 数据处理方法及装置 | |
US11941297B2 (en) | Garbage collection and bin synchronization for distributed storage architecture | |
US11934656B2 (en) | Garbage collection and bin synchronization for distributed storage architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |