掌桥专利:专业的专利平台
掌桥专利
首页

数据处理系统、数据处理方法以及装置

文献发布时间:2023-06-19 12:19:35


数据处理系统、数据处理方法以及装置

技术领域

本说明书实施例涉及计算机技术领域,特别涉及一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,以及一种计算机可读存储介质。

背景技术

目前在大规模分布式存储系统中,通常会有数百块用于集群存储的磁盘,这些磁盘通过分布式存储系统的策略构建存储数据的存储池,但是现有的磁盘在损坏或者宕机的情况下,磁盘中的数据也会丢失不可用,导致数据的安全性和可靠性较差。

发明内容

有鉴于此,本说明书施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种数据处理系统,包括:

磁盘集合、包括磁盘槽位的至少两个磁盘数据扩展装置、至少两个磁盘数据读取装置以及磁盘组,其中,

每个磁盘数据扩展装置,被配置为从所述磁盘集合中获取磁盘,并将每个磁盘放置在每个磁盘数据扩展装置的磁盘槽位中;

每个磁盘数据读取装置,被配置为分别与所述至少两个磁盘数据扩展装置连接,访问每个磁盘数据扩展装置的磁盘槽位中的磁盘;

所述磁盘组,被配置为从每个磁盘数据扩展装置中获取预设数量的磁盘形成磁盘组,且存储通过纠删技术写入的数据。

根据本说明书实施例的第二方面,提供了一种数据处理方法,包括:

基于预设需求构建初始数据读写对象,并为所述初始数据读写对象设置对象标识;

基于预设选取规则从磁盘组中选取预设数量的磁盘,建立所述磁盘和所述初始数据读写对象的关联关系;

将所述磁盘的元数据和所述初始数据读写对象的对象标识,作为所述初始数据读写对象的元数据;

将所述初始数据读写对象的元数据,存储一致性检查点和日志文件的所述磁盘的前n个存储单元,实现目标数据读写对象的构建,且n为正整数。

根据本说明书实施例的第三方面,提供了一种数据处理装置,包括:

对象构建模块,被配置为基于预设需求构建初始数据读写对象,并为所述初始数据读写对象设置对象标识;

关系建立模块,被配置为基于预设选取规则从磁盘组中选取预设数量的磁盘,建立所述磁盘和所述初始数据读写对象的关联关系;

元数据确定模块,被配置为将所述磁盘的元数据和所述初始数据读写对象的对象标识,作为所述初始数据读写对象的元数据;

元数据存储模块,被配置为将所述初始数据读写对象的元数据,存储一致性检查点和日志文件的所述磁盘的前n个存储单元,实现目标数据读写对象的构建,且n为正整数。

根据本说明书实施例的第四方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。

根据本说明书实施例的第五方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。

本说明书一个实施例实现了一种数据处理系统,包括磁盘集合、包括磁盘槽位的至少两个磁盘数据扩展装置、至少两个磁盘数据读取装置以及磁盘组,其中,每个磁盘数据扩展装置,被配置为从所述磁盘集合中获取磁盘,并将每个磁盘放置在每个磁盘数据扩展装置的磁盘槽位中;每个磁盘数据读取装置,被配置为分别与所述至少两个磁盘数据扩展装置连接,访问每个磁盘数据扩展装置的磁盘槽位中的磁盘;所述磁盘组,被配置为从每个磁盘数据扩展装置中获取预设数量的磁盘形成磁盘组,且存储通过纠删技术写入的数据。具体的,所述数据处理系统通过至少两个磁盘数据扩展装置与至少两个磁盘数据读取装置进行连接,使得磁盘数据扩展装置在每个磁盘数据读取装置下均可被访问,确保某个磁盘数据扩展装置宕机的情况下,其他磁盘数据扩展装置中的数据仍然可被访问,并且数据通过纠删技术写入磁盘数据扩展装置的磁盘槽位的磁盘中,对数据提供数据保护,以保证数据的安全性和可靠性。

附图说明

图1是本说明书一个实施例提供的一种数据处理系统的结构示意图;

图2是本说明书一个实施例提供的一种数据处理方法的流程图;

图3是本说明书一个实施例提供的一种数据处理中Chunk的结构示意图;

图4是本说明书一个实施例提供的一种数据处理装置的结构示意图;

图5是本说明书一个实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

SNM HDD磁盘组:多个SMRHDD介质的磁盘组合起来,形成一个磁盘组。

JBOD:Just a Bunch Of Disks,磁盘扩展柜。

Chunk:文件系统提供的读写对象。

EC:Erasure Coding,纠删码,用于数据保护。它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据。

在本说明书中,提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理系统,一种数据处理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

参见图1,图1示出了根据本说明书一个实施例提供的一种数据处理系统的结构示意图。

由图1所示,数据处理系统,包括:磁盘集合、包括磁盘槽位的至少两个磁盘数据扩展装置、至少两个磁盘数据读取装置以及磁盘组,其中,

每个磁盘数据扩展装置,被配置为从所述磁盘集合中获取磁盘,并将每个磁盘放置在每个磁盘数据扩展装置的磁盘槽位中;

每个磁盘数据读取装置,被配置为分别与所述至少两个磁盘数据扩展装置连接,访问每个磁盘数据扩展装置的磁盘槽位中的磁盘;

所述磁盘组,被配置为从每个磁盘数据扩展装置中获取预设数量的磁盘形成磁盘组,且存储通过纠删技术写入的数据。

可选地,所述数据处理系统,还包括:两个磁盘机架,每个磁盘机架,被配置为与所述至少两个磁盘数据读取装置中的每个磁盘数据读取装置连接。

其中,磁盘数据扩展装置可以理解为JBOD,磁盘数据读取装置可以理解为机头。

参见图1,具体实施时,所述数据处理系统包括两个机架:Rack0和Rcak1,其中,Rack0对应两个机头(即个磁盘数据读取装置),Rack1对应两个机头;Rack0对应两个机头分别对应一个数据读写服务Server0和Server1;Rack1对应两个机头分别对应一个数据读写服务Server0和Server1。

Rack0对应的两个机头,每个机头分别与相同的8个JBOD连接(即Server0和Server1分别处理上述8个JOBD的数据读写);Rack1对应两个机头,每个机头也分别与相同的8个JBOD连接。此外,每个JBOD上有108个磁盘槽位,每个磁盘槽位可以独立控制供电,且每个磁盘槽位中放置一个磁盘集合中SMR磁盘。

然后再基于两个机架上的两套双机头硬件+JBOD逻辑组织在一起,实现磁盘组的划分,即从每个JBOD里面选择少量(例如三个)的SMR磁盘形成磁盘组。

可选地,所述磁盘集合包括多个磁盘,每个磁盘,被配置为按照预设要求划分为预设数量的存储单元,其中,每个磁盘的前n个存储单元用于存储对应的磁盘元数据、一致性检查点以及日志文件,n为正整数。

实际应用中,磁盘集合中包括多个SMR HDD介质磁盘,每个磁盘可以按照预设要求划分为预设数量的存储单元(Zone),其中,预设要求可以根据实际需求进行设置,本申请对此不做任何限定。

具体的,每个磁盘的前n个Zone用于存储对应的磁盘元数据(Meta),其中,n可以根据实际需求进行设置,例如设置为4,那么每个磁盘的前4个Zone用于存储对应的磁盘元数据(Meta)、一致性检查点(Checkpoint)以及日志文件(Log)。实际应用中,每个磁盘的前4个Zone里面的前2个Zone交替使用,用于存储Meta、Checkpoint以及Log,前4个Zone里面的后两个Zone用于备份前2个Zone里面的元数据,例如在磁盘执行格式化操作的时候,可以将前2个Zone里面的元数据备份到后两个Zone,避免格式化操作时,磁盘元数据的丢失。

可选地,所述磁盘组中的所有磁盘同时上电或下电,且同一时间仅一个所述磁盘组上电。

具体的,在形成磁盘组后,一个磁盘组内的磁盘总是同时上电或下电,且同一时间仅一个磁盘组上电,避免所有的磁盘组同时上电,上电功率大,增加上电成本。

本说明书提供的所述数据处理系统通过SMR HDD介质磁盘,基于该磁盘的叠瓦技术能够提供更大的存储空间,实际应用中,每个磁盘被划分一定数量的Zone,Zone只能顺序的从头写到尾,不能覆盖写,避免数据丢失;并且SMR HDD介质磁盘接在高密的JBOD上,每个JBOD上有108个磁盘槽位,每个磁盘槽位可以独立控制供电,通过双机头+JBOD的连接方式,使得每个JBOD下的每个磁盘在两个机头下均可以访问,确保单机宕机时数据可访问,而采用双机头+JBOD的方式,这些设备都位于同一个机架上。

此外,具体实施时,采用两个机架上的两套双机头硬件+JBOD逻辑上组织到一起,再分为多个磁盘组,每个磁盘组包括预设数量的从每个JBOD上选取的磁盘,一个磁盘组内的磁盘总是同时上电下电,且磁盘中存储的数据采用单机EC提供数据保护,当数据分布满足2个JBOD故障或者是预设数量块磁盘出现故障时,数据仍可被还原读写。

本说明书实施例提供的所述数据处理系统,通过至少两个磁盘数据扩展装置与至少两个磁盘数据读取装置进行连接,使得磁盘数据扩展装置在每个磁盘数据读取装置下均可被访问,确保某个磁盘数据扩展装置宕机的情况下,其他磁盘数据扩展装置中的数据仍然可被访问,并且数据通过纠删技术写入磁盘数据扩展装置的磁盘槽位的磁盘中,对数据提供数据保护,以保证数据的安全性和可靠性。

参见图2,图2示出了根据本说明书一个实施例提供的一种数据处理方法的流程示意图。

步骤202:基于预设需求构建初始数据读写对象,并为所述初始数据读写对象设置对象标识。

Chunk是在内存中的。Chunk的核心是一个唯一标识符ChunkId,X+Y个Replica(每个Replica对应磁盘上的一个Zone),以及一些状态。

Chunk创建有两种场景:一种是新创建,另一种是重组(即如下的磁盘组加载);

新创建时,所有状态都是初始化状态,Replica也都是没有数据的,因此直接在内存中创建出来一个初始化的Chunk,每个Chunk对应X+Y(例如20、24或者26等)块磁盘,例如从每个JBOD里选择3块磁盘,两个机架对应的16个JBOD选择48块磁盘组成磁盘组;使用时,从48个磁盘中挑选X+Y块磁盘,每个JBOD不超过2块磁盘;按照X+Y的EC写入数据,因此当任意两台JBOD离线,或者任意4个磁盘损坏时,数据依然可用。且每块磁盘选择一个Zone,每个Zone中保存一个Replica。Chunk创建完毕后,会把X+Y个Replica的信息写入到X+Y块盘的Zone和Meta Zone上,这时候创建就完毕了,等待用户写入数据即可。

磁盘组加载时,Chunk重组,总是先在某一块磁盘上看到Replica,这个Replica上有Chunk Id,以及这个Replica的数据长度、状态。这时候Chunk还不存在,因此可以基于Chunk Id创建一个Chunk,并把Replica加入到Chunk中,后续还会有其他X+Y-1块磁盘有这个ChunkId标识的Replica,只要扫描时遇到,则加入到这个Chunk中,因此磁盘组的全部磁盘扫描完毕时,X+Y个Replica就都在这个Chunk中,完成Chunk的重组。

其中,预设需求可以根据实际需求进行设置,对此不做任何限定,例如预设需求为需要构建20个Chunk(即数据读写对象)或者需要构建100个Chunk等。

实际应用中,所述数据处理方法的执行主体为内存,首先在内存中,基于预设需求构建初始Chunk,并且为构建的每个初始Chunk设置一个唯一的Chunk Id(即对象标识)。

步骤204:基于预设选取规则从磁盘组中选取预设数量的磁盘,建立所述磁盘和所述初始数据读写对象的关联关系。

其中,预设选取规则包括但不限于从磁盘组中选择预设数量的有效磁盘,且确定磁盘组中磁盘对应的JBOD,每个JBOD里面最多只能选择2或3个磁盘。而预设数量可以根据实际应用进行设置,例如设置为X+Y(例如20、24或者26等等)个等。

以预设数量为X+Y个为例,基于预设选取规则从磁盘组中选取预设数量的磁盘,建立所述磁盘和所述数据读写对象的关联关系,则可以理解为:基于预设选取规则从磁盘组中选取X+Y个有效磁盘,建立这X+Y个磁盘和初始Chunk的关联关系。即当数据读取或者写入的时候通过关联Chunk可以访问到对应的磁盘。

步骤206:将所述磁盘的元数据和所述初始数据读写对象的对象标识,作为所述初始数据读写对象的元数据。

具体的,将所有磁盘的元数据合并和初始Chunk的Chunk Id作为初始Chunk的元数据。

步骤208:将所述初始数据读写对象的元数据,存储一致性检查点和日志文件的所述磁盘的前n个存储单元,实现目标数据读写对象的构建,且n为正整数。

具体的,在确定了初始Chunk的元数据之后,将初始Chunk的元数据、Checkpoint与Log存储至每个磁盘的前n个存储单元,实现目标数据读写对象的构建,且n为正整数,其中,此处的磁盘即可以理解为基于预设选取规则从磁盘组中选取的磁盘。

本说明书实施例中,在内存中,磁盘组在初次加载时,可以基于预设需求构建初始的Chunk,然后基于初始的Chunk从磁盘组中选取与该初始Chunk对应的磁盘,然后将磁盘元数据和Chunk Id作为Chunk的元数据,最终实现Chunk的构建,在后续加载磁盘组时可以根据Chunk与磁盘的关联关系,实现对磁盘组的安全加载。

本说明书另一实施例中,所述方法,还包括:

接收针对所述磁盘组的加载请求,基于所述加载请求获取所述磁盘组中每个磁盘的元数据;

基于所述磁盘的元数据确定所述磁盘对应的数据读写对象;

判断所述数据读写对象对应的磁盘的数量是否满足预设数量阈值,

若是,则实现对所述磁盘组加载,

若否,则在所述数据读写对象对应的磁盘的数量是否小于第一预设阈值的情况下,生成第一等级的数据读写对象重建任务,或者

在所述数据读写对象对应的磁盘的数量是否小于第二预设阈值的情况下,生成第二等级的数据读写对象重建任务。

其中,预设数量阈值、第一预设阈值均可以根据实际需要进行设置,本说明书对此不做任何限定。

具体的,内存在接收针对磁盘组的加载请求后,基于该加载请求并行从磁盘组的每个磁盘上读取元数据,其中,该元数据为包括Chunk Id的元数据;基于该元数据中的Chunk Id确定该磁盘对应的内存的Chunk,通过此种方式遍历磁盘组中的每个磁盘,确定每个Chunk对应的磁盘;判断每个Chunk对应的磁盘的数量是否满足预设数量阈值,例如24,若是,则完成对磁盘组的加载,若否,则在Chunk对应的磁盘的数量小于第一预设阈值(例如:第一预设阈值为4)的情况下,生成第一等级的Chunk重建任务,而在Chunk对应的磁盘的数量大于等于第一预设阈值(例如:第一预设阈值为4)的情况下,生成第二等级的Chunk重建任务;其中,第一等级小于第二等级,即当存在第一等级的Chunk重建任务和第二等级的Chunk重建任务时,先处理第二等级的Chunk重建任务。

本说明书实施例中,内存加载磁盘组时,可以基于内存中Chunk与磁盘组中磁盘的关联关系,根据磁盘组中每个磁盘中保存的元数据的Chunk Id,确定每个Chunk对应的磁盘组中的磁盘,而在Chunk原始对应的磁盘缺失的情况下,生成后台Chunk重建任务,以避免系统异常。

具体的,所述基于所述加载请求获取所述磁盘组中每个磁盘的元数据,包括:

基于所述加载请求从所述磁盘组的每个磁盘的前n个存储单元的第一存储单元中获取目标一致性检查点,以及与所述目标一致性检查点对应的日志文件;

获取所述日志文件中的历史操作记录,基于所述历史操作记录获取所述磁盘组中每个磁盘的元数据。

其中,n的具体解释可以参见上述实施例,在此不再赘述。

内存加载磁盘组时,基于加载请求从磁盘组的每个磁盘的前n个存储单元的第一存储单元(Zone1或Zone2)中获取目标一致性检查点,以及与该目标一致性检查点对应的日志文件,其中,该目标一致性检查点可以理解为最新的一致性检查点。

然后获取Log中的历史操作记录,基于历史操作记录获取磁盘组中每个磁盘的元数据。

例如,Log中的历史操作记录显示上次磁盘组加载后,创建了10个Chunk,那么当再次加载该磁盘组时,获取新的一致性检查点之后,从Log中获取这10条创建Chunk的记录,再重新执行一遍,重新创建出这10个Chunk。

本说明书实施例中,磁盘组每次加载时,均会从磁盘组的每个磁盘的Zone1或Zone2中找到最新的Checkpoint加载,之后Replay Log,而在Replay Log时,首先获取磁盘组中每个磁盘的元数据,后续基于元数据可以准确的实现Chunk的重建,进而实现磁盘组的加载。

可选地,所述实现对所述磁盘组加载之后,还包括:

确定所述磁盘组的每个磁盘的前n个存储单元的第二存储单元;

将所述第一存储单元中存储的一致性检查点全部写入所述第二存储单元,并删除所述第一存储单元中的日志文件。

其中,第二存储单元为不存在最新的一致性检查点的Zone1或Zone2,然后将存在最新的一致性检查点的Zone1或Zone2中存储的一致性检查点全部写入第二存储单元,并删除第一存储单元中的Log,避免空间占用。

即当磁盘组每次加载时,从Zone1或Zone2中找到新的Checkpoint加载,之后获取与新的Checkpoint对应的之后Log,然后Replay Log实现磁盘组的加载,磁盘组加载完毕确认可写之后,将内存中完整的磁盘组元数据作为新的Checkpoint点,并把元数据的版本号加1,写入到另一个Zone,在该磁盘组工作期间,一些操作的Log写入到另一个Zone的Checkpoint后面,磁盘组下次加载时,通过版本号确认最新的Checkpoint和Log,通过上述的操作再次切换至上一个Zone。

具体的,所述方法,还包括:

接收数据写入请求,其中,所述数据写入请求中携带有待写入数据以及对象标识;

基于所述对象标识确定与所述对象标识对应的数据读写对象的元数据;

基于所述数据读写对象的元数据确定与所述数据读写对象对应的磁盘组中的磁盘;

在所述待写入数据满足预设写入条件的情况下,将所述待写入数据写入,与所述数据读写对象对应的磁盘组中的磁盘。

具体的,接收数据写入请求,基于所述数据写入请求中携带的Chunk Id确定与该Chunk Id对应的Chunk的元数据;然后基于该Chunk的元数据可以确定与该Chunk对应的磁盘组中的磁盘;在待写入数据满足预设写入条件的情况下,将待写入数据写入至与Chunk对应的磁盘组中的磁盘中;其中,预设写入条件包括但不限于待写入数据的长度满足预设要求,例如满足1MB。

本说明书实施例中,需要向磁盘写入数据的情况下,数据到达后,暂存在内存里,数据和Footer能凑满一个存储单元时落盘,而最后的一个数据可能不满一个条带,此时当最后一个数据到达后,需要调用Flush强制落盘,实现数据的磁盘存储。即实际应用中,前面的数据,当数据达到后,暂存在内存里,满20MB就可以落盘,而最后一个数据可能不满一个条带,需要强制刷盘。因此最后数据的布局是:20MB,20MB,20MB,…,20MB,xMB。

可选地,所述基于所述对象标识确定与所述对象标识对应的数据读写对象之后,还包括:

在所述待写入数据不满足预设写入条件,且所述待写入数据已经全部接收的情况下,将所述待写入数据以及预设填充对象写入,与所述数据读写对象对应的磁盘组中的磁盘。

具体的,当待写入数据不满足预设写入条件,且待写入数据已经全部接收,即数据全部到达之后,调用Flush强制落盘,不满一个存储单元部分增加填充数据,实现数据的磁盘存储。并且在数据写入后更新数据长度到Chunk元数据,此外,数据不允许覆盖写,写入范围有覆盖的情况下,则返回IO Error(写入错误)。

本说明书另一实施例中,所述方法,还包括:

接收数据读取请求,其中,所述数据读取请求中携带有待读取数据的数据标识以及对象标识;

基于所述对象标识确定与所述对象标识对应的数据读写对象的元数据;

基于所述数据读写对象的元数据确定与所述数据读写对象对应的磁盘组中的磁盘;

基于所述数据标识从与所述数据读写对象对应的磁盘组中的磁盘中,读取所述数据标识对应的待读取数据。

具体的,磁盘组加载完毕后,内存对外提供Chunk,在接收到携带有Chunk Id的数据读取请求之后,基于该Chunk Id确定对应的Chunk元数据,然后基于Chunk元数据确定与该Chunk对应的磁盘组中的磁盘,最后基于该数据标识可以准确的,从该磁盘中读取与该数据标识对应的待读取数据。

具体实施时,所述方法,还包括:

接收所述数据读写对象的删除请求,其中,所述删除请求中携带有所述数据读写对象的对象标识;

基于所述对象标识确定与所述对象标识对应的数据读写对象的元数据;

删除所述数据读写对象,并将删除操作写入所述日志文件,且将所述数据读写对象的元数据移动至所述磁盘的删除数据读写对象列表。

具体的,在接收数据读写对象的删除请求后,基于删除请求中携带的Chunk Id,基于该Chunk Id确定对应的Chunk元数据,然后删除该Chunk,把Chunk元数据移动至删除Chunk列表中,后续在预设时间段内,还可以从删除Chunk列表中实现对Chunk的召回。

可选地,所述将所述数据读写对象的元数据移动至所述磁盘的删除数据读写对象列表之后,还包括:

接收所述数据读写对象的恢复请求,其中,所述删除请求中携带有所述数据读写对象的对象标识;

基于所述数据读写对象的对象标识,从所述磁盘的删除数据读写对象列表中确定所述数据读写对象的元数据;

将所述数据读写对象的元数据写入误删除日志文件,基于所述误删除日志实现对所述数据读写对象的恢复。

实际应用中,在删除Chunk之后,还可以实现对删除Chunk的恢复,具体的,在接收到针对Chunk的恢复请求后,基于该恢复请求中携带的Chunk Id从删除Chunk列表(即Deleted Chunk列表)中找到该Chunk的元数据,找到后写入Undelete Log,实现把Chunk恢复。

具体实施时,在将Chunk的元数据移动至Deleted Chunk列表,在超过一定天数之后,实际从Deleted Chunk列表删除Chunk元数据,而在此之前,可以对Chunk进行恢复,以提升用户体验,具体实现方式如下所述:

所述将所述数据读写对象的元数据移动至所述磁盘的删除数据读写对象列表之后,还包括:

在所述数据读写对象的元数据,在所述磁盘的删除数据读写对象列表的时间超过预设时间之后,删除所述数据读写对象的元数据。

其中,预设时间可以根据实际需求进行设置,本说明书对此不做任何限定。

可选地,所述实现对所述磁盘组加载之后,还包括:

执行预设扫描任务,基于预设时间间隔对所述磁盘组中的有效磁盘进行扫描并验证数据一致性。

其中,预设扫描任务可以理解为Scrub任务,预设时间间隔可以根据实际需要进行设置,本说明书对此不做任何限定,例如设置为6个月、8个月或者9个月等等。

具体的,为了防止静默错误(即应用程序或数据中心人员不知情的情况下发生的错误)导致的数据丢失,磁盘组后台会每隔一段时间执行一次Scrub任务(即数据一致性检查任务),以保证数据的完整性和安全性。

本说明书实施例提供的所述数据处理方法基于磁盘组上构建Chunk,通过唯一的Chunk Id进行索引,所有对Chunk的操作,通过Log方式持久化,且基于磁盘组周期调度机制,在磁盘组调度时生成Checkpoint,之后可以回收Log占用的空间;且一组Zone值保存一个Chunk,因此Chunk总量有限,Chunk元数据全部常驻内存;存储单元数据都是自描述的,元数据区域不可读时,通过全盘扫描可以重建元数据。

参见图3,图3示出了本说明书一个实施例提供的一种数据处理方法中Chunk的结构示意图。

基于磁盘组上构建Chunk,通过唯一的Chunk Id进行索引,其中,每个Chunk由X+Y个Replica组成,采用X+Y EC编码保存数据,而X为X份数据,Y为Y份校验数据。

Chunk中的Replica存储在磁盘组的磁盘的Zone中,每个Zone保存一个Replica,有空闲、使用、删除三种状态,其中,Zone是SMR HDD的最小分配单元,即上述Zone的存储单元。并且每个磁盘的Zone1~4保存文件系统的元数据,Zone1~2交替使用,写入Checkpoint与Log,Zone3~4作为元数据备份,在磁盘执行格式化等操作时,把Meta备份到Zone3~4。

此外,Chunk的Meta全部常驻内存;考虑每个Zone大小为256MB,一块SMR HDD有6万不到Zone,每个Zone保存一个Replica,一个Replica中的Meta为128字节,一块SMR HDDReplica Meta大约8MB;典型配置下,一个磁盘组内的磁盘数量不超过64,磁盘组的内存不超过500MB,常驻内存是可以达成的。

Chunk构建完成后,磁盘组每次加载时,从从Zone1~2找最新的Checkpoint加载,之后Replay Log,在磁盘组加载完毕确认可写后,切换另一个Meta Zone,并写入完整的Checkpoint;新的Checkpoint写入完毕后,之前的Log可以安全删除,节省存储空间占用。且磁盘组的修改操作通过写Log持久化,磁盘组相关的元数据写入到磁盘组内所有的磁盘上,Chunk相关的Meta写入到选中Replica的所有磁盘上,Replica Meta更新则只写到其对应的磁盘上;其中,Log都包含一个对齐长度的部分,描述Log长度、签名、CRC,以确保Log的完整性。并且Replica数据都是自描述的,每个Chunk都有一个4KB Header,Header中包括完整的Chunk Meta,这样Meta Zone损坏后,可以全盘扫描重建Chunk Meta。

而Replica按照1MB的粒度切分,称为Stride;Replica相同偏移处的Stride组成一个条带,称为Stripe;第一个Stripe包含Header、Data和Footer;后续每个Stripe包含Data和Footer;Chunk每次都是满条带写入;不满条带的增加填充数据;Footer中至少包含CRC与有效数据长度。

当磁盘组加载完成提供服务之前,若某个Chunk对应的Replicas存在缺失的情况下,内部生成不同优先级的重建任务,丢失Replicas越多的Chunk,重建优先级越高。

并且磁盘组后台有Scrub任务,对有效Replica进行周期扫描并验证数据一致性,防止静默错误导致的数据丢失。

具体实施时,Chunk可以删除,而Chunk删除后,写入Log标记删除,在磁盘空间不足,或删除超过一定天数后,实际删除数据;在实际删除之前,误删的数据可以基于DeletedChunk列表和Undelete Log恢复。

本说明书实施例中,所述数据处理方法采用多种手段提升数据可用性、可靠性,具体的,将磁盘组使用EC保存数据,少量磁盘数据可读可写,并且磁盘损坏后,可以根据损坏Replica数量,后台自动生成不同优先级的Chunk任务重建,提高数据可靠性;此外,写入的数据都是自描述的,Meta损坏后,全盘扫描重建Meta,提升数据可用性;还实现在磁盘组后台执行Scrub任务,防止磁盘静默错误累积导致的数据损坏。

与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图4示出了本说明书一个实施例提供的一种数据处理装置的结构示意图。如图4所示,该装置包括:

对象构建模块402,被配置为基于预设需求构建初始数据读写对象,并为所述初始数据读写对象设置对象标识;

关系建立模块404,被配置为基于预设选取规则从磁盘组中选取预设数量的磁盘,建立所述磁盘和所述初始数据读写对象的关联关系;

元数据确定模块406,被配置为将所述磁盘的元数据和所述初始数据读写对象的对象标识,作为所述初始数据读写对象的元数据;

元数据存储模块408,被配置为将所述初始数据读写对象的元数据,存储一致性检查点和日志文件的所述磁盘的前n个存储单元,实现目标数据读写对象的构建,且n为正整数。

可选的,所述装置,还包括:

加载模块,被配置为:

接收针对所述磁盘组的加载请求,基于所述加载请求获取所述磁盘组中每个磁盘的元数据;

基于所述磁盘的元数据确定所述磁盘对应的数据读写对象;

判断所述数据读写对象对应的磁盘的数量是否满足预设数量阈值,

若是,则实现对所述磁盘组加载,

若否,则在所述数据读写对象对应的磁盘的数量小于第一预设阈值的情况下,生成第一等级的数据读写对象重建任务,或者

在所述数据读写对象对应的磁盘的数量大于等于所述第一预设阈值的情况下,生成第二等级的数据读写对象重建任务。

可选的,所述加载模块,进一步被配置为:

基于所述加载请求从所述磁盘组的每个磁盘的前n个存储单元的第一存储单元中获取目标一致性检查点,以及与所述目标一致性检查点对应的日志文件;

获取所述日志文件中的历史操作记录,基于所述历史操作记录获取所述磁盘组中每个磁盘的元数据。

可选的,所述装置,还包括:

日志删除模块,被配置为:

确定所述磁盘组的每个磁盘的前n个存储单元的第二存储单元;

将所述第一存储单元中存储的一致性检查点全部写入所述第二存储单元,并删除所述第一存储单元中的日志文件。

可选的,所述装置,还包括:

数据写入模块,被配置为:

接收数据写入请求,其中,所述数据写入请求中携带有待写入数据以及对象标识;

基于所述对象标识确定与所述对象标识对应的数据读写对象的元数据;

基于所述数据读写对象的元数据确定与所述数据读写对象对应的磁盘组中的磁盘;

在所述待写入数据满足预设写入条件的情况下,将所述待写入数据写入,与所述数据读写对象对应的磁盘组中的磁盘。

可选的,所述装置,还包括:

数据填充模块,被配置为:

在所述待写入数据不满足预设写入条件,且所述待写入数据已经全部接收的情况下,将所述待写入数据以及预设填充对象写入,与所述数据读写对象对应的磁盘组中的磁盘。

可选的,所述装置,还包括:

数据读取模块,被配置为:

接收数据读取请求,其中,所述数据读取请求中携带有待读取数据的数据标识以及对象标识;

基于所述对象标识确定与所述对象标识对应的数据读写对象的元数据;

基于所述数据读写对象的元数据确定与所述数据读写对象对应的磁盘组中的磁盘;

基于所述数据标识从与所述数据读写对象对应的磁盘组中的磁盘中,读取所述数据标识对应的待读取数据。

可选的,所述装置,还包括:

数据删除模块,被配置为:

接收所述数据读写对象的删除请求,其中,所述删除请求中携带有所述数据读写对象的对象标识;

基于所述对象标识确定与所述对象标识对应的数据读写对象的元数据;

删除所述数据读写对象,并将删除操作写入所述日志文件,且将所述数据读写对象的元数据移动至所述磁盘的删除数据读写对象列表。

可选的,所述装置,还包括:

数据恢复模块,被配置为:

接收所述数据读写对象的恢复请求,其中,所述恢复请求中携带有所述数据读写对象的对象标识;

基于所述数据读写对象的对象标识,从所述磁盘的删除数据读写对象列表中确定所述数据读写对象的元数据;

将所述数据读写对象的元数据写入误删除日志文件,基于所述误删除日志实现对所述数据读写对象的恢复。

可选的,所述装置,还包括:

数据删除模块,被配置为:

在所述数据读写对象的元数据,在所述磁盘的删除数据读写对象列表的时间超过预设时间之后,删除所述数据读写对象的元数据。

可选的,所述装置,还包括:

数据扫描模块,被配置为:

执行预设扫描任务,基于预设时间间隔对所述磁盘组中的有效磁盘进行扫描并验证数据一致性。

本说明书实施例提供的所述数据处理装置基于磁盘组上构建Chunk,通过唯一的Chunk Id进行索引,所有对Chunk的操作,通过Log方式持久化,且基于磁盘组周期调度机制,在磁盘组调度时生成Checkpoint,之后可以回收Log占用的空间;且一组Zone值保存一个Chunk,因此Chunk总量有限,Chunk元数据全部常驻内存;存储单元数据都是自描述的,元数据区域不可读时,通过全盘扫描可以重建元数据。

上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。

计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。

其中,处理器520用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现所述数据处理方法的步骤。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述数据处理方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 数据处理系统、基于数据处理系统的业务数据处理方法
  • 数据处理装置、数据处理方法、数据处理程序、终端装置和数据处理系统
技术分类

06120113256302