CN112948171A - 数据处理方法、装置、终端设备及计算机可读存储介质 - Google Patents

数据处理方法、装置、终端设备及计算机可读存储介质 Download PDF

Info

Publication number
CN112948171A
CN112948171A CN202011167995.2A CN202011167995A CN112948171A CN 112948171 A CN112948171 A CN 112948171A CN 202011167995 A CN202011167995 A CN 202011167995A CN 112948171 A CN112948171 A CN 112948171A
Authority
CN
China
Prior art keywords
data
check
backed
data block
coding
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.)
Pending
Application number
CN202011167995.2A
Other languages
English (en)
Inventor
孙黎
高华江
王浩
黄立波
王昱晨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to PCT/CN2020/128785 priority Critical patent/WO2021115021A1/zh
Publication of CN112948171A publication Critical patent/CN112948171A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请适用于数据处理技术领域,提供了一种数据处理方法、装置、终端设备及计算机可读存储介质,所述方法包括:获取待分类数据的信息,该信息包括待分类数据在预设时间段内的所有访问热度值和各个访问热度值对应的第一时间信息;根据第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值;根据各个访问热度值对应的第一衰减值计算第一热度值;根据第一热度值确定该待分类数据的热度类别。本申请可以解决当前的数据分类方案准确性低,容易造成缓存污染的问题。

Description

数据处理方法、装置、终端设备及计算机可读存储介质
本申请要求于2019年12月11日提交国家知识产权局、申请号为201911268590.5、申请名称为“存储数据的方法和恢复数据的方法”的中国专利申请的优先权、2019年12月31日提交国家知识产权局、申请号为201911425935.3、申请名称为“一种数据分类方法、装置及终端设备”的中国专利申请的优先权以及2020年07月29日提交国家知识产权局、申请号为202010741937.X、申请名称为“基于纠删码的数据存储方法、终端设备、装置和系统”的中国专利申请的优先权,上述中国专利申请的全部内容通过引用结合在本申请中。
技术领域
本申请属于数据处理技术领域,尤其涉及一种数据处理方法、装置、终端设备及计算机可读存储介质。
背景技术
随着科技的发展,手机、平板电脑、车载设备等智能终端设备走进了人们的生活和工作中,这些智能终端设备可以为用户提供数据存储和访问服务。
然而,数据量的爆炸式增长对终端设备造成极大地存储压力,并且影响数据访问效率。对此,人们提出根据数据的使用情况确定数据的热度类别(例如热数据和冷数据),然后根据数据的热度类别采取相应的管理策略的方案,以此节约终端设备的存储空间和提高数据的访问效率。
当前主要使用最近最少使用(Least Recently Used,LRU)算法和最近最不常用(Least Frequently Used,LFU)算法对数据进行管理。然而,上述方法均只是简单地根据数据访问次数或近期访问情况确定数据的热度类别,准确性低,容易造成缓存污染。
因此,如何提高数据分类的准确性成为了本领域技术人员亟需解决的技术问题。
发明内容
本申请实施例提供了一种数据处理方法、装置、终端设备及计算机可读存储介质,可以解决当前的数据分类方案准确性低,容易造成缓存污染的问题。
第一方面,本申请实施例提供了一种数据处理方法,应用于第一设备,包括:
获取待分类数据的信息,上述信息包括待分类数据在预设时间段内的所有访问热度值和各个访问热度值对应的第一时间信息;
根据第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值;
根据各个访问热度值对应的第一衰减值计算第一热度值;
根据第一热度值确定待分类数据的热度类别。
需要说明的是,当需要对待分类数据进行数据分类时,可以获取待分类数据的信息。上述信息可以包括待分类数据在预设时间段内的所有访问记录,访问记录中包括访问热度值以及第一时间信息。
预设时间段为用户预先设置的时间段,用户可以根据实际需求进行设置。例如,假设当前时间为2019年10月5日,用户想要计算最近五天内各个数据的第一热度值,则用户可以将预设时间段设置为2019年10月1日至2019年10月5日。
预设的第一时间衰减函数可以实际情况进行选择。例如,预设的第一时间衰减函数可以为指数函数、线性函数、反S型曲线函数、双曲线函数、对数函数等函数形式中的任意一种。
在计算第一热度值的过程中,第一热度值是根据访问热度值计算得到的,与用户的历史访问情况有关,可以避免偶发性的访问对缓存造成污染。并且,在计算第一热度值时,引入了第一时间衰减函数,根据第一时间信息和预设的第一时间衰减函数计算各个访问热度值的第一衰减值,根据第一衰减值计算第一热度值,减轻历史数据造成的缓存污染效应,从而提高计算得到的第一热度值的准确性,更准确地划分待分类数据的热度类别。
在第一方面的一种可能的实现方式中,上述根据第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值,包括:
根据第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一时间衰减系数;
将各个访问热度值的第一时间衰减系数和各个访问热度值对应相乘得到各个访问热度值对应的第一衰减值;
上述根据各个访问热度值对应的第一衰减值计算第一热度值,包括:
将各个访问热度值对应的第一衰减值求和,得到第一热度值。
需要说明的是,根据第一时间信息以及预设的第一时间衰减函数可以计算各个访问热度值的第一时间衰减系数,第一时间衰减系数表示访问热度值的衰减情况。
将各个访问热度值的第一时间衰减系数与各个访问热度值对应相乘可以得到各个访问热度值对应的第一衰减值,第一衰减值表示访问热度值的实际热度效用。
在第一方面的一种可能的实现方式中,上述信息还包括第二热度值和第二热度值对应的第二时间信息,第二热度值为预设的初始热度值或最近一次计算得到的第一热度值;
相应的,在获取待分类数据的信息之后,上述方法还包括:
根据第二时间信息以及预设的第二时间衰减函数计算第二热度值的第二衰减值,第二时间信息为预设时间段的起始时间;
相应的,上述根据各个访问热度值对应的第一衰减值计算第一热度值包括:
根据第二热度值的第二衰减值以及各个访问热度值对应的第一衰减值计算待分类数据的第一热度值;
将第二热度值更新为第一热度值。
需要说明的是,第二热度值为用户设置的初始热度值或最近一次计算得到的第一热度值。第二时间信息预设时间段的起始时间。例如,预设时间段为2019年10月1日至2019年10月5日,则第二时间信息为预设时间段的起始时间,即2019年10月1日。
根据访问热度值和第二热度值计算得到第一热度值后,将第二热度值更新为第一热度值,以便计算下一次的第一热度值。
预设的第二时间衰减函数可以与预设的第一时间衰减函数相同,或者,预设的第二时间衰减函数也可以与预设的第一时间衰减函数不相同。
预设的第二时间衰减函数可以实际情况进行选择。例如,预设的第二时间衰减函数可以为指数函数、线性函数、反S型曲线函数、双曲线函数、对数函数等函数中的任意一种。
在计算第一热度值的过程,结合访问热度值和第二热度值进行综合计算,可以使计算得到的第一热度值更合理,从而更准确地划分待分类数据的热度类型。
在第一方面的一种可能的实现方式中,上述根据第二时间信息以及预设的第二时间衰减函数计算第二热度值的第二衰减值,包括:
根据第二时间信息以及预设的第二时间衰减函数计算第二时间衰减系数;
将第二时间衰减系数和第二热度值相乘得到第二热度值的第二衰减值;
相应的,上述根据第二热度值的第二衰减值以及各个访问热度值对应的第一衰减值计算待分类数据的第一热度值,包括:
将第二热度值的第二衰减值以及各个访问热度值对应的第一衰减值求和,得到第一热度值。
需要说明的是,根据第二时间信息和预设的第二时间衰减函数可以计算第二时间衰减系数,第二时间系数表示第二热度值的衰减情况。
将第二时间衰减系数与第二热度值相乘,可以得到第二热度值的第二衰减值,第二衰减值表示第二热度值的实际热度效用。
计算得到第一衰减值和第二衰减值之后,对第一衰减值和第二衰减值进行求和,可以得到第一热度值。
在第一方面的一种可能的实现方式中,上述热度类别包括温数据和冷数据,上述方法还包括:
从热度类型为温数据的待分类数据中选取第一预设比例的温数据作为第一备份数据;
对第一备份数据与热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据;
将热度类别为冷数据的待分类数据发送至第一指定终端,将第一校验数据发送至第二指定终端,删除本地存储的热度类别为冷数据的待分类数据。
需要说明的是,在确定了温数据和冷数据之后,可以选取第一预设比例的温数据作为第一备份数据。第一预设比例可以根据实际情况进行设置。例如,待分类数据中包含60%的温数据,第一预设数据可以设置为20%,从待分类数据中选取20%的温数据作为第一备份数据(可以理解为选取当前60%的温数据中的1/3)。
选取了第一备份数据后,对第一备份数据和冷数据进行纠删码编码,得到第一校验数据。将冷数据发送至第一指定终端,将第一校验数据发送至第二指定终端,删除本地存储的冷数据。将温数据和冷数据进行混合编码,可以保证冷数据的完整性,并提高温数据和冷数据的容错性能。
在第一方面的一种可能的实现方式中,上述对第一备份数据与热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据,包括:
第一备份数据为与冷数据相同数据量的温数据,对第一备份数据与热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据;
或者,第一备份数据为与冷数据不同数据量的温数据,若第一备份数据的数据量比冷数据的数据量少,则将第一备份数据补零成与冷数据相同的数据量后,对补零后的第一备份数据和热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据。
需要说明的是,选取第一备份数据时,第一备份数据可以为与冷数据相同数据量的温数据,此时可以直接对第一备份数据和冷数据进行纠删码编码,得到第一校验数据。
或者,第一备份数据也可以为与冷数据不同数据量的温数据。此时,如果第一备份数据的数据量比冷数据的数据量少,则可以对第一备份数据进行补零操作,将第一备份数据补零成与冷数据相同数据量后,再对补零后的第一备份数据和热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据。
在第一方面的一种可能的实现方式中,上述方法还包括:
将热度类型为温数据的待分类数据中第一备份数据以外的温数据拆分成第二备份数据和第三备份数据;
对第二备份数据和第三备份数据进行纠删码编码,得到第二校验数据;
将第二校验数据发送至第三指定终端,并将第二备份数据的备份数据发送至第四指定终端。
需要说明的是,除了对第一备份数据和冷数据进行纠删码编码之外,还可以将温数据中除第一备份数据以外的温数据拆分成第二备份数据和第三备份数据。拆分第一备份数据以外的温数据时,可以将第一备份数据以外的温数据均分成第二备份数据和第三备份数据,此时第二备份数据的数据量和第三备份数据的数据量相同。或者,也可以第一备份数据以外的温数据不均分成第二备份数据和第三备份数据,此时,如果第二备份数据的数据量少于第三备份数据的数据量,可以将第二备份数据补零成与第三备份数据相同的数据量;如果第三备份数据的数据量少于第二备份数据的数据量,可以将第三备份数据补零成与第二备份数据相同的数据量。
对第二备份数据和第三备份数据进行纠删码编码,得到第二校验数据。从而提高温数据中第一备份数据以外的温数据的容错性能。将第二校验数据发送至第三指定终端,将第二备份数据的备份数据发送至第四指定终端,而第一备份数据、第二备份数据和第三备份数据可以均保留在本地存储,从而保证温数据的完整性。
在第一方面的一种可能的实现方式中,上述热度类别包括热数据,上述方法还包括:
将热度类别为热数据的待分类数据存储在本地的存储空间,并发送热数据的备份数据至数据备份终端进行备份。
需要说明的是,对热数据进行管理时,由于热数据为用户较为常用的数据,因此,可以将热数据备份的备份数据发送至数据备份终端进行备份,不仅可以提高热数据的容错性能,并且可以方便用户在数据备份终端上调用热数据。
在第一方面的一种可能的实现方式中,上述热度类别包括温数据,上述方法还包括:
从热度类别为温数据的待分类数据中选取第二预设比例的温数据作为第四备份数据;
对第四备份数据以及第四备份数据以外的温数据进行纠删码编码,得到第三校验数据;
将第三校验数据发送至第五指定终端,将第四备份数据发送至第六指定终端。
需要说明的是,对温数据进行管理时,除了可以将温数据和冷数据进行混合编码以外,还可以对温数据进行独立编码。
此时,可以从温数据中选取第二预设比例的温数据作为第四备份数据,对第四备份数据以及第四备份数据以外的温数据进行纠删码编码,得到第三校验数据,通过纠删码编码的方式提高温数据的容错性能。
第二预设比例可以根据实际情况进行设置。例如,待分类数据中包含60%的温数据,第二预设数据可以设置为20%,从待分类数据中选取20%的数据作为第四备份数据(可以理解为选取当前60%的温数据中的1/3)。
在第一方面的一种可能的实现方式中,上述热度类别包括冷数据,上述方法还包括:
将热度类别为冷数据的待分类数据拆分成第五备份数据和第六备份数据;
对第五备份数据和第六备份数据进行纠删码编码,得到第四校验数据;
将第五备份数据发送至第七指定终端,将第六备份数据发送至第八指定终端,将第四校验数据发送至第九指定终端,并删除本地存储的热度类别为冷数据的待分类数据。
需要说明的是,对冷数据进行管理时,除了可以将温数据和冷数据进行混合编码以外,还可以对冷数据进行独立编码。
此时,可以将冷数据拆分成第五备份数据和第六备份数据,对第五备份数据和第六备份数据进行纠删码编码,得到第四校验数据,通过纠删码编码的方式提高冷数据的容错性能。
在第一方面的一种可能的实现方式中,上述方法还包括:
确定纠删码条带的条带长度,条带长度小于或等于分布式存储系统中在线设备的数量;
获取各个待备份设备的待备份数据,待备份设备为存在待备份数据的在线设备,待备份设备包括上述第一设备,待备份数据包括待分类数据;
根据条带长度和待备份数据进行纠删码编码,得到目标校验数据;
将目标校验数据发送至校验节点进行存储。
需要说明的是,当终端设备将本设备的待备份数据和其他终端设备的待备份数据共同进行数据冗余备份时,终端设备可以作为编码节点,或者,也可以选取分布式存储系统中的其他终端设备作为编码节点。
当终端设备作为编码节点时,终端设备可以先确定纠删码条带的条带长度。
纠删码条带的条带长度应当小于或等于分布式存储系统中在线设备的数量,否则,待备份数据的数量将小于条带长度。
然后,终端设备可以获取各个待备份设备的待备份数据。待备份设备为存在待备份数据的在线设备。待备份数据为需要数据冗余备份的数据。
待备份数据可以包括预设热度类型的待分类数据,例如温数据和冷数据。和/或,待备份数据也可以包括其他需要备份的数据。
在确定了条带长度和待备份数据之后,终端设备可以进行纠删码编码,得到目标校验数据,并把目标校验数据发送至校验节点进行存储。
校验节点用于存储纠删码编码生成的校验数据。校验节点可以为分布式存储系统中的终端设备,或者,也可以为系统外的其他终端设备,例如云存储器。
在第一方面的一种可能的实现方式中,上述确定纠删码条带的条带长度,包括:
将在线设备的数量确定为纠删码条带的条带长度。
需要说明的是,由于只有在线的终端设备才能进行数据冗余备份,因此,终端设备可以将在线设备的数量确定为纠删码条带的条带长度,这样每个在线设备都可以作为一个独立的存储节点存储各自的数据,相当于每个在线设备存储纠删码条带的一部分。
在第一方面的一种可能的实现方式中,上述确定纠删码条带的条带长度,包括:
确定在线设备中待备份设备的数量;
将待备份设备的数量确定为纠删码条带的条带长度。
需要说明的是,由于在线设备中,可能只有部分终端设备(即待备份设备)有需要备份的数据,其他终端设备没有要备份的数据或者要备份的数据为0。
因此,终端设备也可以将待备份设备的数量确定为纠删码条带的条带长度,这样将待备份设备上的待备份数据组成条带,每个待备份设备存储纠删码条带的一部分,且每个待备份设备存储的待备份数据大于0。
在第一方面的一种可能的实现方式中,上述确定纠删码条带的条带长度,包括:
获取各个待备份数据的数据量;
根据预设合并规则对数据量小于第一阈值的待备份数据进行合并处理,得到数据量大于或等于第一阈值的待备份数据;
将合并处理后的待备份数据的数量确定为纠删码条带的条带长度。
需要说明的是,当待备份设备上的待备份数据量相差不大或者与纠删码条带深度相差不大时,可以将每个待备份设备作为一个独立的存储节点存储待备份数据,且每个待备份设备对应的待备份数据作为独立的存储节点数据参与纠删码编码。当待备份设备上的待备份数据量相差较大或与纠删码条带深度相差较大时,可以将多个待备份设备上的待备份数据合并为一个存储节点数据参与纠删码编码,可以节省编码节点的计算资源。
此时,可以预设合并规则将数据量小于第一阈值的待备份数据进行合并处理,得到数据量大于或等于第一阈值的待备份数据。
预设合并规则可以根据实际情况进行确定。例如,预设合并规则可以是数据量小于第一阈值的待备份数据相互之间进行合并;或者,预设合并规则也可以是将数据量小于第一阈值的待备份数据与数据量大于第一阈值的待备份数据进行合并;或者,预设合并规则也可以是其他规则,在此对预设合并规则的具体内容不予限制。
在第一方面的一种可能的实现方式中,上述方法还包括:
将各个在线设备划分的数据块中最大的数据块的数据量确定为纠删码条带的条带深度;
或者,将纠删码条带的条带深度设置为预设值。
需要说明的是,终端设备除了确定条带长度以外,还可以确定条带深度。
条带深度为纠删码条带中的数据块的数据量。在确定条带深度时,可以获取各个在线设备划分数据块的方式,将各个在线设备划分的数据块中最大的数据块的数据量确定为条带深度。或者,终端设备也可以直接将条带深度设置为预设值,例如,条带深度可以设置为1MB、2MB、5MB等数据量。
在第一方面的一种可能的实现方式中,上述根据条带长度和待备份数据进行纠删码编码,得到目标校验数据,包括:
根据条带长度以及各个待备份数据对应的原始数据块生成纠删码条带;
对纠删码条带进行纠删码编码,得到目标校验数据。
需要说明的是,在进行纠删码编码时,需要将待备份数据划分为原始数据块。划分待备份数据可以由编码节点执行,或者,也可以由待备份设备执行。
然后,终端设备可以根据条带长度,选取各个待备份数据的原始数据块组成一条或多条纠删码条带,并对纠删码条带进行纠删码编码,得到目标校验数据。
在第一方面的一种可能的实现方式中,在上述对纠删码条带进行纠删码编码,得到目标校验数据之前,还包括:
若纠删码条带中原始数据块的数量小于条带长度,则对纠删码条带做补零处理,使得纠删码条带中原始数据块的数量等于条带深度。
需要说明的是,如果纠删码条带中的原始数据块的数量小于条带长度时,需要对该纠删码条带做补零处理,用全是0的数据块作为缺少的原始数据块,补齐该纠删码条带,使得该纠删码条带中的原始数据块的数量等于条带深度。
在第一方面的一种可能的实现方式中,在上述对纠删码条带进行纠删码编码,得到目标校验数据之前,还包括:
若纠删码条带中存在数据量小于条带深度的原始数据块,则对数据量小于条带深度的原始数据块做补零处理,使得数据量小于条带深度的原始数据块的数据量等于条带深度。
需要说明的是,如果纠删码条带中存在数据量小于条带深度的原始数据块,则需要对该数据量小于条带的原始数据块做补零处理,用0填充这些原始数据块中缺少的数据,使得这些原始数据块的数据量等于条带深度,
在第一方面的一种可能的实现方式中,上述校验节点为云存储设备或网络附属存储NAS设备。
需要说明的是,当校验节点为分布式存储系统以外中的终端设备时,校验节点可以为云存储设备或网络附属存储(network attached storage,NAS)设备等。
在第一方面的一种可能的实现方式中,在上述将目标校验数据发送至校验节点进行存储之前,还包括:
获取各个在线设备的设备参数,设备参数包括设备可靠性、设备在线时间以及设备存储空间中的一个或多个参数;
根据各个在线设备的设备参数以及预设校验节点选取规则,从各个在线设备中选取校验节点。
需要说明的是,当校验节点为分布式存储系统中的终端设备时,编码节点可以获取各个在线设备的设备参数。设备参数可以包括设备可靠性、设备在线时间以及设备存储空间等参数中的一个或多个。
然后,编码节点可以根据各个在线设备的设备参数以及预设校验节点选取规则确定校验节点。
预设校验节点选取规则可以根据实际需求进行设置。例如,预设校验节点选取规则可以为选取设备可靠性高的在线设备作为校验节点;或者,预设校验节点选取规则也可以为选取设备在线时间长的在线设备作为校验节点;或者,预设校验节点选取规则也可以为选取设备存储空间大的在线设备作为校验节点;或者,预设校验节点选取规则也可以为其他规则,本申请对预设校验节点选取规则的具体内容不予限制。
在第一方面的一种可能的实现方式中,上述获取待备份数据,包括:
根据各个在线设备对应的元数据确定待备份设备,元数据用于指示在线设备是否存在待备份数据和/或待备份数据的数据量;
从各个待备份设备中读取待备份数据。
需要说明的是,编码节点在获取待备份数据时,可以先根据各个在线设备对应的元数据确定哪些在线设备存在待备份数据,将存在待备份数据的在线设备确定为待备份终端。
然后,编码节点再从各个待备份终端中读取待备份数据。
元数据用于指示在线设备是否存在待备份数据和/或待备份数据的数据量。
在第一方面的一种可能的实现方式中,上述根据条带长度和待备份数据进行纠删码编码,得到目标校验数据,包括:
当条带长度满足p为大于或等于3的素数的条件时,获取各个待备份数据对应的原始数据块,得到N组原始数据块,其中,p为N+1,N为条带长度,一个待备份数据对应一组原始数据块,同一组的原始数据块具有不同的排序位置;
从N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
从N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
或者,从N组原始数据块和一组第一校验数据块中,选取N组数据块,从N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块。
需要说明的是,当条带长度满足p为大于或等于3的素数的条件时,表示存在N个待备份数据,可以获取各个待备份数据对应的原始数据块,得到N组原始数据块。
在每一组原始数据块中的各个原始数据块具有不同的排序位置。排序位置可以通过顺次标记阿拉伯数字来标识,也可以用通过顺次标记字母来标识,在其他实施例中,还可以不采用顺次标记的方式来标识排序位置,本申请对排序位置的具体实现形式不予限制。
例如,同一待备份设备的原始数据块可以用1、2、3、4等标识表示排序位置;或者,也可以用A、B、C、D等标识表示排序顺序;或者,也可以用数据和字母结合的标识表示排序顺序。
然后,编码节点可以从N组原始数据块中,每组选取一个具有相同排序位置的原始数据块组成纠删码条带,对这些纠删码条带进行纠删码编码,可以得到各个排序位置对应的第一校验数据块。
并且,编码节点还可以从N组原始数据块中,每组选取一个具有不同排序位置的原始数据块组成纠删码条带,对这些纠删码条带进行纠删码编码,可以得到各个排序位置对应的第二校验数据块。
或者,从N组原始数据块和1组第一校验数据块中,选取N组数据块,从N组数据块中,每组选取一个具有不同排序位置的数据块组成纠删码条带,对这些纠删码条带进行纠删码编码,可以得到各个排序位置对应的第二校验数据块。
上述第一校验数据块和上述第二校验数据块即目标校验数据。
在第一方面的一种可能的实现方式中,上述从N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块,包括:
将一组原始数据块按照排序位置排成一列,不同组的原始数据块对应不同列,形成第一数据块阵列;
对第一数据块阵列中的每行进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
相应的,上述从N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
从第一数据块阵列的每列选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
相应的,上述从N组原始数据块和一组第一校验数据块中,选取N组数据块,从N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块,包括:
将一组第一校验数据块按照排序位置排成一列,并根据第一校验数据块对应的列对第一数据块阵列进行扩展,得到第一扩展阵列;
从第一扩展阵列的N+1列中选择N列,并从N列中每列选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
需要说明的是,在进行纠删码编码时,可以将N组原始数据块排列成N列的第一数据块阵列,第一数据块阵列中,一列代表一组原始数据块,一列中的各个原始数据块按照排序位置进行排列。
然后,终端设备可以对第一数据块阵列中的每行进行纠删码编码,得到各个不同排序位置对应的第一校验数据块。
以及,终端设备从第一数据块阵列的每列选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;或者,终端设备也可以将一组第一校验数据块按照排序位置排成一列,并根据第一校验数据块对应的列对第一数据块阵列进行扩展,得到第一扩展阵列;然后,终端设备从第一扩展阵列的N+1列中选择N列,并从N列中每列选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
在第一方面的一种可能的实现方式中,上述从第一数据块阵列的每列选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对第一数据块阵列进行不同斜对角线的纠删码编码,得到各个不同排序位置对应的第二校验数据块;
从第一扩展阵列的N+1列中选择N列,并从N列中每列选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对第一扩展阵列进行不同斜对角线的纠删码编码,得到各个不同排序位置对应的第二校验数据块。
需要说明的是,编码节点在计算第二校验数据块时,可以直接选取第一数据块阵列或第一扩展阵列的斜对角线的数据块进行纠删码编码,从而得到各个不同排序位置对应的第二校验数据。
在第一方面的一种可能的实现方式中,上述从N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块,包括:
将一组原始数据块按照排序位置排成一行,不同组的原始数据块对应不同行,形成第二数据块阵列;
对第二数据块阵列中的每列进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
相应的,上述从N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
从第二数据块阵列的每行选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
相应的,上述N组原始数据块和一组第一校验数据块中,选取N组数据块,从N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块,包括:
将一组第一校验数据块按照排序位置排成一行,并根据第一校验数据块对应的行对第二数据块阵列进行扩展,得到第二扩展阵列;
从第二扩展阵列的N+1行中选择N行,并从N行中每行选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
需要说明的是,除了将一组原始数据块作为一列以外,还可以将一组原始数据块作为一行,组成第二数据块阵列。
然后,终端设备可以对第二数据块阵列中的每列进行纠删码编码,得到各个不同排序位置对应的第一校验数据块。
以及,终端设备可以从第二数据块阵列的每行选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;或者,将一组第一校验数据块按照排序位置排成一行,并根据第一校验数据块对应的行对第二数据块阵列进行扩展,得到第二扩展阵列,从第二扩展阵列的N+1行中选择N行,并从N行中每行选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
在第一方面的一种可能的实现方式中,上述从第二数据块阵列的每行选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对第二数据块阵列进行不同斜对角线的编码,得到各个不同排序位置对应的第二校验数据块;
上述从第二扩展阵列的N+1行中选择N行,并从N行中每行选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对第二扩展阵列进行不同斜对角线的编码,得到各个不同排序位置对应的第二校验数据块。
需要说明的是,编码节点在计算第二校验数据块时,可以直接选取第二数据块阵列或第二扩展阵列的斜对角线的数据块进行纠删码编码,从而得到各个不同排序位置对应的第二校验数据。
在第一方面的一种可能的实现方式中,上述纠删码编码为同或编码或异或编码。
需要说明的是,终端设备在进行纠删码编码时,可以采用同或编码的编码方式,或者,也可以采用异或编码的编码方式,或者,也可以采用其他编码方式。
在第一方面的一种可能的实现方式中,上述方法还包括:
当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,目标校验数据包括第一校验数据块和第二校验数据块。
需要说明的是,当存在损坏的数据块时,终端设备可以根据未损坏的原始数据块和未损坏的目标校验数据对损坏的数据块进行修复。
在第一方面的一种可能的实现方式中,上述当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,包括:
当存在损坏的数据块且损坏的数据块的组数小于或等于2时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,上述目标校验数据包括第一校验数据块和第二校验数据块。
需要说明的是,由于上述纠删码编码方式计算出两组校验数据块,因此,该纠删码编码方式的容错度为2,最多允许两组数据块损坏。
因此,当存在损坏的数据块时,若损坏的数据块的组数小于或等于2,则终端设备根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块。
在第一方面的一种可能的实现方式中,上述当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,包括:
当任意一组数据块损坏时,获取损坏的数据块的类型;
若损坏的数据块为第一校验数据块,则根据N组原始数据块修复损坏的第一校验数据块;
若损坏的数据块为第二校验数据块,则根据N组原始数据块修复损坏的第二校验数据块,或者,根据N组原始数据块和第一校验数据块修复损坏的第二校验数据块;
若损坏的数据块为原始数据块,则根据未损坏的原始数据块和第一校验数据块修复损坏的原始数据块,或者,根据未损坏的原始数据块、第一校验数据块和第二校验数据块混合修复损坏的数据块。
需要说明的是,当只有一组数据块损坏时,可以获取损坏的数据块的类型。如果是第一校验数据块损坏,则上述N组原始数据可以根据上述纠删码编码的方式修复损坏的第一校验数据块。
如果是第二校验数据块损坏,则终端设备可以根据上述N组原始数据或上述N+1组数据块修复损坏的第二校验数据块。
如果损坏的数据块为原始数据块,则终端设备可以直接根据第一校验数据块和未损坏的原始数据块修复损坏的原始数据块。或者,终端设备也可以根据未损坏的原始数据块、第一校验数据块和第二校验数据块混合修复损坏的数据块,减少需要获取的数据块的数量。
在第一方面的一种可能的实现方式中,上述当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,包括:
当任意两组数据块损坏时,获取损坏的数据块的类型;
若损坏的数据块为一组第一校验数据块和一组第二校验数据块,则根据N组原始数据块修复损坏的第一校验数据块和第二校验数据块;
若损坏的数据块为一组原始数据块和一组第二校验数据块,则根据未损坏的原始数据块和第一校验数据块修复损坏的原始数据块和第二校验数据块;
若损坏的数据块不包括第二校验数据块,则根据未损坏的原始数据块和第二校验数据块混合修复损坏的数据块。
需要说明的是,当存在任意两组数据块损坏时,终端设备可以先获取损坏的数据块的类型。
如果损坏的数据块为一组第一校验数据块和一组第二校验数据块,则终端设备可以根据上述N组原始数据块,通过上述纠删码编码方式修复第一校验数据块和第二校验数据块。
如果损坏的数据块为一组原始数据块和一组第二校验数据块,则终端设备可以根据第一校验数据块和未损坏的原始数据块修复损坏的原始数据块,然后再根据N组原始数据块修复第二校验数据。
如果损坏的数据块不包括第二校验数据块,则可能是两组原始数据块丢失,或者,一组原始数据块和一组第一校验数据块丢失。此时,终端设备可以根据未损坏的原始数据块和第二校验数据块混合修复损坏的数据块。
第二方面,本申请实施例提供了一种数据处理装置,包括:
信息获取模块,用于获取待分类数据的信息,上述信息包括待分类数据在预设时间段内的所有访问热度值和访问热度值对应的第一时间信息;
第一衰减模块,用于根据第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值;
热度计算模块,用于根据各个访问热度值对应的第一衰减值计算第一热度值;
热度类别模块,用于根据第一热度值确定待分类数据的热度类别。
在第二方面的一种可能的实现方式中,第一衰减模块包括:
第一系数子模块,用于根据第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一时间衰减系数;
第一衰减值子模块,用于将各个访问热度值的第一时间衰减系数和各个访问热度值对应相乘得到各个访问热度值对应的第一衰减值;
热度计算模块,具体用于将各个访问热度值对应的第一衰减值求和,得到第一热度值。
在第二方面的一种可能的实现方式中,上述信息还包括第二热度值和第二热度值对应的第二时间信息,第二热度值为预设的初始热度值或最近一次计算得到的第一热度值;
相应的,上述装置还包括:
第二衰减模块,用于根据第二时间信息以及预设的第二时间衰减函数计算第二热度值的第二衰减值,第二时间信息为预设时间段的起始时间;
相应的,热度计算模块包括:
第一热度子模块,用于根据第二热度值的第二衰减值以及各个访问热度值对应的第一衰减值计算待分类数据的第一热度值;
数据更新子模块,用于将第二热度值更新为第一热度值。
在第二方面的一种可能的实现方式中,第二衰减模块包括:
第二系数子模块,用于根据第二时间信息以及预设的第二时间衰减函数计算第二时间衰减系数;
第二衰减值子模块,用于将第二时间衰减系数和第二热度值相乘得到第二热度值的第二衰减值;
相应的,第一热度子模块,具体用于将第二热度值的第二衰减值以及各个访问热度值对应的第一衰减值求和,得到第一热度值。
在第二方面的一种可能的实现方式中,热度类别包括温数据和冷数据,装置还包括:
第一数据模块,用于从热度类型为温数据的待分类数据中选取第一预设比例的温数据作为第一备份数据;
第一校验模块,用于对第一备份数据与热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据;
第一发送模块,用于将热度类别为冷数据的待分类数据发送至第一指定终端,将第一校验数据发送至第二指定终端,删除本地存储的热度类别为冷数据的待分类数据。
在第二方面的一种可能的实现方式中,第一校验模块,具体用于:
第一备份数据为与冷数据相同数据量的温数据,对第一备份数据与热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据;
或者,第一备份数据为与冷数据不同数据量的温数据,若第一备份数据的数据量比冷数据的数据量少,则将第一备份数据补零成与冷数据相同的数据量后,对补零后的第一备份数据和热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据。
在第二方面的一种可能的实现方式中,上述装置还包括:
第二数据模块,用于将热度类型为温数据的待分类数据中第一备份数据以外的温数据拆分成第二备份数据和第三备份数据;
第二校验模块,用于对第二备份数据和第三备份数据进行纠删码编码,得到第二校验数据;
第二发送模块,用于将第二校验数据发送至第三指定终端,并将第二备份数据的备份数据发送至第四指定终端。
在第二方面的一种可能的实现方式中,热度类别包括热数据,上述装置还包括:
第三发送模块,用于将热度类别为热数据的待分类数据存储在本地的存储空间,并发送热数据的备份数据至数据备份终端进行备份。
在第二方面的一种可能的实现方式中,热度类别包括温数据,上述装置还包括:
第三数据模块,用于从热度类别为温数据的待分类数据中选取第二预设比例的温数据作为第四备份数据;
第三校验模块,用于对第四备份数据以及第四备份数据以外的温数据进行纠删码编码,得到第三校验数据;
第四发送模块,用于将第三校验数据发送至第五指定终端,将第四备份数据发送至第六指定终端。
在第二方面的一种可能的实现方式中,热度类别包括冷数据,上述装置还包括:
第四数据模块,用于将热度类别为冷数据的待分类数据拆分成第五备份数据和第六备份数据;
第四校验模块,用于对第五备份数据和第六备份数据进行纠删码编码,得到第四校验数据;
第五发送模块,用于将第五备份数据发送至第七指定终端,将第六备份数据发送至第八指定终端,将第四校验数据发送至第九指定终端,并删除本地存储的热度类别为冷数据的待分类数据。
在第二方面的一种可能的实现方式中,上述装置还包括:
长度确定模块,用于确定纠删码条带的条带长度,条带长度小于或等于分布式存储系统中在线设备的数量;
数据读取模块,用于获取各个待备份设备的待备份数据,待备份设备为存在待备份数据的在线设备,待备份数据包括预设热度类别的待分类数据;
校验生成模块,用于根据条带长度和待备份数据进行纠删码编码,得到目标校验数据;
校验存储模块,用于将目标校验数据发送至校验节点进行存储。
在第二方面的一种可能的实现方式中,长度确定模块,具体用于将在线设备的数量确定为纠删码条带的条带长度。
在第二方面的一种可能的实现方式中,长度确定模块,包括:
数量子模块,用于确定在线设备中待备份设备的数量;
确定子模块,用于将待备份设备的数量确定为纠删码条带的条带长度。
在第二方面的一种可能的实现方式中,长度确定模块,包括:
大小子模块,用于获取各个待备份数据的数据量;
合并子模块,用于根据预设合并规则对数据量小于第一阈值的待备份数据进行合并处理,得到数据量大于或等于第一阈值的待备份数据;
数量子模块,用于将合并处理后的待备份数据的数量确定为纠删码条带的条带长度。
在第二方面的一种可能的实现方式中,上述装置还包括:
深度确定模块,用于将各个在线设备划分的数据块中最大的数据块的数据量确定为纠删码条带的条带深度;或者,将纠删码条带的条带深度设置为预设值。
在第二方面的一种可能的实现方式中,校验生成模块,包括:
原始子模块,用于根据条带长度以及各个待备份数据对应的原始数据块生成纠删码条带;
编码子模块,用于对纠删码条带进行纠删码编码,得到目标校验数据。
在第二方面的一种可能的实现方式中,上述装置还包括:
条带处理模块,用于若纠删码条带中原始数据块的数量小于条带长度,则对纠删码条带做补零处理,使得纠删码条带中原始数据块的数量等于条带深度。
在第二方面的一种可能的实现方式中,上述装置还包括:
块处理模块,用于若纠删码条带中存在数据量小于条带深度的原始数据块,则对数据量小于条带深度的原始数据块做补零处理,使得数据量小于条带深度的原始数据块的数据量等于条带深度。
在第二方面的一种可能的实现方式中,校验节点为云存储设备或网络附属存储NAS设备。
在第二方面的一种可能的实现方式中,上述装置还包括:
参数获取模块,用于获取各个在线设备的设备参数,设备参数包括设备可靠性、设备在线时间以及设备存储空间中的一个或多个参数;
节点选取模块,用于根据各个在线设备的设备参数以及预设校验节点选取规则,从各个在线设备中选取校验节点。
在第二方面的一种可能的实现方式中,数据读取模块,包括:
元数据子模块,用于根据各个在线设备对应的元数据确定待备份设备,元数据用于指示在线设备是否存在待备份数据和/或待备份数据的数据量;
读取子模块,用于从各个待备份设备中读取待备份数据。
在第二方面的一种可能的实现方式中,校验生成模块,包括:
原始数据子模块,用于当条带长度满足p为大于或等于3的素数的条件时,获取各个待备份数据对应的原始数据块,得到N组原始数据块,其中,p为N+1,N为条带长度,一个待备份数据对应一组原始数据块,同一组的原始数据块具有不同的排序位置;
第一校验子模块,用于从N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
第二校验子模块,用于从N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
或者,N组原始数据块和一组第一校验数据块中,选取N组数据块,从N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块。
在第二方面的一种可能的实现方式中,第一校验子模块,包括:
第一阵列子模块,用于将一组原始数据块按照排序位置排成一列,不同组的原始数据块对应不同列,形成第一数据块阵列;
行校验子模块,用于对第一数据块阵列中的每行进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
相应的,第二校验子模块,具体用于从第一数据块阵列的每列选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
或者,将一组第一校验数据块按照排序位置排成一列,并根据第一校验数据块对应的列对第一数据块阵列进行扩展,得到第一扩展阵列;从第一扩展阵列的N+1列中选择N列,并从N列中每列选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
在第二方面的一种可能的实现方式中,第二校验子模块,具体用于:
对第一数据块阵列进行不同斜对角线的纠删码编码,得到各个不同排序位置对应的第二校验数据块;
或者,对第一扩展阵列进行不同斜对角线的纠删码编码,得到各个不同排序位置对应的第二校验数据块。
在第二方面的一种可能的实现方式中,第一校验子模块,包括:
第二阵列子模块,用于将一组原始数据块按照排序位置排成一行,不同组的原始数据块对应不同行,形成第二数据块阵列;
列校验子模块,用于对第二数据块阵列中的每列进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
相应的,第二校验子模块,具体用于:
从第二数据块阵列的每行选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
或者,将一组第一校验数据块按照排序位置排成一行,并根据第一校验数据块对应的行对第二数据块阵列进行扩展,得到第二扩展阵列;从第二扩展阵列的N+1行中选择N行,并从N行中每行选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
在第二方面的一种可能的实现方式中,第二校验子模块,具体用于:
对第二数据块阵列进行不同斜对角线的编码,得到各个不同排序位置对应的第二校验数据块;
或者,对第二扩展阵列进行不同斜对角线的编码,得到各个不同排序位置对应的第二校验数据块。
在第二方面的一种可能的实现方式中,纠删码编码为同或编码或异或编码。
在第二方面的一种可能的实现方式中,上述装置还包括:
数据修复模块,用于当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,目标校验数据包括第一校验数据块和第二校验数据块。
在第二方面的一种可能的实现方式中,数据修复模块,具体用于当存在损坏的数据块且损坏的数据块的组数小于或等于2时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,目标校验数据包括第一校验数据块和第二校验数据块。
在第二方面的一种可能的实现方式中,数据修复模块,包括:
第一类型子模块,用于当任意一组数据块损坏时,获取损坏的数据块的类型;
第一修复子模块,用于若损坏的数据块为第一校验数据块,则根据N组原始数据块修复损坏的第一校验数据块;
第二修复子模块,用于若损坏的数据块为第二校验数据块,则根据N组原始数据块修复损坏的第二校验数据块,或者,根据N组原始数据块和第一校验数据块修复损坏的第二校验数据块;
第三修复子模块,用于若损坏的数据块为原始数据块,则根据未损坏的原始数据块和第一校验数据块修复损坏的原始数据块,或者,根据未损坏的原始数据块、第一校验数据块和第二校验数据块混合修复损坏的数据块。
在第二方面的一种可能的实现方式中,数据修复模块,包括:
第二类型子模块,用于当任意两组数据块损坏时,获取损坏的数据块的类型;
第四修复子模块,用于若损坏的数据块为一组第一校验数据块和一组第二校验数据块,则根据N组原始数据块修复损坏的第一校验数据块和第二校验数据块;
第五修复子模块,用于若损坏的数据块为一组原始数据块和一组第二校验数据块,则根据未损坏的原始数据块和第一校验数据块修复损坏的原始数据块和第二校验数据块;
第六修复子模块,用于若损坏的数据块不包括第二校验数据块,则根据未损坏的原始数据块和第二校验数据块混合修复损坏的数据块。
第三方面,提供了一种终端设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述方法的步骤。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时,使得终端设备实现如上述方法的步骤。
第五方面,提供了一种芯片系统,芯片系统可以为单个芯片,或者多个芯片组成的芯片模组,芯片系统包括存储器和处理器,处理器执行存储器中存储的计算机程序,以实现如上述方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:
在本申请的数据处理方法中,根据待分类数据的各个访问记录中的访问热度值计算第一热度值,第一热度值与用户的历史访问情况有关,可以避免偶发性的访问对缓存造成污染。并且,在计算第一热度值的过程中,引入了第一时间衰减函数,根据第一时间衰减函数计算各个访问热度值的第一衰减值,减轻历史数据造成的缓存污染效应,提高计算得到的第一热度值的准确性,解决了当前的数据分类方案准确性低,容易造成缓存污染的问题。
附图说明
图1是本申请实施例提供的一种数据分类方法的流程示意图;
图2是本申请实施例提供的一种时间衰减系数的曲线示意图;
图3是本申请实施例提供的一种应用场景的示意图;
图4是本申请实施例提供的另一种应用场景的示意图;
图5是本申请实施例提供的另一种应用场景的示意图;
图6是本申请实施例提供的另一种应用场景的示意图;
图7是本申请实施例提供的另一种应用场景的示意图;
图8是本申请实施例提供的另一种应用场景的示意图;
图9是本申请实施例提供的另一种应用场景的示意图;
图10是本申请实施例提供的另一种应用场景的示意图;
图11是本申请实施例提供的另一种应用场景的示意图;
图12是本申请实施例提供的另一种应用场景的示意图;
图13是本申请实施例提供的另一种应用场景的示意图;
图14是本申请实施例提供的一种分布式存储系统的结构示意图;
图15是本申请实施例提供的一种数据备份方法的流程示意图;
图16是本申请实施例提供的分布式存储系统中的终端设备的示意性框图;
图17是本申请实施例提供的另一种应用场景的示意图;
图18是本申请实施例提供的另一种应用场景的示意图;
图19是本申请实施例提供的一种纠删码编码方法的流程示意图;
图20是本申请实施例提供的另一种应用场景的示意图;
图21是本申请实施例提供的另一种应用场景的示意图;
图22是本申请实施例提供的另一种应用场景的示意图;
图23是本申请实施例提供的另一种应用场景的示意图;
图24是本申请实施例提供的另一种应用场景的示意图;
图25是本申请实施例提供的另一种应用场景的示意图;
图26是本申请实施例提供的另一种应用场景的示意图;
图27是本申请实施例提供的另一种应用场景的示意图;
图28是本申请实施例提供的另一种应用场景的示意图;
图29是本申请实施例提供的另一种应用场景的示意图;
图30是本申请实施例提供的另一种应用场景的示意图;
图31是本申请实施例提供的另一种应用场景的示意图;
图32是本申请实施例提供的一种数据恢复方法的流程示意图;
图33是本申请实施例提供的另一种应用场景的示意图;
图34是本申请实施例提供的另一种应用场景的示意图;
图35是本申请实施例提供的另一种应用场景的示意图;
图36是本申请实施例提供的另一种应用场景的示意图;
图37是本申请实施例提供的另一种应用场景的示意图;
图38是本申请实施例提供的另一种应用场景的示意图;
图39是本申请实施例提供的另一种应用场景的示意图;
图40是本申请实施例提供的另一种应用场景的示意图;
图41是本申请实施例提供的另一种应用场景的示意图;
图42是本申请实施例提供的另一种应用场景的示意图;
图43是本申请实施例提供的一种终端设备的示意图;
图44是本申请实施例提供的一种数据热度计算模块的功能结构图;
图45是本申请实施例提供的另一种终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
另外,在本申请的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例提供的数据分类方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等终端设备上,本申请实施例对终端设备的具体类型不作任何限制。
例如,所述终端设备可以是WLAN中的站点(STAION,ST),可以是蜂窝电话、无绳电话、会话启动协议(Session InitiationProtocol,SIP)电话、无线本地环路(WirelessLocal Loop,WLL)站、个人数字处理(Personal Digital Assistant,PDA)设备、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、车联网终端、电脑、膝上型计算机、手持式通信设备、手持式计算设备、卫星无线设备、无线调制解调器卡、电视机顶盒(set top box,STB)、用户驻地设备(customer premise equipment,CPE)和/或用于在无线系统上进行通信的其它设备以及下一代通信系统,例如,5G网络中的移动终端或者未来演进的公共陆地移动网络(Public Land Mobile Network,PLMN)网络中的移动终端等。
现有的数据分类方案中,主要采用LRU算法和LFU算法。
LRU算法根据数据的近期访问情况来淘汰数据,其核心思想是“如果数据最近被访问过,那么该数据将来被访问的几率也更高”。因此,在LRU算法中,当新数据加入,或者已有的数据被访问时,会将该数据移至队列首端。当需要淘汰数据时,从队列尾端开始淘汰。
当采用LRU算法时,偶发性或周期性地批量操作会导致LRU算法的准确率急剧下降,缓存污染情况严重。比如,偶然有一些并非是常用的数据被调用,则这些数据立刻排在其他较为常用的数据的前面;当需要淘汰数据时,可能其他常用的数据被淘汰了,而这些被偶然调用的数据反而保留了。
LFU算法根据数据的历史访问次数来淘汰数据,其核心思想是“如果数据过去被访问多次,则将来被访问的频率也更高”。因此,在LFU算法中,会记录各个数据的访问次数。当需要淘汰数据时,从访问次数最低的数据开始淘汰。
使用LFU算法可以避免偶发性数据调用对缓存的污染。但是,由于在LFU算法中仅仅是简单地统计数据的访问次数,久远的访问记录和近期的访问记录具有相同的效力,因此,一旦数据访问模式改变,LFU算法需要较长的时间来适应新的访问模式。例如,用户在某段时间内频繁访问A数据,A数据的访问次数远大于B数据,则LFU算法认为A数据是热度较高的数据。但是,一段时间后用户改变需求,频繁访问B数据,此时由于A在前一段时间累积了较多的访问次数,所以,LFU算法依然认为A数据是热度较高的数据。因此,在LFU算法中,存在历史数据影响将来数据的缓存污染效应。
综上,当前的数据分类方案中均只是简单地根据数据的历史访问次数或近期访问情况确定数据的热度类别,准确性低,容易造成缓存污染。为了解决上述问题,本申请实施例提供了一种数据处理方法,该数据处理方法可以包括数据分类方法、数据备份方法以及纠删码编码方法等内容,具体参见如下所述。
以下将从终端设备的角度,对本申请实施例提供的一种数据分类方法进行描述,请参阅附图1,本申请实施例中的数据分类方法包括:
S101、获取待分类数据的信息,所述信息包括所述待分类数据在预设时间段内的所有访问热度值和所述访问热度值对应的第一时间信息;
预设时间段为用户预先设置的时间段,用户可以根据实际需求进行设置。例如,假设当前时间为2019年10月5日,用户想要计算最近五天内各个数据的第一热度值,则用户可以将预设时间段设置为2019年10月1日至2019年10月5日。
在对待分类数据进行数据分类时,可以先获取待分类数据的信息。上述信息可以包含待分类数据的访问记录。
在本申请的实施例中,可以设置数据列表来记录数据的访问记录。访问记录中可以包括访问热度值和第一时间信息。第一时间信息用于标识该访问记录所对应的时间点或时间段。
在一些可能的实现方式中,第一时间信息可以为现实的标准时间。例如,当以天作为时间跨度时,第一时间信息可以为具体的日期,比如2019年11月6日。
在另一些可能的实现方式中,第一时间信息可以为该访问记录的记录时间与当前时间的时间间隔。例如,30天之前记录的访问信息中的第一时间信息可以记录为30。
在另一些可能的实现方式中,第一时间信息可以通过计时器方式进行记录,将某一天作为计时起点,第一时间信息为该访问记录的记录时间与计时起点的时间间隔。例如,将30天之前的时间作为计时起点,则25天前记录的访问记录中的第一时间信息可以记录为5。
访问热度值用于表示待分类数据是否在第一时间信息对应的时间点或时间段被访问。
在一些可能的实现方式中,若待分类数据在第一时间信息对应的时间点或时间段被访问,则该待分类数据每被访问一次,访问热度值累加Q。访问热度值可表示为Q*M,M为待分类数据在第一时间信息对应的时间点或时间段被访问的次数。若待分类数据在第一时间信息对应的时间点或时间段未被访问,则访问热度值记录为P。其中,Q为第一预设值,P为第二预设值,Q和P的具体取值可以根据实际情况进行设置。例如,在一些实施例中,可以将Q设置为1,P设置为0;若待分类数据在第一时间信息对应的时间点或时间段被访问5次,则该访问记录的访问热度值为1*5=5;若待分类数据在第一时间信息对应的时间点或时间段未被访问,则该访问记录的访问热度值设置为0。
在另一些可能的实现方式中,若待分类数据在第一时间信息对应的时间点或时间段被访问,则访问热度值记录为K,即使待分类数据在第一时间信息对应的时间点或时间段内被多次访问,也只记录一次。若待分类数据在第一时间信息对应的时间点或时间段未被访问,则访问热度值记录为L。其中,K为第三预设值,L为第四预设值,K和L具体取值可以根据实际情况进行设置。例如,在一些实施例中,可以将K设置为1,将L设置为0;若待分类数据在第一时间信息对应的时间点或时间段被访问,则将该访问记录中的访问热度值设置为1;若待分类数据在第一时间信息对应的时间点或时间段未被访问,则将该访问记录中的访问热度值设置为0。
在工程应用的过程中,若采用上述第一种实现方式记录访问热度值,则访问热度值可以较为准确地表征数据的热度情况。但是,采用第一种实现方式记录访问热度值需要时刻监测数据的访问情况,消耗大量的系统资源。
若采用上述第二种实现方式记录访问热度值,在第一时间信息对应的时间点或时间段内,即使数据被多次访问,也只记录一次,在一定程度上会降低访问热度值的准确性。但是,当采用上述第二种实现方式记录访问热度值时,一旦监测到数据被访问,则将访问热度值设置为K,停止监测数据的访问情况直至下一条访问记录对应的时间点或时间段,可以节省大量的系统资源。
例如,假设以天为单位,某待分类数据在一天中只被访问了一次;若采用上述第一种实现方式记录访问热度值,则需要监控该待分类数据对应的那一天内24小时的数据访问情况;若采用上述第二种实现方式记录访问热度值,假设在8点23分监测到数据被访问,则对于该天的访问记录而言,直接将该访问热度值设置为K,剩下的15个小时37分钟都不需要继续监测该数据的访问情况,节约了大量的系统资源。
示例性的,以天为时间跨度,以具体的日期作为第一时间信息,采用上述第二种实现方式记录访问热度值,且K=1,L=0,某文件在2019年10月1日被第一次写入终端设备中,并且分别在2019年10月2日,2019年10月5被访问。则对应的访问记录可以如表一所示。
表一
第一时间信息 10月1日 10月2日 10月3日 10月4日 10月5日
访问热度值 1 1 0 0 1
对于同一个待分类数据,可能存在一条或多条访问记录。在一些可能的实现方式中,当需要获取待分类数据的访问记录时,可以获取上述待分类数据的所有访问记录。在另一些可能的实现方式中,可以根据用户的配置方案,只获取上述待分类数据在预设时间段内的访问记录。访问记录的具体获取方式可以根据实际需求进行设置。
S102、根据所述第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值;
在获取到待分类数据的访问记录后,可以根据访问记录中的第一时间信息计算第一时间衰减系数,根据第一衰减系数计算各个访问热度值的第一衰减值。
第一时间衰减系数的计算方式可以根据实际情况进行设置。例如,在一些实施例中,计算第一时间衰减系数的第一时间衰减函数可以为:
f(x)=T2/(x2+T2) (1)
其中,T为第五预设值,x表示待分类数据的某一条访问记录的记录时间与当前时间的时间间隔。其中,当终端设备周期性地执行本实施例的数据分类方法时,上述当前时间为终端设备执行本实施例的数据分类方法的时间;当用户想要计算待分类数据在某一个预设时间段的第一热度值时,上述当前时间为该预设时间段的结束时间。对于同一个待分类数据存在多条访问记录的情况,可以用xi(i=1,2,3…)表示待分类数据的第i条访问记录的记录时间与当前时间的时间间隔(例如,假设访问记录如表1所示,预设时间段为2019年10月1日至2019年10月5日,则当前时间为2019年10月5日,对于10月1日第一次访问记录来说,x1=5-1=4;对于10月2日第二次访问记录来说,x2=5-2=3;对于10月3日第三次访问记录来说,x3=5-3=2;对于10月4日第四次访问记录来说,x4=5-4=1;对于10月5日第五次访问记录来说,x5=5-5=0),x可以根据第一时间信息得到,f()表示计算第一衰减系数的第一时间衰减函数,f(x)表示第一时间衰减系数。
公式1中的第五预设值T的具体取值可以根据实际情况进行设置。例如,假设用户想让第一时间衰减系数在第90天时衰减至0.1,则可以将T设置为30。
需要说明的是,上述第一衰减系数的计算公式仅为本申请实施例的其中一种示例,不应理解为对第一时间衰减系数的计算方式的限制。在其他可能的实现方式中,还可以通过线性函数、指数函数等函数形式设置相应的计算公式计算第一时间衰减系数。例如:
当第一时间衰减函数为指数函数时,第一时间衰减函数可以表示为:
f(x)=Be-bx (2)
其中,B和b均为大于0的预设常数。
当第一时间衰减函数为线性函数时,第一时间衰减函数可以表示为:
f(x)=-Cx+c (3)
其中,C和c均为大于0的预设常数。
当第一时间衰减函数为反S型曲线函数时,第一时间衰减函数可以表示为:
Figure BDA0002746376180000201
其中,D、d、H均为大于0的预设常数,h为大于1的预设常数。
当第一时间衰减函数为双曲线函数时,第一时间衰减函数可以表示为:
Figure BDA0002746376180000211
其中,E和k均为大于0的预设常数。
除了上述示例以外,第一时间衰减函数还可以为其他形式的衰减函数,例如对数函数形式的衰减函数,在此不进行一一列举。第一时间衰减函数的函数形式以及相应的函数参数应当根据实际需求进行设置,在本实施例中不对第一时间衰减函数进行限制。
将第一时间衰减系数与访问热度值相乘可以得到访问热度值的第一衰减值。
S103、根据各个访问热度值对应的第一衰减值计算第一热度值;
计算得到待分类数据对应的各个访问记录对应的第一衰减值之后,可以对各个访问记录对应的第一衰减值求和,根据求和结果计算第一热度值。
在一些可能的实现方式中,可以只根据第一衰减系数和访问热度值计算第一热度值。
例如,在一些实施例中,根据第一时间衰减系数和访问热度值计算第一热度值的公式可以表示为:
Figure BDA0002746376180000212
其中,V表示第一热度值,xi表示待分类数据的第i条访问记录与当前时间的时间间隔,m为从数据写入用户设备开始到当前时间的天数,xi可以通过第i条访问记录的第一时间信息计算得到,f(xi)表示第i条访问记录对应的第一时间衰减系数,Ai表示第i条访问记录中的访问热度值,f(xi)*Ai表示第i条访问记录中的访问记录的第一衰减值。
示例性的,以表一所示的访问记录为例,若当前时间为2019年10月5日,则m=5。则对于当前时间该待分类数据的第一热度值为:
Figure BDA0002746376180000213
化简后可得:
V=f(4)+f(3)+f(0) (8)
通过上述第一热度值的计算公式(6),可以根据各个访问记录对应的第一时间衰减系数对各个访问记录对应的访问热度值进行加权求和,从而得到第一热度值。
在另一些可能的实现方式中,还可以根据第二热度值、第二时间衰减系数以及各个访问记录对应的第一时间衰减系数以及访问热度值计算第一热度值。
第二热度值可以为预先设定的初始热度值,或者,第二热度值也可以为上一次求得的第一热度值,即最近一次的第一热度值。第二时间衰减系数为第二热度值对应的时间衰减系数。第二时间衰减系数可以根据第二热度值的对应的第二时间信息计算得到,第二时间信息为预设时间段的起始时间。例如,预设时间段为2019年10月1日至2019年10月5日,则第二时间信息为预设时间段的起始时间,即2019年10月1日。第二时间衰减系数可以选择与第一时间衰减系数相同的计算公式进行计算,或者也可以选择其他计算公式作为第二时间衰减函数进行计算,第二时间衰减系数的具体计算方式可以根据实际情况进行设置。将第二时间衰减系数与所述第二热度值相乘,可以得到第二衰减值。
在一些实施例中,根据第二热度值、第二时间衰减系数以及各个访问记录对应的第一时间衰减系数以及访问热度值计算第一热度值的公式可以表示为:
Figure BDA0002746376180000221
其中,l表示第二热度值的记录时间与当前时间的时间间隔,l可以通过第二时间信息计算得到,f(l)表示第二时间衰减系数,V2表示第二热度值,f(l)*V2表示第二衰减值。
同时,由于第二热度值为初始热度值或上一次求得的第一热度值,因此,为了便于下一次第一热度值的计算,计算得到第一热度值之后,可以将第二热度值更新为第一热度值。
在公式(9)所示的第一热度值的计算公式中,除了考虑访问热度值以外,还考虑第二热度值,第二热度值为预先设定的初始热度值,或者,第二热度值也可以为上一次求得的第一热度值,即最近一次的第一热度值。
示例性的,参见表一所示的访问记录,若2019年10月1日为该数据的首次录入时间,该数据在录入时预先设置有一个初始热度值5作为第二热度值,当前时间为2019年10月5日,预设时间段为2019年10月1日至2019年10月5日,第二时间信息为2019年10月1日,则m=5,l=5-1=4,对于2019年10月5日该待分类数据的第一热度值为:
Figure BDA0002746376180000222
化简后可得:
V=f(4)*6+f(3)+f(0) (11)
计算得到第一热度值后,为了便于下一次计算,可以将第二热度值更新为第一热度值。此时,第二热度值被更新为f(4)*6+f(3)+f(0),而非初始热度值5。
假设该文件后续分别在2019年10月6日,2019年10月7日,2019年10月8日被访问,则对应的访问记录可以如表二所示。
表二
第一时间信息 10月6日 10月7日 10月8日 10月9日 10月10日
访问热度值 1 1 1 0 0
若当前时间为2019年10月10日,预设时间段为2019年10月6日至2019年10月10日,第二时间信息为2019年10月6日,第二热度值被更新为f(4)*6+f(3)+f(0),则m=5,l=10-6=4,对于当前时间该待分类数据的第一热度值为:
Figure BDA0002746376180000231
化简后可得:
V=f(4)2*6+f(3)*f(4)+f(0)*f(4)+f(4)+f(3)+f(2) (13)
在当前的数据分类方法中,如LFU算法,通常认为久远的数据访问记录和近期的数据访问记录拥有相同的热度效用,这显然是不合理,容易导致历史数据影响未来数据的缓存污染效应。
而在本实施例的数据分类方法中,根据待分类数据的各个访问记录中的访问热度值计算第一热度值,第一热度值与用户的历史访问情况相关,可以避免偶发性的访问对缓存造成污染。
同时,本实施例的方法认为近期的数据访问记录应当比久远的数据访问记录拥有更高的热度。为此,本实施例的方法在计算第一热度值的过程中,引入了时间衰减系数。第一时间衰减系数和第二时间衰减系数表示访问热度值以及第二热度值的效用衰减情况。将第一时间衰减系数与对应的访问热度值相乘可以得到第一衰减值,以及将第二时间衰减系数与第二热度值相乘可以得到第二衰减值。第一衰减值表示访问热度值的实际热度效用,以及第二衰减值表示第二热度值的实际热度效用。
例如,将上述公式(1)中的T设置为30,则公式(1)对应的函数曲线如图2所示。当T设置为30时,时间衰减系数在最初的15天维持较高的水平,时间衰减系数大于或等于0.8;时间衰减系数在超过15天后会急剧下降,在90天后时间衰减系数降至0.1并逐步趋于0。时间衰减系数越小,则表示热度效用衰减越严重。将访问热度值以及第二热度值与对应的时间衰减系数相乘,则时间越久远的热度值衰减的越严重,时间越近的热度值衰减的越轻,极大地减轻了历史数据影响未来数据的缓存污染效应,提高了第一热度值的准确性。
S104、根据所述第一热度值确定所述待分类数据的热度类别。
计算得到待分类数据的第一热度值之后,可以根据第一热度值以及热度类别的划分方式确定待分类数据的热度类别。
在一些可能的实现方式中,可以设置预设热度阈值。将第一热度值大于预设热度阈值的待分类数据划分为热数据,将第一热度值小于或等于预设热度阈值的待分类数据划分为冷数据。
在另一些可能的实现方式中,可以设置第一预设热度阈值和第二预设热度阈值,第一预设热度阈值大于第二预设热度阈值。将第一热度值大于第一预设热度阈值的待分类数据划分为热数据;将第一热度值小于或等于第一预设热度阈值,且第一热度值大于第二预设热度阈值的待分类数据划分为温数据;将第一热度值小于或等于第二预设热度阈值的待分类数据划分为冷数据。
在另一些可能的实现方式中,还可以设置更多的预设热度阈值,根据各个预设热度阈值划分多种热度类别,将第一热度值与各个预设热度阈值进行比较,从而确定待分类数据的热度类别。
在一些可能的实现方式中,上述的预设热度阈值可以为固定值。例如,用户可以将第一预设热度阈值设定为20,将第二预设热度阈值设定为10,则第一热度值大于20的待分类数据为热数据;第一热度值小于或等于20,且第一热度值大于10的待分类数据为温数据;第一热度值小于10的待分类数据为冷数据。
在另一些可能的实现方式中,上述预设热度阈值可以非固定值。在计算出各个待分类数据的第一热度值后,可以将根据预设规则将某一个或某一些第一热度值设置为预设热度阈值。例如,用户可以将第一热度值最高的前20%的待分类数据划分为热数据,将第一热度值最低的后20%的待分类数据划分为冷数据,将第一热度值排在20%-80%的待分类数据划分为温数据,则第一预设热度阈值为排在20%的第一热度值,第二预设热度阈值为排在80%的第一热度值。第一预设热度阈值和第二预设热度阈值会随着排在20%以及排在80%的第一热度值的变化而变化。
在另一些可能的实现方式中,也可以按照比例确定待分类数据的热度类别,并不设置预设热度阈值。例如,用户可以将第一热度值最高的前20%的待分类数据划分为热数据,将第一热度值最低的后20%的待分类数据划分为冷数据,将第一热度值排在20%-80%的待分类数据划分为温数据,但是,此时并不设置预设热度阈值,只是按照比例选取热数据、温数据和冷数据。
需要说明的是,上述描述中的热数据、温数据、冷数据只是一种相对的描述方式。热数据表示用户最为常用的数据所对应的热度类别;冷数据表示用户最不常用的数据所对应的热度类别;温数据表示介于热数据和冷数据之间的热度类别。热度类别的具体划分方式可以根据实际情况进行设置,热度类别除了划分为热数据和冷数据这两类,以及划分为热数据、温数据和冷数据这三类之外,还可以根据实际需要设置更多的热度类别。
确定了待分类数据的热度类别之后,终端设备可以对所述待分类数据执行与所述热度类别对应的数据管理操作。
在一些实施例中,终端设备可以针对本设备的数据进行数据冗余备份。在另一些实施例中,上述终端设备可以作为分布式存储系统中一个终端设备,与分布式存储系统中的其他终端设备共同进行数据冗余备份。
当终端设备针对本设备的数据进行数据冗余备份时,终端设备可以为不同热度类别的数据设置相应的数据管理操作。在终端设备确定了上述待分类数据的热度类别之后,可以对待分类数据执行与其热度类别相对应的数据管理操作。
其中,用户可以将一个或多个终端设备设置为数据备份终端。当终端设备确定了待分类数据的热度类别之后,终端设备可以将热度类别为热数据的待分类数据保留在本地的存储空间,并发送一份热数据的备份数据至上述数据备份终端进行备份。
热数据为用户较为常用的数据,将热数据备份至数据备份终端,不仅可以提高热数据的容错性能,并且可以方便用户在上述数据备份终端调用热数据。
以图3、图4和图5所示的场景为例。如图3所示,用户拥有终端设备301和终端设备302。终端设备301为应用上述数据分类方法的终端设备,终端设备302为用户指定的数据备份终端。
终端设备301通过上述数据分类方法确定了热度类别为热数据的数据集A之后,可以将数据集A发送至终端设备302进行备份。
终端设备302接收到数据集A后,将数据集A存储至本地的存储器中。
如图4所示,当用户因为出差等原因需要使用终端设备302进行工作时,如果需要调用数据集A中的数据,终端设备302可以直接从本地的存储器上调用该数据,无需与终端设备301进行数据交互。即使终端设备301与笔记本302之间数据交互通道断开,也不会影响用户在终端设备302上使用数据集A中的数据进行工作。
如图5所示,如果终端设备301存储的数据集A中的数据因意外因素丢失,或用户希望对终端设备301存储的数据集A进行校验时,可以让终端设备302发送数据集A至终端设备301。终端设备301可以根据终端设备302发送的数据集A对本地存储的数据集A进行数据恢复或校验。
综上,将热度类别为热数据的待分类数据发送至数据备份终端进行备份,可以提高热数据的容错性能,实现多个备份之间的相互校验。并且,在数据备份终端中备份数据还可以为数据备份终端提供预读取功能。当用户需要在数据备份终端上调用这部分热数据时,无需频繁地与当前终端设备进行数据交互,数据备份终端可以直接从本地存储的数据中调用用户所需的数据。
在对热度类别为温数据和冷数据的待分类数据进行管理时,由于温数据和冷数据的数据量较大,如果将温数据和冷数据备份至其他终端设备,会占用其他终端设备设备较多的存储空间。
因此,终端设备可以对温数据和冷数据进行纠删码编码,通过纠删码编码的方式对温数据和冷数据进行数据冗余备份。
在一些实施例中,终端设备可以将温数据和冷数据进行混合编码。终端设备选取第一预设比例的温数据作为第一备份数据,将第一备份数据与冷数据进行纠删码编码,得到第一校验数据。然后,终端设备可以将上述冷数据发送至第一指定终端,将第一校验数据发送至第二指定终端。
剩余部分的温数据则可以拆分成第二备份数据和第三备份数据,终端设备对第二备份数据和第三备份数据进行纠删码编码,得到第二校验数据。然后,终端设备可以将第二校验数据发送至第三指定终端,并将第二备份数据的备份数据发送至第四指定终端。
之后,终端设备可以删除本地存储的第一校验数据、第二校验数据和热度类别为冷数据的待分类数据。
终端设备将温数据和冷数据进行混合编码,可以保证上述冷数据的完整性,并提高温数据和冷数据的容错性能。
上述第一预设比例可以根据实际情况进行设置。例如,在一些实施例中,假设待分类数据包括20%的热数据、60%的温数据和20%的冷数据。此时,可以将第一预设比例设置为20%,从待分类数据中选择20%的温数据作为第一备份数据(可以理解为选取当前60%的温数据中的1/3),使得第一备份数据的数据量与冷数据的数据量一致,以便第一备份数据和冷数据进行异或(exclusive OR,XOR)编码,得到第一校验数据。另外40%的温数据则独立进行纠删码编码,得到第二校验数据。或者,用户也可以根据实际情况将第一预设比例设置为10%,40%,50%等数值。此时,第一备份数据的数据量和冷数据的数据量不一致,终端设备可以用0对第一备份数据进行补齐,或者用0对冷数据进行补齐,使得第一备份数据和冷数据的数据量一致,以便第一备份数据与冷数据进行异或编码。
在另一些实施例中,温数据和冷数据也可以独立进行纠删码编码。此时,终端设备可以对温数据独立进行纠删码编码,得到第三校验数据。
例如,当采用异或编码时,可以将温数据分成相等的两份子数据,每一份子数据中包含50%的温数据,两份子数据进行纠删码编码,得到第三校验数据;或者,两份子数据的数据量不一致,比如第一份子数据包含60%的温数据,第二份子数据包含40%的温数据,则第二份子数据应当用0补齐,使得第二份子数据包含的数据量与第一份子数据包含的数据量一致,然后再对两份子数据进行纠删码编码,得到第三校验数据。当采用里德-所罗门(Reed-Solomon,RS)编码时,不需要对温数据进行分割,可以直接将温数据与预设生成矩阵进行运算,得到第三校验数据。
在本实施例中,可以将温数据保存在当前的终端设备中,将第三校验数据发送至其他终端设备。不仅可以确保温数据在当前终端设备上的完整性和访问性能,方便用户读取数据,并且,还可以提高温数据的容错性能。如果当前终端设备上存储的温数据因为意外因素部分损毁,可以从其他终端设备上获取第三校验数据,根据第三校验数据对温数据进行还原。
在一些实施例中,可以只将第三校验数据发送至第五指定终端。当存储在当前终端设备上的温数据出现部分损毁时,可以根据未损毁的温数据和第三校验数据对损坏的温数据进行还原。但是,如果存储在当前终端设备上的温数据全部丢失,则只根据第三校验数据无法还原温数据。例如,参见上一示例,当采用异或编码时,若第一份子数据损坏,终端设备可以使用第二份子数据和第三校验数据还原第一份子数据;若第二份子数据损坏,终端设备可以使用第一份子数据和第三校验数据还原第一份子数据;若第一份子数据和第二份子数据都损坏了,则终端设备仅凭第三校验数据无法还原第一份子数据和第二份子数据。当采用RS编码时,则可以根据未损毁的温数据和第三校验数据,通过预设的生成矩阵对损毁的温数据进行还原。
在另一些实施例中,除了将第三校验数据发送至第五指定终端之外,还可以选取第二预设比例的温数据作为第四备份数据,第二预设比例可以根据实际情况进行设置。例如,待分类数据中包含60%的温数据,第二预设数据可以设置为20%,从待分类数据中选取20%的数据作为第四备份数据(可以理解为选取当前60%的温数据中的1/3)。
之后,终端设备对第四备份数据以及第四备份数据以外的温数据进行纠删码编码,得到第三校验数据,并将第三校验数据和第四备份数据分别发送到不同的指定终端进行存储。
例如,当采用异或编码时,终端设备可以选取上述示例中的第一份子数据或第二份子数据作为第四备份数据;当采用RS编码时,终端设备可以任意选取预设比例的温数据作为第四备份数据。
终端设备将第三校验数据发送至第五指定终端,将第四备份数据发送至第六指定终端。当存储在当前终端设备上的温数据全部被损毁时,终端设备可以从第五指定终端获取第三校验数据,从第六指定终端获取备份的温数据(即第四备份数据),根据第三校验数据和第四备份数据对损毁的温数据进行还原。
以图6、图7、图8和图9所示的场景为例。用户拥有终端设备601和终端设备602。终端设备601为应用上述数据分类方法的终端设备,终端设备602为用户指定的第五指定终端。
终端设备601通过上述数据分类方法确定了热度类别为温数据的数据集B之后,可以对数据集B进行纠删码编码,得到第三校验数据。终端设备601将第三校验数据发送至终端设备602。
当终端设备601上存储的数据集B出现部分损毁时,可以让终端设备602将第三校验数据发送至终端设备601上。终端设备601根据第三校验数据以及数据集B中未损毁的数据对数据集B中损毁的数据进行还原,确保了用户可以继续正常调用数据集B中的数据。
此外,用户拥有终端设备801和终端设备802。终端设备801为应用上述数据分类方法的终端设备,终端设备802为用户指定的第五指定终端,终端设备803为用户指定的第六指定终端。
终端设备801通过上述数据分类方法确定了热度类别为温数据的数据集B之后,可以从数据集B中选取部分数据作为数据集C(第四备份数据),对数据集C以及数据集C以外的温数据进行纠删码编码,得到第三校验数据。终端设备801将第三校验数据发送至终端设备802,将数据集C发送至终端设备803。
当终端设备801上存储的数据集B全部损毁时,可以让终端设备802将第三校验数据发送至终端设备801上,让终端设备803将数据集C发送至终端设备801。终端设备801根据第三校验数据以及数据集C对数据集B进行还原,确保了用户可以继续正常调用数据集B中的数据。
或者,也可以让终端设备802将第三校验数据发送至终端设备803,终端设备803根据数据集C和第三校验数据对数据集B进行还原,并在还原后将数据集B发送至终端设备801,确保了用户可以继续在终端设备801上正常调用数据集B中的数据。
综上,将温数据存储在当前的终端设备,将第三校验数据发送至其他终端设备可以确保温数据在当前终端设备上的完整性和访问性能,方便用户读取数据。并且,如果当前终端设备上存储的温数据因为意外因素损毁,可以从其他终端设备上获取第三校验数据,根据第三校验数据对温数据进行还原,从而提高温数据的容错性能。
此外,终端设备还可以对热度类别为冷数据的待分类数据独立进行纠删码编码,得到第四校验数据。
在一些实施例中,可以将冷数据拆分成第五备份数据和第六备份数据,将第五备份数据和第六备份数据做纠删码编码得到第四校验数据。然后,终端设备可以将第五备份数据发送至第七指定终端,将第六备份数据发送至第八指定终端,将第四校验数据发送至第九指定终端,并删除本地存储的热度类别为冷数据的待分类数据以及第四校验数据。当需要调用冷数据时,可以从第七指定终端或第八指定终端中获取备份的冷数据。当第五备份数据或第六备份数据损毁时,可以根据第四校验数据以及未损毁的第五备份数据或第六备份数据对损毁的冷数据进行还原。
在另一些实施例中,终端设备也可以将冷数据整体发送至第十指定终端,将第四校验数据发送至第十一指定终端,并删除本地存储的热度类别为冷数据的待分类数据以及第四校验数据。当需要调用冷数据时,可以从第十指定终端中获取冷数据。当第十指定终端中的冷数据出现部分损毁时,可以根据第四校验数据以及未损毁的冷数据对损毁的冷数据进行还原。但是,当第十指定终端中存储的冷数据全部损毁时,只根据第四校验数据无法进行还原。
由于冷数据为用户较为不常用的数据,因此,可以将冷数据和第四校验数据发送至其他终端设备进行保存,删除当前终端设备中的冷数据和第四校验数据,节约当前终端设备的存储空间。
以图10、图11、图12和图13所示场景为例。用户拥有终端设备1001、终端设备1002、终端设备1003和终端设备1004。终端设备1001为应用上述数据分类方法的终端设备,终端设备1002为用户指定的第七终端设备,终端设备1003为用户指定的第八终端设备,终端设备1004为用户指定的第九终端设备。
终端设备1001通过上述数据分类方法确定了热度类别为冷数据的数据集D之后,可以将数据集D拆分成数据集E和数据集F,对数据集E和数据集F进行纠删码编码,得到第四校验数据。终端设备1001将第四校验数据发送至终端设备1002,将数据集E发送至终端设备1003,将数据集F发送至终端设备1004。
当数据集E完全损毁时,可以根据数据集F和第四校验数据对数据集E进行还原。当数据集F完全损毁时,可以根据数据集E和第四校验数据对数据集F进行还原。
上述数据还原过程可以发生在终端设备1001、终端设备1002、终端设备1003和终端设备1004中的任意一个终端设备上。
用户拥有终端设备1201和终端设备1202。终端设备1201为应用上述数据分类方法的终端设备,终端设备1202为用户指定的第十指定终端,终端设备1203为用户指定的第十一指定终端。
终端设备1201通过上述数据分类方法确定了热度类别为冷数据的数据集D之后,可以对数据集D进行纠删码编码,得到第四校验数据。终端设备1201将数据集D发送至终端设备1202,将第四校验数据发送至终端设备1203,并且删除终端设备1201上存储的数据集D和第四校验数据,从而节约终端设备1201的存储空间。
当用户需要在终端设备1201上调用数据集D中的数据时,终端设备1201可以从终端设备1202上获取数据集D的数据。如果数据集D存储在终端设备1202时出现损毁情况,终端设备1202可以根据终端设备1203存储的第四校验数据对数据集D进行还原,然后将终端设备1201调用的数据发送至终端设备1201。或者,终端设备1202也可以将数据集D发送至终端设备1201,终端设备1203将第四校验数据发送至终端设备1201,终端设备1201根据第四校验数据对数据集D进行还原,从还原后的数据集D中调用用户所需的数据。
综上,将冷数据和第四校验数据存储在其他终端设备可以节约当前终端设备的存储空间。并且,如果冷数据出现了损毁情况,可以根据第四校验数据对冷数据进行还原,提高了冷数据的容错性能。
同时,上述提到的数据备份终端以及第一指定终端至第十一指定终端可以根据实际情况进行设置。用户可以根据实际情况的需求应用其中的部分或全部终端设备。在设置上述终端设备的过程中,用户可以将数据备份终端以及第一指定终端至第十一指定终端均设置为不同的终端设备。或者,用户也可以将部分功能相近的指定终端设备设置为相同的终端设备。例如,第二指定终端、第四指定终端、第五指定终端、第九指定终端的功能相近,用户可以将第二指定终端、第四指定终端、第五指定终端、第九指定终端设置为两个或两个以上不同的终端设备,或者,用户也可以将某一个终端设备同时设置为第二指定终端、第四指定终端、第五指定终端、第九指定终端。
当上述终端设备与分布式存储系统中的其他终端设备共同进行数据冗余备份时,分布式存储系统中的每个终端设备可以作为一个编码节点或存储节点,分布式存储系统中的编码节点可以采用以下数据备份方法进行数据冗余备份。
首先,示例性地对本申请实施例提供的数据备份方法适用的一种分布式存储系统进行介绍。如图14所示,若存在终端设备1401、终端设备1402、终端设备1403、终端设备1404、终端设备1405,且这些终端设备可以通信组网,则这些终端设备可以形成分布式存储系统1400。
在分布式存储系统1400中,终端设备1401、终端设备1402、终端设备1403、终端设备1404、终端设备1405可以作为存储节点存储各自的数据,然后利用纠删码容错技术对这些终端设备中的数据进行数据冗余备份,生成校验数据并存储。
当分布式存储系统1400中存在终端设备发生故障,例如丢失或损坏时,分布式存储系统1400可以利用其它终端设备中存储的原始数据和校验数据对故障设备中的数据进行恢复,从而保证分布式存储系统1400中各个终端设备可以为用户提供可靠的数据服务。
在上述分布式存储系统1400中,各个终端设备可以是用户设备(user equipment,UE)、接入终端、终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、无线网络设备、用户代理或用户装置。终端设备还可以是蜂窝电话(cellularphone)、无绳电话、会话启动协议(session initiation protocol,SIP)电话、智能电话(smart phone)、无线本地环路(wireless local loop,WLL)站、个人数字处理(personaldigital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它设备、车载设备、可穿戴设备、无人机设备或物联网、车联网中的终端以及未来网络中的任意形态的终端、中继用户设备或者未来演进的公用陆地移动通信网络(publicland mobile network,PLMN)中的终端设备等,本申请实施例对终端设备的类型不作任何限制。
并且,在上述分布式存储系统1400中,各个终端设备相互之间可以采用有线通信和/或无线通信的方式进行通信。其中,无线通信方式包括长距离无线通信和短距离无线通信,具体可以包括:微波通信、卫星通信、无线保真(wireless fidelity,Wi-Fi)通信、蓝牙(bluetooth)通信、紫蜂(ZigBee)通信、红外线(infrared)通信、近场通信(near fieldcommunication,NFC)等。
此外,在上述分布式存储系统1400中,可以根据终端设备在冗余备份过程中所实现的功能将终端设备分为存储节点、编码节点以及校验节点。各类节点的相关说明如下:
存储节点用于存储原始数据,原始数据可以包括已备份数据和待备份数据。例如,每个终端设备可以保存各自的照片、视频、音频、文档等文件,记忆各自的应用数据、设备参数等。在存储节点中,已经参与数据冗余备份的数据为已备份数据,需要进行数据冗余备份的数据为待备份数据。此外,在存储节点中还可能存在未进行数据冗余备份,且无需进行数据冗余备份的非备份数据。
需要说明的是,分布式存储系统1400中的每个终端设备均可以作为独立的存储节点。
编码节点具有计算功能,可以应用本申请实施例提供的数据备份方法,对各个终端设备上的待备份数据进行编码,以生成校验数据。编码节点可以为分布式存储系统1400中的多个终端设备中的一个。编码节点可以由用户指定,也可以默认为由计算能力较强的设备担当。
在进行数据冗余备份时,编码节点可以从各个存储节点读取待备份数据,待备份数据为需要备份数据或需要容错的数据。然后,编码节点可以采用预设的纠删码算法计算上述待备份数据的校验数据,并将校验数据发送至校验节点进行备份。
在一些实施例中,编码节点自身也可以作为存储节点存储数据,当编码节点有需要备份的数据时,编码节点可以将自身的待备份数据和其他设备上的待备份数据进行编码计算。
在另一些实施例中,编码节点也可以不是存储节点。此时,编码节点获取其他设备上的待备份数据进行编码计算。
校验节点用于存储编码节点生成的校验数据。校验数据用于在分布式存储系统1400中的终端设备发生故障时,恢复故障设备上的原始数据。
在一些实施例中,校验节点可以由用户指定。例如,用户可以指定实施上述数据分类方法的终端设备作为编码节点。
在另一些实施例中,校验节点可以默认由优先级最高的终端设备担当。其中,终端设备的优先级可以根据设备可靠性、在线时间以及存储空间中的一个或多个条件确定。然后,编码节点根据上述优先级从分布式存储系统1400中的多个终端设备中确定校验节点。
设备可靠性可以根据终端设备的易丢失程度和/或易损坏程度确定。终端设备越容易丢失,或终端设备越容易损坏,则该终端设备的设备可靠性越低。
示例性的,分布式存储系统1400可以选择可靠性较高(例如不易丢失或损坏)、在线时间长且存储空间充足的终端设备作为校验节点。
在另一些实施例中,校验节点也可以是分布式存储系统1400中专门用于存储校验数据的终端设备。例如,如图14所示,分布式存储系统1400还可以包括云或存储设备1406,该云或存储设备1406专门用于存储编码节点生成的校验数据,从而提高存储校验数据的安全性和可靠性。
示例性的,云或存储设备1406可以包括:云服务器、云存储设备、网络附属存储(network attached storage,NAS)等。其中,NAS是指连接在网络上,具备资料存储功能的装置,也可以称为“网络存储器”。NAS是一种专用数据存储服务器,以数据为中心,集中管理数据,可以释放带宽、提高性能、降低总拥有成本、保护投资。
综上,校验节点可以是分布式存储系统所包括的多个终端设备中的至少一个。校验节点可以由用户指定,或者,校验节点也可以是默认由优先级最高的终端设备担当,或者,校验节点也可以是专门用于存储校验数据的终端设备。
为方便理解,以下仍以图14为例进行举例说明。在图14中,实线用于表示原始数据的传输,虚线用于表示校验数据的传输。分布式存储系统1400中包括多个终端设备,例如终端设备1401、终端设备1402、终端设备1403、终端设备1404、终端设备1405。其中,终端设备1402、终端设备1403、终端设备1404、终端设备1405均有待备份数据。
此时,在本申请实施例中可以选择终端设备1401作为编码节点。在进行冗余备份时,终端设备1401从其他终端设备(即终端设备1402、终端设备1403、终端设备1404、终端设备1405)获取待备份数据,并利用预设的纠删码算法对待备份数据进行编码,生成校验数据。
之后,终端设备1401可以将校验数据保存在本地,或者,终端设备1401也可以将校验数据发送至分布式存储系统1400中的其他终端设备上进行存储。例如,终端设备可以将校验数据发送至终端设备1402和/或终端设备1403进行存储。
可选地,分布式存储系统1400还可以包括云或存储设备1406。云或存储设备1406专门用于存储校验数据。终端设备1401在生成校验数据之后,可以将校验数据发送给云或存储设备1406进行存储。此时,在本次数据冗余备份的过程中,终端设备1401为编码节点,终端设备1402、终端设备1403、终端设备1404以及终端设备1405为存储节点,云或存储设备1406为校验节点。
需要说明的是,以上关于分布式存储系统1400的描述仅为本申请实施例的示意性举例。在实际应用的过程中,分布式存储系统1400可以拥有比图14中示出的5个终端设备更多或更少的终端设备。例如,分布式存储系统1400可以拥有2个终端设备、3个终端设备、4个终端设备、6个终端设备、8个终端设备等。
还应理解的是,分布式存储系统1400中所包含的多个终端设备,可以是相同类型的终端设备,也可以是不同类型的终端设备,本申请实施例对分布式存储系统1400中包含的终端设备的类型不作任何限制。
另外,分布式存储系统中的多个终端设备可以属于同一个用户,或者,也可以属于不同的用户,只要上述多个终端设备可以通过一定的通信方式(例如蓝牙连接、WI-FI连接、登录同一账号等)组网并相互通信即可。
此外,图14中示出的分布式存储系统1400中的终端设备均处于在线状态。在一些其他的实施例中,分布式存储系统1400还可以包括不在线的终端设备(即离线设备)。当离线设备上线时,这些离线设备也可以参与到上述数据冗余备份的过程中。
请参阅图15,图15示出了本申请实施例提供的数据备份方法的流程图。图15所示的数据备份方法可以应用于分布式存储系统,例如,该数据备份方法可以应用于图14所示的分布式存储系统1400。
本申请实施例中的分布式存储系统包括多个可以相互通信的终端设备,上述数据备份方法可以由多个终端设备中任意一个具备计算能力的终端设备执行,执行上述数据备份方法的终端设备可以称为编码节点。
需要说明的是,分布式存储系统中的多个可以相互通信的终端设备可以理解为这些终端设备具备与其他终端设备通信的能力。但是,终端设备之间能否进行通信需要根据终端设备的设备状态进行确定。上述设备状态包括在线状态和下线状态。
当分布式存储系统中的终端设备处于在线状态时,该终端设备(即在线设备)可以与分布式存储系统中的其他处于在线设备相互通信。
当分布式存储系统中的终端设备处于下线状态时,该终端设备(即离线设备)不可以与分布式存储系统中的其他终端设备相互通信。
以下,将对图15所示数据备份方法进行详细介绍:
S1501、编码节点确定条带长度。
在本申请实施例中,多个可以相互通信的终端设备可以组网形成分布式存储系统。上述编码节点为分布式存储系统中在线设备中一个终端设备,编码节点用于执行本申请实施例提供的数据备份方法。
编码节点为具备计算能力的终端设备。如上所述,编码节点可以由用户指定,也可以默认为由计算能力较强的设备担当。
在一些可能的实现方式中,编码节点可以由用户指定。例如,在多个终端设备组网形成分布式存储系统时,用户当前使用的终端设备可以通过应用程序展示选择界面。选择界面用于展示分布式存储系统中的多个终端设备,用户可以基于选择界面展示的多个终端设备选择执行上述数据备份方法的编码节点。
在另一些可能的实现方式中,编码节点也可以是默认为由计算能力较强的设备担当。例如,在多个终端设备组网形成分布式存储系统时,各个终端设备相互通信进行协商,并根据预设规则,选择计算资源最大的终端设备作为编码节点,或者,选择计算资源大于预设计算资源阈值的终端设备作为编码节点,或者,选择预设类型的终端设备(例如智能手机)作为编码节点。
并且,在一些实施例中,编码节点可以是固定不变的。例如,假设某个终端设备常在线(或在线时间最长)且计算能力强,则可以将该终端设备设置为固定的编码节点,每次进行数据冗余备份时,都选择该终端设备作为编码节点。
在另一些实施例中,编码节点也可以是每次进行数据冗余备份时,根据分布式存储系统中各个在线设备的计算资源、在线时长以及存储资源等参数进行确定。
在本申请实施例中,编码节点可以结合条带化技术以及纠删码技术,对分布式存储系统中的待备份数据进行数据冗余备份,数据冗余备份的过程为编码节点使用预设的纠删码算法对待备份数据进行纠删码编码的过程。
条带化技术是指将一块连续的数据分成很多小部分并将他们分别存储到不同的物理节点例如磁盘、硬盘、服务器或其他地理位置,从而将输入/输出(input/output,I/O)的负载均衡到多个物理节点上,从而避免多个进程同时访问数据的多个不同部分时造成冲突。
以磁盘系统为例,条带(stripe)(也称数据条带)是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上,这样能够使多个进程同时访问数据的多个不同部分时不会造成磁盘冲突。一个条带横跨所有的数据磁盘,每个磁盘存储条带的一部分,所有磁盘上存储的数据共同组成一个完整的副本。其中,条带长度(stripelength)是指同时可以并发读或写的条带数量或一个条带包含的扇区或块的个数,可以等于条带横跨的磁盘数量。例如一个经过条带化的,具有5块物理硬盘的阵列的条带长度就是5。条带深度(stripe depth)指的是写在每块磁盘上的条带数据块的大小。
编码节点在进行纠删码编码时,条带是指纠删码条带,纠删码条带中包括参与纠删码编码的多个原始数据块。
条带长度是指纠删码条带中原始数据块的数量。条带深度是指纠删码条带中原始数据块的数据量。
在进行纠删码编码时,编码节点可以先确定纠删码条带的条带长度以及纠删码条带的条带深度。
编码节点确定纠删码条带的条带长度的方式有多种,编码节点可以根据实际场景的需求选择合适的方式确定条带长度。
在一些可能的实现方式中,编码节点可以根据分布式存储系统中在线设备的数量确定纠删码条带的条带长度,纠删码条带的条带长度等于分布式存储系统中在线设备的数量。
由于分布式存储系统中,只有在线设备可以参与数据冗余备份的过程,因此,编码节点可以将在线设备的数量确定为纠删码条带的条带长度。此时,分布式存储系统中的每个在线设备都可以作为一个独立的存储节点存储各自的数据,即每个在线设备存储纠删码条带的一部分。
在另一些可能的实现方式中,编码节点可以根据分布式存储系统中待备份设备的数量确定纠删码条带的条带长度,纠删码条带的长度等于分布式存储系统中待备份设备的数量。
上述待备份设备为分布式存储系统的在线设备中,存在待备份数据的终端设备。
由于在线设备中,可能只有部分终端设备存在需要备份的数据(即待备份数据),其他终端设备没有需要备份的数据,或需要备份的数据为0。因此,编码节点可以将待编码设备的数量确定为纠删码条带的条带长度。此时,纠删码条带由待备份设备中的待备份数据组成,每个待备份设备存储纠删码条带的一部分,且每个待备份设备存储的待备份数据大于0。
编码节点在确定待备份设备的数量时,编码节点可以根据各个在线设备的元数据确定该在线设备是否存在待备份数据和/或待备份数据的数据量。
在本申请实施例中,分布式存储系统中的每个终端设备可以包括其他终端设备的元数据。该元数据用于指示其他终端设备是否存在待备份数据和/或待备份数据的数据量。
元数据(metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),是对数据及信息资源的描述性信息。元数据是一种电子式目录,主要是描述数据属性(property)的信息,用于支持如指示存储位置、历史数据、资源查找、文件记录等功能。
因此,当分布式存储系统中某个终端设备的数据信息发生变化时,该终端设备可以将数据信息变化的内容通知给分布式存储系统中的其他终端设备。其他终端设备可以通过该终端设备对应的元数据以获取相应的内容,例如,数据存储位置变化,文件大小变化,文件的新建、更新、删除等等,方便其他终端设备根据元数据确定该终端设备上是否有待备份数据和/或待备份数据的数据量。
编码节点根据各个在线设备的元数据确定该在线设备是否存在待备份数据和/或待备份数据的数据量,并将存在待备份数据且待备份数据不为0的终端设备确定为待备份数据,从而确定待备份设备的数量。
在另一些可能的实现方式中,编码节点可以根据分布式存储系统中各个待备份数据的数据量确定纠删码条带的条带长度。
如果各个待备份设备的待备份数据的数据量均大于第一阈值,则纠删码条带的条带长度等于待备份设备的数量。
如果各个待备份设备的待备份数据中,存在一或多个待备份设备的待备份数据的数据量小于或等于第一阈值,则纠删码条带的长度小于待备份数据的数量。
此时,编码节点可以将上述一个或多个数据量小于或等于第一阈值的待备份数据进行合并,得到一个或多个数据量大于第一阈值的待备份数据。
例如,假设终端设备A的待备份数据、终端设备B的待备份数据、终端设备C的待备份数据以及终端设备D的待备份数据的数据量均小于第一阈值。编码节点可以将终端设备A的待备份数据和终端设备B的待备份数据合并为待备份数据E,将终端设备C的待备份数据和终端设备D的待备份数据合并为待备份数据F。待备份数据E和待备份数据F的数据量大于第一阈值。
或者,编码节点也可以将上述一个或多个数据量小于第一阈值的待备份数据与其他数据量大于第一阈值的待备份数据进行合并,得到一个或多个数据量大于第一阈值的待备份数据。
例如,假设终端设备A的待备份数据的数据量小于第一阈值,终端设备B的待备份数据的数据量大于第一阈值,则编码节点可以将终端设备A的待备份数据和终端设备B的待备份数据合并为待备份数据C。待备份数据C的数据量大于第一阈值。
上述第一阈值可以根据实际情况进行设置。例如,上述第一阈值可以设置为纠删码条带的条带深度的二分之一、三分之一、五分之三等,也可以设置为纠删码条带的条带深度的二倍、三倍等。
以上述第一阈值等于纠删码条带的条带深度为例。如果各个待备份设备的待备份数据的数据量相互之间差距不大,或者与纠删码条带的条带深度相差不大,则编码节点可以将每个待备份设备作为一个独立的存储节点存储待备份数据,且每个待备份设备对应的待备份数据独立参与纠删码编码。
如果存在部分待备份设备上的待备份数据与其他待备份数据的数据量相差较大,或者与纠删码条带的条带深度相差较大,则编码节点可以将部分待备份数据合并为一个或多个待备份数据参与纠删码编码,节省编码节点的计算资源。
通过上述方式,编码节点可以将至少两个待备份数据合并为一个待备份数据参与数据冗余备份(即纠删码编码)的过程。
在另一些可能的实现方式中,编码节点可以根据预设的纠删码算法的类型确定纠删码条带的条带长度。
当编码节点选用不同的纠删码算法时,纠删码条带的条带长度可能需要满足不同的约束条件。因此,编码设备在确定纠删码条带的条带长度时,可以根据选用的纠删码算法,确定相应的约束条件。然后,编码设备结合上述约束条件以及在线设备的数量,确定纠删码条带的长度。
例如,当预设的纠删码算法为RS编码的纠删码算法时,条带长度应当满足RS编码的纠删码算法对应的约束条件。当预设的纠删码算法为异或编码的纠删码算法时,条带长度应当满足异或编码的纠删码算法对应的约束条件。
编码节点除了确定纠删码条带的条带长度以外,还可以确定纠删码条带的条带深度。
在一些可能的实现方式中,分布式存储系统中,可能存在部分或全部的在线设备将各自保存的数据分块处理,并以数据块的形式进行存储。不同的终端设备在划分数据块时,划分的数据块的数据量可能相同,也可能不相同。
此时,编码节点可以获取各个存储节点的数据块划分方式中数据块的数据量,并将最大的数据块的数据量确定为的纠删码条带的条带深度。
在另一些可能的实现方式中,编码节点也可以将纠删码条带的条带深度设置为预设值。
例如,编码节点可以将纠删码条带的条带深度预先设置为1MB、2MB、5MB、10MB等数据量。
需要说明的是,纠删码条带的条带深度越小,表示纠删码条带的数据粒度越小,分块越小,编码节点的处理能力越强。
S1502、编码节点获取待备份数据。
如上所述,待备份数据存储在对应的待备份设备上,编码节点可以根据本地存储的其他设备的元数据,确定各个在线设备是否存在待备份数据和/或待备份数据的数据量。
因此,编码节点可以根据元数据确定待备份设备,并从各个待备份设备上读取相应的待备份数据。
在一些实施例中,在线设备中的每个终端设备均存在待备份数据。此时,编码节点可以从每个在线设备上读取每个在线设备对应的待备份数据。
在另一些实施例中,在线设备中的部分终端设备(即待备份设备)存在待备份数据,其余终端设备没有待备份数据。此时,编码节点可以从待备份设备上读取每个待备份设备对应的待备份数据。
编码节点在获取到待备份数据之后,可以将获取到的待备份数据读取至缓存中,以便对待备份数据进行后续处理。
在本申请实施例中,对待备份数据的内容和类型不作任何限制。
在一些实施例中,待备份数据可以为终端设备执行上述数据分类方法,确定待分类数据的热度类别之后,根据热度类别确定的需要备份的数据(例如温数据和冷数据)。
在另一些实施例中,待备份数据可以包括更新数据。更新数据是已备份数据经用户修改后得到的数据。
也即是说,在用户对已备份数据进行修改之后,存储节点可以将修改后的已备份数据作为新的待备份数据,重新进行数据冗余备份。
在另一些实施例中,待备份数据可以包括重组数据。重组数据是指与被用户删除的已备份数据处于同一纠删码条带上的其他已备份数据。
也即是说,当用户删除了某一存储节点的已备份数据之后,其他存储节点可以将与被删除的已备份数据处于同一条纠删码条带的其他已备份数据作为待备份数据,重新进行数据冗余备份。
这些重组数据在进行数据冗余备份时,可以依然处于同一条纠删码条带上,或者,也可以处于不同的纠删码条带上。
在另一些实施例中,如果用户对已备份数据进行了修改,则可以将修改后的数据(即更新数据)以及与被修改的已备份数据处于同一条纠删码条带的其他已备份数据作为新的待备份数据,重新进行冗余备份。
也即是说,如果用户对已备份的数据进行修改,且不将修改后的数据存储为新的副本,则校验节点需要将之前存储的与该被修改的已备份数据相关的校验数据删除,并将更新数据以及与被修改的已备份数据处于同一条纠删码条带的其他已备份数据作为新的待备份数据,重新进行冗余备份。
在另一些实施例中,待备份数据可以包括重编码数据。当某个或某些存储节点下线(即离线设备)时,其他终端设备可以将与离线设备上存储的已备份数据处于相同的纠删码条带的其他已备份数据为重编码数据。
也即是说,当某个终端设备退出分布式存储系统时,该终端设备上的已备份数据对应的纠删码条带中的其他已备份数据可以作为重编码数据,重新进行数据冗余备份。
S1503、编码节点根据纠删码条带的条带长度对待备份数据进行纠删码编码,得到校验数据。
在确定了纠删码条带的条带长度,并获取到待备份数据之后,编码节点可以根据条带长度对待备份数据进行纠删码编码,得到校验数据。并且,编码节点可以将上述分布式存储系统中多个终端设备共同进行数据冗余备份得到的校验数据定义为目标校验数据。
具体地,编码节点可以根据上述条带长度生成一条或多条纠删码条带。每条纠删码条带中存在与上述条带长度数量一致的原始数据块,每个原始数据块来自不同的待备份设备的待备份数据,每个原始数据块的数据量均为上述条带深度。
然后,编码节点通过预设的纠删码算法分别对各条纠删码条带进行纠删码编码,得到各条纠删码条带对应的校验数据。
在一些可能的实现方式中,部分或全部待备份设备可能将各自保存的待备份数据分块处理,以数据块的形式存储,编码节点获取到待备份数据为已进行分块处理的原始数据块。
此时,编码节点可以从各个待备份数据对应的原始数据块中选取与条带长度数量一致的原始数据块组成纠删码条带,纠删码条带中的每个原始数据块来自不同的待备份设备的待备份数据。
由于不同的待备份设备可能按照不同的数据量划分数据块,因此,可能存在部分或全部原始数据块的数据量小于上述条带深度。
例如,有的待备份设备可能按照0.5MB的数据量划分数据块,有的待备份设备可能按照0.7MB的数据量划分数据块,有的待备份设备可能按照1MB的数据量划分数据块,从而导致部分或全部待备份数据对应的原始数据块的数据量小于条带深度。
当纠删码条带中的原始数据块的数据量小于上述条带深度时,编码节点可以对这些数据量小于条带深度的原始数据块进行对齐处理,使得这些原始数据块的数据量补齐至条带深度。
并且,各个待备份数据对应的原始数据块的数量不一定相同,所以,可能存在部分纠删码条带的原始数据块的数量小于条带长度。如果存在原始数据块的数量小于条带长度的纠删码条带,则编码节点可以对该纠删码条带进行补零处理,用全是0的数据块作为原始数据块填充该纠删码条带,使得该纠删码条带的原始数据块的数量等于条带长度。
例如,假设待备份数据A对应的原始数据块的数量为3,待备份数据B对应的原始数据块的数量为2,待备份数据C对应的原始数据块的数量为3,条带长度为3。编码节点根据待备份数据A、待备份数据B以及待备份数据C组成3条纠删码条带,且第3条纠删码条带仅包含一个待备份数据A对应的原始数据块以及一个待备份数据C对应的原始数据块。第3条纠删码条带的原始数据块的数量为2,小于条带长度3。此时,编码节点可以对第3条纠删码条带进行补零处理,使得第3条纠删码条带的原始数据块的数量等于条带长度。
在另一些可能的实现方式中,编码节点获取到的待备份数据为未进行分块处理的数据。
此时,编码节点可以根据条带深度对上述待备份数据进行分块处理,得到各个待备份数据对应的原始数据块。
之后,编码节点可以从各个待备份数据对应的原始数据块中选取与条带长度数量一致的原始数据块组成纠删码条带,纠删码条带中的每个原始数据块来自不同的待备份设备的待备份数据。
由于待备份数据的数据量不一定是条带深度的整数倍,因此,部分原始数据块的数据量可能小于条带深度。
例如,假设某一待备份数据的数据量为2.3MB,条带深度为1MB,则该待备份数据可以划分为3个原始数据块,且第3个原始数据块的数据量为0.3MB,小于条带深度。
因此,如果存在原始数据块的数量小于条带长度的纠删码条带,则编码节点可以对数据量小于条带深度的原始数据块进行对齐处理,使得这些原始数据块的数据量补齐至条带深度。
并且,由于各个待备份数据的数据量不一定相同,因此,各个待备份数据划分数据块得到的原始数据块的数量不一定相同。所以,可能存在部分纠删码条带的原始数据块的数量小于条带长度。
如果存在原始数据块的数量小于条带长度的纠删码条带,则编码节点可以对该纠删码条带进行补零处理,使得该纠删码条带的原始数据块的数量等于条带长度。
上述对齐处理的方式可以根据实际情况进行选择。在本申请实施例中,将示例性地说明以下几种对齐处理的方式:
在一些实施例中,当原始数据块的数据量小于条带深度时,编码节点可以对该原始数据块取零补齐,使得该原始数据块的数据量等于条带深度。
在另一些实施例中,当存在一个或多个原始数据块的数据量小于条带深度,且这些原始数据块来自不同的待备份数据时,编码节点可以将这些原始数据块合并为一个或多个数据量等于条带深度的原始数据块。
在另一些实施例中,当存在多个来自不同的待备份设备的待备份数据小于上述第一阈值时,编码节点可以将这些待备份数据合并处理,得到一个或多个大于上述第一阈值的待备份数据,然后再对合并后的待备份数据进行条带化处理并参与纠删码编码。
编码节点对纠删码条带进行纠删码编码时,可以根据实际情况选择合适的纠删码算法。
例如,在一些实施例中,编码节点可以采用RS编码的纠删码算法进行编码。采用RS编码的纠删码算法可以容忍多个存储节点的数据丢失,提高用户的数据可靠性。在另一些实施例中,编码节点也可以采用异或编码的纠删码算法进行编码。采用异或编码的纠删码算法可以降低编码和解码的难度,并提高解码的准确性。
编码节点对纠删码条带进行纠删码编码之后,可以得到校验数据。然后,编码节点可以将校验数据发送至校验节点进行存储。
校验节点可以为云存储设备、网络附属存储NAS设备以及上述在线设备中的一个或多个终端设备。
在一些可能的实施例中,分布式存储系统中设置有专门用于存储校验数据的存储设备,该存储设备可以为云服务器、云存储器、网络附属存储NAS设备等等。
此时,编码节点在得到校验数据之后,可以将校验数据发送至上述专门用于存储校验数据的存储设备进行存储。
在另一些可能的实施例中,分布式存储系统中未设置专门用于存储校验数据的存储设备。
此时,编码节点可以从在线设备中选择一个或多个终端设备作为校验节点,并将校验数据发送至校验节点进行存储。
在选择校验节点时,为了提高数据存储的可靠性,可以选择不参与数据冗余备份的终端设备作为校验节点,或者,也可以选择待备份设备作为校验节点。但是,当校验节点为待备份设备时,待备份设备上参与数据冗余备份的原始数据应当转移到其他存储节点,避免校验节点发生故障时,校验数据和原始数据同时丢失,导致无法进行数据恢复。
编码节点可以选择一个终端设备作为校验节点,将校验数据发送至校验节点进行存储。或者,编码节点也可以选择多个终端设备作为校验节点,将校验数据以多副本的形式存储于多个校验节点中。
当校验数据以多副本的形式存储与多个校验节点时,校验节点也可以为参与数据冗余备份的待备份设备。此时,部分校验节点损坏并不会导致校验数据和原始数据同时丢失。当校验节点发生故障时,可以从其他校验节点获取校验数据以恢复故障设备上的原始数据。
在选择校验节点时,编码节点可以通过设备可靠性、设备在线时间以及设备存储空间等条件确定校验节点。
设备可靠性可以通过终端设备的易损坏程度或易丢失程度确定。例如,台式终端设备与便捷式终端设备相比更不易丢失,所以台式终端设备的设备可靠性高于便捷式终端设备的设备可靠性。编码节点可以根据终端设备的设备属性(例如设备类型)确定终端设备的可靠性。
示例性的,编码节点可以选择设备可靠性高的终端设备作为校验节点,设备可靠性高的终端设备不易损坏或丢失,可以降低校验数据丢失的风险。
或者,编码节点可以选择在线时间长的终端设备作为校验节点,选择在线时间长的终端设备作为校验节点可以避免在需要获取校验数据进行数据恢复时,校验节点不在线,导致无法获取校验数据进行数据恢复。
或者,编码节点也可以选择存储空间大的终端设备作为校验节点。当校验节点拥有较大的存储空间时,校验节点有足够的空间存储校验数据,避免数据冗余备份的过程中出现校验节点因存储空间不足而存储不了校验数据的情况发生。
或者,编码节点也可以结合设备可靠性、设备在线时间以及设备存储空间等条件中的多个条件综合考虑以确定校验节点。
当分布式存储系统中存在损坏的终端设备时,分布式存储系统中的终端设备可以获取故障设备的设备标识,根据故障设备的设备标识以及校验信息列表查找未损坏的原始数据以及校验数据,并根据未损坏的原始数据和校验数据恢复故障设备上损坏的原始数据。
上述执行数据恢复操作的终端设备可以为故障终端,或者,也可以为分布式存储系统中除故障终端以外的其他终端设备。
此外,编码节点可以在数据冗余备份的过程中,生成并记录校验信息列表。校验信息列表用于指示编码信息。具体地,校验信息列表可以包括参与数据冗余备份的原始数据块所对应的待备份设备的设备标识、原始数据块对应的元数据信息、原始数据块的偏移量、原始数据块的数据量、原始数据块对应文件属性(例如文件名、文件路径)、生成的校验数据对应的元数据、存储校验数据的校验节点的设备标识等信息。
也即是说,终端设备可以通过校验信息列表查找到参与纠删码编码的原始数据的信息以及校验数据的信息。
例如,当某个终端设备发生故障(即故障设备)时,终端设备可以获取故障设备的设备标识,从上述校验信息列表中查询参与纠删码编码的原始数据的信息和校验数据的信息。
上述待备份数据的信息用于指示参与纠删码编码的原始数据,上述校验数据的信息用于指示纠删码编码生成的校验数据。
终端设备在获取到可以根据待备份数据的信息查找未损坏的原始数据,以及根据校验数据的信息查找校验数据,并根据上述未损坏的原始数据以及校验数据恢复故障设备上损坏的数据。
综上,本申请实施例提供了一种数据备份方法,可以将纠删码技术灵活地运用在终端设备的场景下。分布式存储系统中的每个终端设备可以独立作为一个存储节点。
在数据冗余备份的过程中,编码节点可以根据分布式存储系统中各个终端设备的在线情况动态调整纠删码条带的条带长度,避免因条带长度固定而导致部分终端设备上下线后不能使用纠删码进行数据容错的问题,从而提高用户的数据的可靠性。
通过上述数据备份方法,编码节点可以生成校验数据并存储。当分布式存储系统中的终端设备发生故障时,终端设备可以根据其余终端设备上未损坏的原始数据和校验数据恢复故障设备上存储的原始数据。
以下将结合具体的数据恢复场景对上述数据备份方法进行详细说明。
应用场景一:分布式存储系统中某个终端设备发生故障(例如损坏或丢失),需要恢复故障设备上的所有数据。
当分布式存储系统中某个终端设备发生故障(例如损坏或丢失)时,终端设备需要恢复对故障设备中的所有数据进行恢复。
此时,终端设备可以根据故障设备的设备标识查找校验信息列表,并在校验信息列表中查询该故障设备每次数据冗余备份对应的原始数据的信息和校验数据的信息。
然后,终端设备根据原始数据的信息和校验数据的信息,从相应的存储节点中读取原始数据和校验数据,并通过译码算法、原始数据和校验数据恢复每次数据冗余备份的过程中故障设备需要备份的数据。
如果故障设备上的所有数据均进行了数据冗余备份,则终端设备可以通过以上数据恢复操作恢复故障设备上的所有数据。
上述执行数据恢复操作的终端设备可以是每次数据冗余备份过程中的编码节点,或者,也可以是用户指定的终端设备,或者,也可以是默认为在线设备中的某一终端设备。本申请实施例对执行数据恢复操作的终端设备不作任何限制。
应用场景二:分布式存储系统中某个终端设备存在部分文件损坏,需要恢复损坏的文件。
当用户或终端设备的应用程序发现存在文件损坏时,需要对损坏的文件进行恢复。
此时,终端设备可以根据损坏文件的文件标识(例如文件号)查找校验信息列表,并在校验信息列表中查询该文件参与的数据冗余备份过程中所涉及的原始数据的信息和校验数据的信息。
然后,终端设备根据原始数据的信息和校验数据的信息,从相应的存储节点中读取原始数据和校验数据,并通过译码算法、原始数据和校验数据恢复该损坏的文件。
上述执行数据恢复操作的终端设备可以是每次数据冗余备份过程中的编码节点,或者,也可以是用户指定的终端设备,或者,也可以是默认为在线设备中的某一终端设备。本申请实施例对执行数据恢复操作的终端设备不作任何限制。
以下将结合图16至图18所示的内容,更为详细地描述以上数据备份方法的一些非限制性示例。以下的示例将以校验节点为云或存储设备为例进行说明,但是如上所述,本申请实施例提供的数据备份方法同样可以应用于校验节点为分布式存储系统中的其他类型的终端设备的场景。
图16示出了本申请实施例提供的分布式存储系统中的终端设备的示意性框图。本申请实施例提供的分布式存储系统可以包括多个可相互通信的终端设备,为了方便描述,图16仅示意性地示出了分布式存储系统中的两个终端设备,分别为终端设备1610和终端设备1620。
如图16所示,终端设备1610包括条带划分模块1611、数据编码模块1612、数据恢复模块1613、存储模块1614、跨设备数据通信模块1615。在分布式存储系统中,终端设备1610作为编码节点,用于执行数据冗余备份的操作,即纠删码编码的过程。具体地,终端设备1610可以执行图15所示的数据备份方法。
终端设备1620包括条带划分模块1621、数据编码模块1622、数据恢复模块1623、存储模块1624、跨设备数据通信模块1625。在分布式存储系统中,终端设备1620可作为存储节点,用于提供纠删码编码的待备份数据。
在执行本申请实施例提供的数据备份方法之前,可以先进行预处理以确定编码节点和校验节点。编码节点用于执行纠删码编码过程,编码节点由分布式存储系统中的终端设备担当。校验节点用于存储纠删码编码后生成的校验数据,校验节点可以由分布式存储系统中的终端设备担当,也可以由专用的存储设备(例如云或存储设备1630)担当。
在一些情景中,编码节点可以由用户指定。具体地,用户当前使用的终端设备可以通过应用程序向用户展示选择编码节点的界面。在该界面中,应用程序可以为用户推荐编码节点。
例如,编码节点可以为分布式存储系统中计算资源大于一定阈值的终端设备,应用程序可以将计算资源大于一定阈值的终端设备推荐给用户。或者,编码节点可以为分布式存储系统中计算能力较强的终端设备,应用程序对各终端设备类型按照计算能力进行排序(比如按照计算能力排序时,台式电脑>平板电脑>智能手机>智能手环等),然后,应用程序将排序靠前的终端设备类型对应的终端设备推荐给用户。或者,应用程序可以推荐分布式存储系统中任意具备计算能力的终端设备给用户。或者,应用程序可以推荐除用户当前使用的终端设备以外的其他终端设备给用户。
上述应用程序可以安装在分布式存储系统中的部分或全部终端设备上。
在另一些情景中,编码节点也可以是默认的。例如,编码节点可以默认为分布式存储系统中计算资源最多的终端设备。或者,编码节点可以默认为预设类型的终端设备(比如手机)。或者,编码节点可以默认为分布式存储系统中存储空间最大的终端设备。
编码节点的选取原则可以根据上述任意一个条件确定,也可以根据多个条件综合确定。本申请实施例对编码节点的选取原则不作任何限制。
相似的,在一些情景中,校验节点也可以是用户指定的。具体地,用户当前使用的终端设备可以通过应用程序向用户展示选择校验节点的界面。在该界面中,应用程序可以为用户推荐校验节点。
例如,校验节点可以为图16中示出的云或存储设备1630。或者,校验节点可以为分布式存储系统中可靠性高的终端设备。或者,校验节点可以为分布式存储系统中在线时间长的终端设备。或者,校验节点可以为分布式存储系统中存储空间大的终端设备。或者,校验节点可以为分布式存储系统中任意一个具备存储空间的终端设备。应用程序根据以上条件选择相应的终端设备推荐给用户。
在另一些情景中,校验节点也可以是默认的。例如校验节点可以默认为以下类型的终端设备的一个或多个:专用存储设备(例如云或NAS设备)、可靠性高(或可靠性高于一定级别)的终端设备、在线时间长(或在线时间长于一定值)的终端设备、存储空间大(或存储空间大于一定值)的终端设备、预设类型的终端设备(例如智能手机)。
校验节点的选取原则可以根据上述的一个条件确定,也可以依据多个条件综合确定,本申请实施例对校验节点的选取原则不作任何限制。
如果存在多个校验节点时,则校验数据可以以多副本的形式存储于多个校验节点上。
在进行预处理时,即多个终端设备组网形成分布式存储系统时,分布式存储系统内的各个终端设备可以建立元数据管理机制。具体地,各个终端设备可以分别在自身的存储模块中存储元数据信息。该元数据信息用于指示各个终端设备上是否产生新的待备份数据和/或待备份数据的数据量。
组网后编码节点可以在检测到新的待备份数据后,立即进行数据冗余备份;或者,编码节点也可以在某个固定时间(例如深夜终端设备空闲的时间)进行数据冗余备份;或者,编码节点也可以在接收到用户的备份指令后进行备份。本申请实施例对编码节点进行数据冗余备份的时机不作任何限制。
编码节点进行数据冗余备份的频率可以是固定的,例如,编码节点可以每天进行一次数据冗余备份或每周进行一次数据冗余备份。
或者,编码节点进行数据冗余备份的频率也可以是不固定的,例如,编码节点可以在检测到新的待备份数据时进行数据冗余备份,或者编码节点也可以在检测到待备份数据的数据量大于第二阈值等情况时进行数据冗余备份。
本申请实施例对编码节点进行数据冗余备份的频率不作任何限制。
在分布式存储系统中,终端设备可能较为频繁地上线或下线。其中,只有在线设备可以参与到数据冗余备份的过程,即纠删码编码过程。
例如,假设在某次数据冗余备份的过程中,终端设备1610、终端设备1620以及未示出的其他终端设备在线。当分布式存储系统中存在待备份数据时,终端设备1610可以执行以下数据冗余备份操作:
步骤1、终端设备1610确定纠删码条带的条带长度和条带深度。具体地,该步骤可以由条带划分模块1611执行。
编码节点确定条带长度和条带深度的方式有多种。与大规模存储系统中将条带长度设置为固定值的设计方案相比,本申请实施例将采用条带长度可变的设计方案。
示例性地,编码节点可以通过以下几种方式确定条带长度。
方式一:编码节点(例如终端设备1610)根据分布式存储系统中的终端设备是否有待备份数据划分条带长度。
例如,条带长度可以为分布式存储系统中待备份设备的数量。待备份设备为存在待备份数据的在线设备,待备份设备用于存储待备份数据。或者,也可以认为待备份设备为产生待备份数据的在线设备。
方式二:编码节点根据分布式存储系统中在线设备的个数划分条带长度。
例如,条带长度可以等于分布式存储系统中在线设备的数量,其中,在线设备中部分或全部终端设备有待备份数据。
方式三:编码节点根据分布式存储系统中的终端设备是否有待备份数据以及每个待备份设备上待备份数据的数据量划分条带长度。
由于不同的待备份设备所产生的待备份数据的数据量可能相差较大,为了节约编码节点的存储空间和计算资源,可以将多个待备份设备上的待备份数据合并为一个待备份数据参与纠删码编码。此时,条带长度小于待备份设备的数量。
例如,编码节点可以将多个待备份设备的待备份数据进行合并,并确定可以合并为多少个新的待备份数据,以及每个新的待备份数据由多少个待备份设备的待备份数据组成。然后,编码节点可以确定条带长度。
此外,编码节点也可以通过多种方式确定条带深度。在一些实施例中,条带深度可以为预设值。例如,条带深度可以固定设置为1MB。在另一些实施例中,条带深度也可以根据待备份设备上的数据块大小确定。例如,待备份设备上可以分块存储数据,条带深度可以等于各个待备份设备上存储的最大的数据块的数据量。在另一些实施例中,由于条带深度的选择会影响单次纠删码编码的计算时间,条带深度越小,则编码节点的处理能力越强,数据存取速度越快,但是,会相应增加数据块存取的随机性和寻址时间。因此,编码节点也可以根据自身的计算能力确定条带深度,并在每次进行数据冗余备份时动态调整条带深度。
在确定了条带长度和条带深度之后,编码节点可以获取各个待备份数据对应的原始数据块。待备份数据可以在待备份设备上被划分为多个原始数据块,或者,待备份数据也可以由编码节点划分为多个原始数据块。
需要说明的是,在不同的存储系统中,数据分块的大小可能相同,也可能不同。例如,在独立磁盘冗余阵列(redundant array of independent disks,RAID)存储系统中,常见的数据分块大小有4KB~128KB;在分布式存储系统中数据块较大,一般可以达到64MB大小。因此,不同待备份设备的待备份数据对应的原始数据块的数据量可能相等,也可能不相等。
如果各个待备份数据对应的原始数据块的数据量不相等,则编码节点可以在纠删码编码之前将数据量小于条带深度的原始数据块补零处理,将不足部分取0补齐后再参与纠删码编码。之后,在纠删码编码的过程中,参与纠删码编码的原始数据块不能被修改。
此外,编码节点在进行纠删码编码的过程中,有可能出现条带长度大于待备份数据数量的情况。此时,编码节点可以对缺失的原始数据块采用补零处理,在纠删码编码过程中,将缺失的原始数据块取0补齐。
上述编码节点确定条带长度和条带深度过程中所用的信息可以通过跨设备数据通信模块1615获取。分布式存储系统中,每个终端设备可以均设置有跨设备数据通信模块,因此,终端设备之间可以通过上述跨设备数据通信模块进行通信。
并且,分布式存储系统中,每个终端设备的存储模块可以存储分布式存储系统中其他终端设备的元数据信息。终端设备可以根据元数据信息获知其他终端设备是否产生了新的待备份数据以及待备份数据的数据量。在本申请实施例中,终端设备1610可以获知终端设备1620以及分布式存储系统中未示出的其他终端设备的在线状态以及元数据信息。
当然,在一些实施例中,若编码节点是固定的,则可能只有编码节点可以管理分布式存储系统中所有终端设备的元数据信息。在另一些实施例中,由于编码节点为具备计算能力的终端设备,则分布式存储系统中具备计算能力的终端设备可以管理元数据信息,不具备计算能力的终端设备可以不管理元数据信息。
步骤2、终端设备1610获取待备份数据,并进行条带划分。具体地,该步骤可以由跨设备数据通信模块1615以及条带划分模块1611执行。
在该步骤中,终端设备1610需要将其他终端设备上的待备份数据读取到本地进行集中式编码。集中式编码是指一个纠删码条带的所有编码工作都由一个编码节点来完成。
在本申请提供的分布式存储系统中,所有终端设备均可以作为存储节点,编码节点可以是存储节点中的一个终端设备。
也即是说,终端设备1610可以仅作为编码节点对其他终端设备上的待备份数据进行纠删码编码,或者,终端设备1610也可以即作为编码节点,又作为存储节点,将本地的待备份数据和其他终端设备的待备份数据一起进行纠删码编码。
终端设备1610在获取待备份数据时,可以根据元数据信息确定待备份设备以及待备份数据的存储位置等。然后,终端设备1610通过跨设备数据通信模块1615与待备份设备的跨设备数据通信模块进行通信,获取待备份设备上的待备份数据。
跨设备数据通信模块1615可以将获取到的待备份数据存储到存储模块1614(例如缓存)中,以便数据编码模块1612对待备份数据进行纠删码编码。
在纠删码编码前,条带划分模块1611可以根据步骤1的方式对读取到的待备份数据进行条带划分。例如,条带划分模块1611可以将待备份数据按照存储设备(或存储节点)的不同分别进行分块处理,得到原始数据块。其中不足条带长度和条带深度的部分可以补0对齐,使纠删码条带上原始数据块的数量与条带长度一致,且同一纠删码条带上的原始数据块的大小一致。
步骤3、终端设备1610执行纠删码编码。具体地,该步骤可以由数据编码模块1612执行。
在一些实施例中,数据编码模块1612可以对同一条带上的原始数据块执行异或编码。
异或(XOR)是一种数学运算(operation)符,其定义为两个值相同时,异或结果为0或返回错误(false),两个值不相同时,异或结果为1或返回正确(true)。也就是说,异或可以用来判断两个值是否不同。利用异或的运算特性,可以在重复数据中去除冗余信息,实现信息增量和数据压缩。
具体地,数据编码模块1612将两个原始数据块进行异或编码后,将得到的异或编码结果与下一个原始数据块进行异或编码,直至同一条纠删码条带上的所有原始数据块编码完成,得到对应该纠删码条带的校验数据和校验信息列表。
校验数据即同一纠删码条带上的所有原始数据块异或编码所生成的最终异或结果。校验信息列表用于记录该次纠删码编码的原始数据块的信息和校验数据的信息。例如,原始数据块所对应的终端设备的设备标识、校验数据对应的校验节点的设备标识、元数据信息、数据块偏移量、条带深度、参与纠删码编码的原始数据的文件名、文件路径等信息。
编码节点采用异或编码可以实现单节点容错,即能够容忍单个终端设备上的数据的丢失。这种编码方式可以实现与单副本备份方式相同的容错性能,但是相较于单副本备份方式能够降低至少50%的存储空间,并且编译码时间较低,能够在不影响用户使用体验的前提下对用户的数据进行备份。
在另一些实施例中,数据编码模块1612可以对同一条带上的原始数据块执行里德-所罗门(Reed-Solomon,RS)编码。
采用RS编码可以容忍多个设备上的数据丢失,提高了用户数据的可靠性。当编码节点采用RS编码时,编码节点可以根据RS编码的约束条件和在线设备数量确定条带长度。
编码节点可以在检测到新的待备份数据后,立即进行纠删码编码;或者,编码节点也可以在某个固定时间(例如深夜终端设备空闲的时间)进行纠删码编码;或者,编码节点也可以周期性地(例如每天、每周、每月)对待备份数据进行纠删码编码;或者,编码节点也可以在接收到用户的备份指令后进行备份。本申请实施例对编码节点进行纠删码编码的时机不作任何限制。
步骤4、终端设备1610将生成的校验数据和校验信息列表发送到校验节点存储。
校验节点可以按照以上所示方式预先设定好。例如,若用户购买了云或存储设备(比如图3所示的云或存储设备1630),则终端设备1610可优先将校验结果(包括校验数据和校验信息列表)发送给云或存储设备进行存储。若用户没有购买云或存储设备,则用户当前使用的终端设备可以在预处理阶段向用户推荐可靠性较高、在线时间较长、存储空间充足的终端设备作为校验节点,终端设备1610将校验结果发送给作为校验节点的终端设备(图3中未示出)进行存储。
此外,终端设备1610可以将校验结果发送给一个校验节点进行存储,或者,终端设备1610也可以发送给多个校验节点进行存储。
当终端设备1610将校验结果发送给一个校验节点进行存储时,为了防止该校验节点损坏导致原始数据和校验数据同时丢失,该校验节点可以不参与纠删码编码。
当终端设备1610将校验结果发送给多个校验节点进行存储时,由于多个校验节点同时丢失的概率较低,因此,终端设备1610可以将校验结果以多副本形式存储于多个校验节点,提高数据的安全性。当某个校验节点损坏,终端设备还可以从其他校验节点获取校验结果以恢复故障设备上的原始数据。
在本申请实施例中,编码节点采用条带长度可变的设计方案。相比传统的磁盘RAID存储系统中将数据划分固定条带长度的条带进行存储,本申请实施例的编码节点会根据分布式存储系统内终端设备的在线情况(例如在线设备的数量和待备份设备的数量)确定条带长度和条带深度。在每次数据冗余备份时,编码节点可以根据终端设备的上下线情况动态调整条带长度,例如,编码节点可以根据在线设备的数量动态调整条带长度,实现对终端设备中待备份数据的纠删码编码,提高用户数据的可靠性。本申请实施例实现了纠删码在终端设备中的应用,从而可以定期对终端设备中文件进行备份,防止终端设备上下线后其他终端设备不能使用纠删码进行数据容错。
此外,上述待备份数据可以是终端设备组网后的初始的原始数据、新增的待备份数据、修改后的已备份数据、删除部分数据的已备份数据等。以下,仍以图16中的终端设备1610为编码节点为例,对几种具体的数据冗余备份情况进行详细介绍。
在一种情况中,终端设备上新增了数据。例如,用户在终端设备上新建文档、拍摄照片或下载视频等。由于编码节点管理元数据信息,因此终端设备1610可以通过元数据信息获取到终端设备上新增的数据。
此时,终端设备1610可以参照上述数据备份方法确定条带长度和条带深度,并将新增数据划分为原始数据块,然后对新增数据进行纠删码编码,生成对应于该次数据冗余备份的校验数据和校验信息列表。终端设备1610将生成的校验结果发送到校验节点存储。
在另一种情况中,终端设备上的已备份数据发生了更改。例如,用户修改了终端设备上的已备份数据。因此终端设备1610可以通过元数据信息获取到被修改的已备份数据的信息。
此时,终端设备可以将修改后的已备份数据存储为新的副本,并将新的副本作为新增数据进行数据冗余备份,生成新的校验数据,而原来的已备份数据对应的校验数据可以保留。
或者,该终端设备可以直接将修改后的已备份数据作为新增数据进行数据冗余备份,生成新的校验数据。此时,原来的已备份数据对应的校验数据可以删除。
设备1610可以定期统计各个终端设备中是否有新产生的数据,将新产生的数据组成新的条带,编码计算校验结果。
示例性的,图17示出了本申请实施例提供的一种应用场景的示意图。如图17所示,假设分布式存储系统包括设备A、设备B和设备C。
在数据更新前,设备A中的待备份数据包括文件a和c,设备B中的待备份数据包括文件b和d。
编码节点(如设备C)对数据更新前的待备份数据进行数据容错时,根据条带深度进行条带划分,将读取的设备A中的文件a和文件c分别划分为三个原始数据块,将读取的设备B中的文件b和d分别划分为三个原始数据块。
设备C将文件a和文件b对应的原始数据块分别进行编码(例如异或编码),生成校验数据(a+b),以及,将文件c和文件d对应的原始数据块分别进行编码(例如异或编码),生成校验数据(c+d)。
假设之后用户对设备A中的文件a进行了修改,对设备B中的文件d进行了修改,并将修改后的文件作为新增的数据进行编码容错。也即是说,设备A中的新增文件a’,设备B中新增文件d’。
此时,编码节点(如设备C)可以对设备A和设备B中的新增数据a’和d’进行编码容错。设备C将读取的设备A中的文件a’和设备B中的文件d’分别划分为三个原始数据块,将文件a’和文件d’对应的数据块分别进行编码(例如异或编码),生成校验数据(a’+d’)。设备C在进行编码校验时,处于同一纠删码条带上的原始数据块应属于不同的待备份设备。
应当理解的是,图17所示终端设备的数量、编码节点所确定的条带长度以及编码节点将哪些原始数据块进行异或编码等仅仅是示例性的,仅用于示例性地描述当用户修改已备份数据时如何对修改后的数据进行数据容错,对本申请实施例的数据备份方法不造成任何限定。
在另一种情况中,用户删除了终端设备存储的数据,该被删除的数据已进行备份。由于编码节点管理元数据,因此编码节点(例如终端设备1610或终端设备1620等)通过元数据信息可以获取被删除的数据信息。
编码节点可以根据被删除的数据的文件号、文件存储路径等信息,从校验信息列表中查询到与被删除的数据处于同一纠删码条带的其他已备份数据。
编码节点可以将与被删除的数据处于同一纠删码条带的其他已备份数据作为新增数据,重新组合纠删码条带进行编码,得到新的校验结果并发送至校验节点存储。
示例性的,图18示出了本申请实施例提供的另一种应用场景的示意图。如图18所示,假设分布式存储系统包括设备A、设备B和设备C。
在数据删除前,设备A中的待备份数据包括文件a和c,设备B中的待备份数据包括文件b和d。
编码节点(如设备C)对数据删除前的待备份数据进行数据容错时,根据条带深度进行条带划分,将读取的设备A中的文件a和文件c分别划分为三个原始数据块,将读取的设备B中的文件b和d分别划分为三个原始数据块。
设备C将文件a和文件b对应的原始数据块分别进行编码(例如异或编码),生成校验数据(a+b),以及,将文件c和文件d对应的原始数据块分别进行编码(例如异或编码),生成校验数据(c+d)。
假设之后用户对设备A中的文件a进行了删除,并将与被删除的数据处于同一纠删码条带的其他已备份数据作为新增的数据进行编码容错。
此时,设备C可以读取的设备B中的文件b,将文件b与设备A中新增的文件e(文件e也可以为补零的数据块)进行编码(例如异或编码),生成校验数据(b+e)。
在生成新的校验结果(如校验数据(b+e))后,原来的校验结果(如校验数据(a+b))可以保存一段时间例如一周后再删除,防止用户对终端设备上文件的误删除而导致数据丢失。设备C在进行纠删码编码时,处于同一纠删码条带上的原始数据块应属于不同的存储节点。
应当理解的是,图18所示终端设备的数量、编码节点所确定的条带长度以及编码节点将哪些原始数据块进行异或编码等仅仅是示例性的,仅用于示例性地描述当用户修改已备份数据时如何对修改后的数据进行数据容错,对本申请实施例的数据备份方法不造成任何限定。
在另一种情况中,当有新的终端设备加入分布式系统时,该新加入的终端设备可以作为新的存储节点,该新加入的终端设备的待备份数据可以与已有的终端设备的待备份数据组成纠删码条带进行数据冗余备份。
例如,该新的终端设备加入分布式存储系统之后,其他终端设备可以获知该新的终端设备的在线状态、是否产生新的待备份数据等信息。
需要说明的是,上述新的终端设备除了可以作为存储节点以外,还可以作为编码节点以及校验节点。
在另一种情况中,当分布式存储系统中有终端设备要退出或注销时,可以将该终端设备所参与的纠删码编码中的其他原始数据重新进行纠删码编码,并存储新的校验结果。
例如,假设某个终端设备退出分布式存储系统,此时,编码节点可以根据该终端设备的设备标识,在校验信息列表中查询该终端设备所参与的纠删码编码的其他原始数据,并对这些原始数据重新进行纠删码编码。
在本申请实施例中,编码节点可以根据分布式存储系统中在线设备的数量动态调整条带长度,并将校验结果存储于云上或NAS等存储设备上,能够保证对终端设备上的校验结果实时刷新,而不担心终端设备掉线后导致纠删码不可用。
此外,在有终端设备加入或退出分布式存储系统时,编码节点可以灵活地调整条带长度,适配不同数量的在线设备。
上述描述了终端设备进行数据冗余备份的过程。仍参考图16,如果参与数据冗余备份的终端设备发生故障(例如设备丢失、损坏、设备上的文件损坏或误删等),则终端设备可以利用存储于校验节点的校验结果以及其他终端设备上存储的参与纠删码编码的原始数据,对故障设备上的数据进行恢复。
当故障设备损坏或丢失时,需要对故障设备上的全部数据进行恢复。此时,分布式存储系统在选定执行恢复操作的终端设备后,该终端设备可以从校验节点上获取上述故障设备所参与的纠删码编码的校验结果(包括校验数据和校验信息列表)。
之后,终端设备可以根据故障设备的设备标识,从校验信息列表中查询故障设备所参与的纠删码编码所对应的原始数据的信息和校验数据的信息,并根据原始数据的信息和校验数据的信息获取历次数据冗余备份过程中参与纠删码编码的其他存储节点的原始数据和生成的校验数据。然后,终端设备根据上述原始数据和上述校验数据恢复故障设备上的原始数据。
或者,终端设备也可以不从校验节点获取校验结果,而是直接根据故障设备标识在校验节点处查询故障设备所参与的纠删码编码对应的原始数据的信息和校验数据的信息,继而进行数据恢复。
在进行数据恢复时,终端设备可以根据故障设备所参与的数据冗余备份顺序依次进行数据恢复。
并且,终端设备在恢复了故障设备的原始数据之后,可以将恢复的原始数据存储于预设的存储设备中。预设的存储设备可以是用户指定的终端设备,或者,预设的存处设备也可以是默认为存储空间大于一定值的终端设备。
当故障设备中的部分文件损坏、丢失或误删除时,需要对这部分数据进行数据恢复。此时,分布式存储系统在选定执行恢复操作的终端设备后,该终端设备可以根据文件标识、文件存储路径等可以标识文件的信息,在校验节点上存储的校验信息列表中查询该文件所参与的纠删码编码对应的原始数据的信息和校验数据的信息。然后,终端设备根据原始数据的信息和校验数据的信息获取相应的原始数据和校验数据,并利用译码算法对故障设备上的部分数据进行数据恢复。
上述执行数据恢复操作的终端设备可以是用户指定的,或者,也可以是根据预设选取规则确定的,或者,也可以是需要恢复部分数据的故障设备本身。本申请实施例对上述执行数据恢复操作的终端设备的具体选定方式不作任何限制。
此外,终端设备可以是响应于用户的指示执行上述数据恢复过程,或者,终端设备也可以是根据预设应用程序自动检测并执行数据恢复过程。
参考图16,以终端设备1620执行数据恢复过程为例。假设终端设备1610发生故障,终端设备1620中的数据恢复模块1623可以从云或存储设备1630上获取到与终端设备1610相关的校验结果或与部分文件相关的校验结果,然后读取对应的原始数据和校验数据,进行数据恢复。并且,在查询校验信息列表时,终端设备1620中的数据恢复模块1623可以直接从校验节点上查询原始数据的信息和校验数据的信息,而无需将校验结果保存至自身设备上,然后再从存储的校验信息列表查询原始数据的信息和校验数据的信息。
应当理解的是,图16中的终端设备1620中的其他模块的功能与终端设备1610的对应模块功能类似,当终端设备1620作为编码节点时,同样可以执行上述数据备份方法,完成数据冗余备份过程。或者,终端设备1620也可以不用于编码,此时终端设备1620可以不包括条带划分模块1621、数据编码模块1622等功能模块。
以上内容描述了本申请实施例提供的数据备份方法,其中,编码节点在进行纠删码编码时,若满足p=N+1,p为大于或等于3的素数,N为条带长度这一条件,则编码节点可以采用以下纠删码编码方法计算校验数据。
如图19所示,为本申请实施例提供了一种纠删码编码方法的实现流程图。该方法可由终端设备的软件和/或硬件实现。如图19所示,该方法包括步骤S1901至S1904。各个步骤的具体实现原理如下:
S1901,将N个不同待备份设备的待备份数据进行分块,得到每个所述待备份设备的多个原始数据块,属于同一所述待备份设备的多个原始数据块具有不同的排序位置,N为大于或等于2的正整数。
其中,当条带长度为N时,表示存在N个待备份设备参与纠删码编码,有N个不同待备份设备的待备份数据需要进行数据冗余备份。
此时,编码节点可以将不同待备份设备的待备份数据进行条带划分,得到对应每个待备份设备的多个原始数据块,对应每个待备份设备的多个原始数据块具有不同的排序位置。
排序位置可以通过顺次标记阿拉伯数字来标识,也可以用通过顺次标记字母来标识,在其他实施例中,还可以不采用顺次标记的方式来标识排序位置,本申请对排序位置的具体实现形式不予限制。
例如,同一待备份设备的原始数据块可以用1、2、3、4等标识表示排序位置;或者,也可以用A、B、C、D等标识表示排序顺序;或者,也可以用数据和字母结合的标识表示排序顺序。
当不同待备份设备对应的原始数据块的块数目刚好相同的情形下,可以将不同待备份设备的所有原始数据块一起进行备份,或者,也可以从每个待备份设备的原始数据块中选取或截取多个原始数据块进行备份。其中,在一次编码过程中,从N个不同待备份设备选取出或截取出的原始数据块个数相同,为G个,G为大于或等于2的正整数。G个选取出或截取出的原始数据块具有不同的排序位置。
当不同待备份设备对应的原始数据块的块数目不相同的情形下,还可以将块数目调整为相同,例如可以通过填充数据块的方式将不同待备份设备的块数目调整成相同。
对于每个待备份设备的待备份数据,可以按照上述条带深度进行分块,对于经过分块后不等于条带深度的数据块,可以通过填充数据的方式将其调整成条带深度。例如,可以通过填充预设数字“0”的方式获得具有相同大小的原始数据块。
在本申请一具体实施例中,为了实现更简单的编码计算,从不同待备份设备获得的原始数据块的数量可以与一起参与编码的待备份设备的数量相同。也就是说,待备份设备的数量与每个待备份设备中一起参与编码的原始数据块的数量相同,N等于G。在这种情形下,进步一地,可以利用不同待备份设备的原始数据块组成数据阵列。
可选地,将不同待备份设备的原始数据块按顺序排列成数据阵列,每个待备份设备的原始数据块作为数据阵列的一列或一行,再根据本申请实施例提供的纠删码编码方法,增加两列或两行校验数据块,两列或两行校验数据块与数据阵列组成码字阵列。
此时,数据阵列为(p-1)*(p-1)大小,其中,p为大于或等于3的素数,p的值为待备份设备的总节点个数加1,即N+1为大于或等于3的素数。码字阵列为(p-1)*(p+1)大小,例如,假设p的取值为5,则待备份设备的个数为4,前4列或前4行为原始数据,后2列或后2行为校验数据,第一列或第一行校验数据采用行或列校验纠删码编码的方式生成,第二列或第二行校验数据采用斜对角线纠删码编码的方式生成。其中,上述纠删码编码的方式可以为异或编码或同或编码。
作为一非限制性示例,如图20所示,四个不同的待备份设备,即第一待备份设备至第四待备份设备,作为待备份设备,将各个待备份设备的待备份数据,例如文件1至文件4,进行分块,得到对应每个待备份设备的G个原始数据块,G等于4,G个原始数据块依次标记为D0,i,D1,i,...,Dg,i,...,DG-1,i,g为自然数,且0≤g≤G-1,i为待备份设备的标识,取0,1,2,3;再以每个待备份设备的所有原始数据块为基础进行编码。
作为另一非限制性示例,如图21所示,四个不同待备份设备,即第一待备份设备至第四待备份设备,作为待备份设备,将各个待备份设备的待备份数据,例如文件1至文件4,进行分块,得到对应每个待备份设备的多个原始数据块。例如第一待备份设备包括R个原始数据块,D0,0,D1,0,...,Dr,0,...,DR-1,0;第二待备份设备包括S个原始数据块,D0,1,D1,1,...,Ds,1,...,DS-1,1;第三待备份设备包括T个原始数据块,D0,2,D1,2,...,Dt,2,...,DT-1,2;第四待备份设备包括U个原始数据块,D0,3,D1,3,...,Du,3,...,DU-1,3。R,S,T和U均为大于或等于4的正整数,可以完全相同也可以不完全相同,在不完全相同的情形下,通过补齐数据块的方式使得各个待备份设备获得数量相同的原始数据块。从每个待备份设备的多个原始数据块中选取G个原始数据块进行后续编码的步骤,G小于R,S,T和U,且G等于4,G个原始数据块依次标记为D0,i,D1,i,...,Dg,i,...,DG-1,i
应理解,在上述示例中,编码节点在完成前四个位置的编码后,还可以对后续四个位置进行编码,直至待备份设备的所有原始数据块均完成编码。也就是说,在编码的过程中,可以对待备份设备的原始数据块分段进行编码,不同段的编码可以同时进行,即并行处理,也可以先后进行,可以根据编码节点的性能(包括计算能力,存储空间大小等)进行选择设置,本申请对此不予限制。
S1902,从每个待备份设备的原始数据块中,选择具有相同排序位置的原始数据块进行编码,得到对应各个不同排序位置的第一校验数据块。
其中,步骤S1901中对不同待备份设备的待备份数据进行了分块,获得不同待备份设备的按序排列的多个原始数据块,在步骤S1902和S1903中,则是对原始数据块进行纠删码编码的步骤。
在步骤S1902中,从每个待备份设备的原始数据块中,选择具有相同排序位置的原始数据块进行编码,得到对应各个不同排序位置的第一校验数据块。
可选地,上述编码的方式包括同或编码,或异或编码等。其中,异或编码和同或编码计算简单,编码和译码的计算复杂度低,数据存储和恢复效率高。但是,由于异或编码准确度相对较高,本申请实施例可以将异或编码设置为默认的编码方式。
作为本申请一非限制性示例,延续图21所示示例,将四个待备份设备作为待备份设备,从四个待备份设备的原始数据块中选择相同排序位置处的原始数据块进行编码,得到四个第一校验数据块,分别为P0,0,P1,0,P2,0,P3,0,其结果如图22所示。因而,在本申请实施例中,生成第一校验数据块的编码可称为行或列校验编码,第一校验数据块也可称为行或列校验数据(或行或列校验信息)。
可选地,将N个待备份设备的原始数据块按照顺序排列成N*N大小的数据阵列,每个待备份设备的原始数据块作为数据阵列的一列,再根据原始数据块计算两列校验数据块,数据阵列和两列校验数据块组成码字阵列。
完整的码字阵列表示为(p-1)*(p+1),p取值为N+1,前N列为原始数据;后2列为校验数据,第一列校验数据为第一校验数据块,第二列校验数据为第二校验数据块。若码字阵列的每个数据块用一个ci,j(0≤i≤p-2,0≤j≤p)码字表示,前p-1列,即0≤j≤p-2,表示原始数据块,后两列j=p-1和j=p代表校验数据块。校验数据块通过编码得到,也就是说,编码过程是使用数据块(原始数据块和/或第一校验数据块)计算出后两列校验数据块的过程。
获得第一列校验数据的编码实现过程如下:首先,使用前p-1列(0≤j≤p-2)原始数据块计算j=p-1列(即第p列)上的校验数据块,采用行数据块按位异或的方式,计算公式如下:
Figure BDA0002746376180000481
当p=5时,编码过程可参见图22所示。
应理解,在其他申请示例中,还可以将每个待备份设备的原始数据块作为数据阵列的一行,校验数据块作为行数据,与数据阵列一起组成码字阵列。并且,在其他申请示例中,还可以采用按位同或的编码方式计算校验数据块。
作为本申请另一非限制性示例,延续图21所示示例,将四个待备份设备作为待备份设备,从四个待备份设备中的每个待备份设备选择相同排序位置处的一个原始数据块进行编码,得到四个第一校验数据块,P0,0,P1,0,P2,0,P3,0。如图23所示,在完成前四个位置的编码后,再进行后续四个位置的编码过程,可以得到另外四个第一校验数据块,P4,0,P5,0,P6,0,P7,0
在本申请的示例中,编码节点将原始数据块划分成多个数据段,分数据段进行编码,直至所有数据段完成编码过程,各个数据段的编码过程可以同时进行也可以分先后进行,数据处理的灵活度高,当多个数据段同时进行编码时,可以提高编码效率,从而提高了数据冗余备份的效率。
S1903,从每个待备份设备的原始数据块中,选择具有不同排序位置的原始数据块进行编码,得到对应各个不同排序位置的第二校验数据块;或者,从每个待备份设备的原始数据块和第一校验数据块中,选择具有不同排序位置的原始数据块和第一校验数据块进行编码,得到对应各个不同排序位置的第二校验数据块
其中,步骤S1901中对不同待备份设备的待备份数据进行了分块,获得不同待备份设备的按序排列的多个原始数据块,在步骤S1902和S1903中,则是对原始数据块进行编码的步骤。
在本申请一些实施例中,在步骤S1903中,编码节点从N个待备份设备中的每个待备份设备的原始数据块中选择具有不同排序位置的原始数据块,进行编码,得到对应各个不同排序位置的第二校验数据块。
应理解,在这些实施例中,可以先执行步骤S1902后执行步骤S1903;还可以将步骤S1903与步骤S1902同时执行,即并行处理;也可以先执行步骤S1903后执行步骤S1902,对两个步骤的时序不做具体限定。
作为本申请一非限制性示例,延续图22所示示例,将四个待备份设备作为待备份设备,从每个待备份设备的原始数据块中选择不同排序位置处的一个原始数据块进行编码,得到四个第二校验数据块,即P0,1,P1,1,P2,1,P3,1
参见图24和图25所示,对圆形标记的四个原始数据块进行编码,得到虚线圆形标记的第二校验数据块P0,1;对矩形标记的四个原始数据块进行编码,得到虚线矩形标记的第二校验数据块P1,1;对三角形标记的四个原始数据块进行编码,得到虚线三角形标记的第二校验数据块P2,1;对菱形标记的四个原始数据块进行编码,得到虚线菱形标记的第二校验数据块P3,1
图24的编码方向为规则的斜向编码,即斜对角线方向的斜向编码,图25的编码方向为不规则的斜向编码。因而,在本申请实施例中,生成第二校验数据块的编码可以称为斜校验编码,而第二校验数据块也可称为斜校验数据(或斜校验信息)。
作为本申请另一非限制性示例,延续图23所示示例,将四个待备份设备作为待备份设备,从每个待备份设备中选择一个不同排序位置处的一个原始数据块进行编码,得到四个第二校验数据块,P0,1,P1,1,P2,1,P3,1;如图26所示,在完成前四个位置的编码后,再进行后续四个位置的编码过程,得到另外四个第二校验数据块,P4,1,P5,1,P6,1,P7,1。重复进行编码,直至待备份设备的所有原始数据块均完成编码。其中,图26的编码方向为斜对角线方向的编码。应理解,在其他示例中,编码节点还可以采用不规则的斜向编码方式。
在本申请另一些实施例中,在步骤S1903中,N个待备份设备的N组原始数据块和一组第一校验数据块构成N+1组数据。此时,编码节点可以从N+1组数据中的N组数据中各选择一个具有不同排序位置的数据块进行编码,得到对应各个不同排序位置的第二校验数据块。
可选地,将N个待备份设备的N组原始数据块构成数据阵列,再将数据阵列和一组第一校验数据块构成包括N+1组数据的扩展阵列,从扩展阵列的N+1组数据中的N组数据中各选择一个具有不同排序位置的数据块进行编码,可以得到对应各个不同排序位置的N个第二校验数据块。
作为本申请一非限制性示例,延续图22所示示例,将四个待备份设备作为待备份设备,在得到第一校验数据块后,四个待备份设备的四组原始数据块和一组第一校验数据块组成五组数据块,从这五组数据块中的四组数据块中各选择一个数据块,且选择出的四个数据块具有不同的排序位置,将选择出的四个数据块进行编码,得到四个第二校验数据块,即P0,1,P1,1,P2,1,P3,1
参见图27和图28所示,对圆形标记的四个数据块进行编码,得到虚线圆形标记的第二校验数据块P0,1;对矩形标记的四个数据块进行编码,得到虚线矩形标记的第二校验数据块P1,1;对三角形标记的四个数据块进行编码,得到虚线三角形标记的第二校验数据块P2,1;对菱形标记的四个数据块进行编码,得到虚线菱形标记的第二校验数据块P3,1
图27所示的编码方向为规则的斜向编码,即斜对角线方向的编码,图27中存在四个属于同一个斜向的数据块未参与编码。图28所示的编码方向为不规则的斜向编码方向,未参与编码的四个数据块不属于同一个斜向。
可选地,完整的码字阵列表示为(p-1)*(p+1),p取值为N+1,前N列为原始数据信息;后2列为校验数据列,第一列校验数据为第一校验数据块,第二列校验数据为第二校验数据块。
若码字阵列的每个数据块用一个ci,j(0≤i≤p-2,0≤j≤p)码字表示,前p-1列,即0≤j≤p-2,表示原始数据块,后两列j=p-1和j=p代表校验数据块。
编码节点获得第二列校验数据的编码实现过程如下:使用前p-1列(0≤j≤p-2)原始数据块和j=p-1列(即第p列)上的第一校验数据块编码产生j=p列上的斜校验数据,即第二校验数据块,斜校验数据的计算公式如下:
Figure BDA0002746376180000501
其中<i+j>=(i+j)mod p。例如,当p=5时,斜校验编码过程可继续参见图27所示,此时为斜对角线编码。
应理解,在其他申请示例中,编码节点还可以将每个待备份设备的原始数据块作为数据阵列的一行,校验数据块作为行数据,与数据阵列一起组成码字阵列。在其他申请示例中,编码节点还可以采用按位同或的编码方式进行纠删码编码。并且,在其他申请示例中,斜校验编码过程还可以采用不规则方向的编码方式。
作为本申请另一非限制性示例,延续图23所示示例,将四个待备份设备作为待备份设备,从其中三个待备份设备中各选择一个数据块,在第一校验数据块中选择一个数据块,选择出的四个数据块具有不同的排序位置处,将选择出的四个数据块进行编码,得到四个第二校验数据块,即P0,1,P1,1,P2,1,P3,1;如图29所示,在完成前四个位置的编码后,再进行后续四个位置的编码过程,得到另外四个第二校验数据块,即P4,1,P5,1,P6,1,P7,1。编码节点重复进行斜校验编码,直至待备份设备的所有原始数据块均完成编码。
图29的编码方向为斜对角线方向的编码。应理解,在其他示例中,编码节点还可以采用不规则方向的编码方式;或者,针对相同待备份设备中不同数据段的编码,编码方向还可以不相同,例如前四个排序位置采用斜对角线方向的编码方式,而后续四个排序位置采用不规则方向的编码方式。
S1904,存储所述第一校验数据块和所述第二校验数据块。
其中,根据步骤S1902得到第一校验数据块,步骤S1903得到第二校验数据块,可以将第一校验数据块和第二校验数据块一起存储,也可以分开存储。也就是说,将第一校验数据块和第二校验数据块可以存储至相同或不同的校验节点。
在本申请实施例中,校验节点可用于存储第一校验数据块和/或第二校验数据块。校验节点可以为待备份设备,或者,校验节点也可以为除待备份设备外的其他终端设备。
可选地,当每个待备份设备本身未存储原始数据块的情形下,还需要将N个待备份设备的多个原始数据块进行存储。例如,将N组原始数据块存储至备份节点。应理解,备份节点可以与待备份设备重合,也可以不重合。
在本申请一些实施例中,可以将每个待备份设备分块后得到的原始数据块存储在本待备份设备中,或者,也可以根据网络情况和设备状态,分布式存储N组原始数据块以及一组第一校验数据块和一组第二校验数据块。
其中,网络情况包括带宽,网速等;设备状态包括设备在线情况和设备性能至少之一。设备在线情况包括在线时长或掉线频次等。设备性能包括存储空间大小,处理速度等中的至少一个。
可选地,可以将每个待备份设备分块后得到的原始数据块存储在与本待备份设备通信交互较好,或下线较少,或设备性能较稳定的备份节点。根据网络情况和设备状态将数据存储到不同的备份节点,实现数据的灵活存储。
编码节点在对待备份数据进行编码后,可以根据用户的不同需求及网络,设备的自身情况,分节点存储原始数据块和校验数据块。当某一终端设备发生故障或掉线时,执行恢复操作的终端设备能够对未损坏的原始数据和校验数据进行快速的获取。
作为本申请一非限制性示例,采用不同的放置方式对数据进行存储,以存储4个待备份设备的4列原始数据块为例,增加了2列校验数据块(包括第一校验数据块和第二校验数据块)后共6列数据,这6列数据可以分散存储于最多6个终端设备上。
例如,这6列数据可以分散存储在6个终端设备上,也可以两两存储于三个终端设备上。在三个终端设备上进行存储时,可以根据终端设备情况分不同的组合进行存储。
作为本申请另一非限制性示例,延续图24,图25,图27和图28中任一所示示例,假设使用4个待备份设备(即第一终端设备(设备1),第二终端设备(设备2),第三终端设备(设备3)和第四终端设备(设备4))中的其中三个终端设备,例如设备1,设备2和设备3,来存储原始数据块,第一校验数据块和第二校验数据块。
在一种具体实施方式中,可以让设备1和设备2分别存储两列原始数据块,设备3存储两列校验数据。例如,如图30所示,设备1存储设备1和设备2的原始数据块,设备2存储设备3和设备4的原始数据块,设备3存储第一校验数据块和第二校验数据块。
在另一种具体实施方式中,可以让设备1存储两列原始数据,设备2和设备3各自存储一列原始数据和一列校验数据,例如,如图31所示,设备1存储设备1和设备2的原始数据块,设备2存储设备3的原始数据块和第一校验数据块,设备3存储设备4的原始数据块和第二校验数据块。
可选地,若设备1和设备2通信交互能力较好时,可以采用如图30所示的存储方式,可以通过直接读取设备1和设备2上的原始数据来获得所需数据,而不需要进行译码恢复。若设备1,设备2和设备3的数据传输情况相近的情况下,可以采用如图31所示的存储方式,以实现均衡负载。
本申请实施例,通过上述纠删码编码方法将数据通过编码的方式进行数据冗余备份,仅增加了第一校验数据块和第二校验数据块,即通过编码后增加了两列校验列,能够同时容忍码字阵列中的两列数据发生故障,容错性能为2,本申请实施例总的存储开销增加了2/(p-1)。当p=5时,N为4,表示存在4列原始数据块,通过编码后增加了2列校验列,分布式存储系统需要存储6列数据,即总的存储开销为6/4=1.5倍的原始数据存储空间,与三副本技术(即将原始数据复制两次,1份原始数据和2份备份数据形成3个副本,总的存储开销为3倍的原始数据存储空间)相比,容错性能相同的情形下,可以降低了一半的存储空间。由此可见,相比采用副本的备份容错方式,本申请实施例大大降低了存储开销。并且,通过对相同排序位置的原始数据块进行编码,得到第一校验数据块;对不同排序位置的原始数据块进行斜向的编码,或,对不同排序位置的原始数据块和第一校验数据块进行斜向的编码,得到第二校验数据块,相比现有的纠删码编码方式,编码计算复杂度低,存储效率高。
此外,上述纠删码编码方法中的待备份数据可以是通过上述数据分类方法识别到的热度类别为温数据和/或冷数据的待分类数据。
各个待备份设备可以在某个预设时间,也可以在每次达到预设时间周期,对本设备上的数据进行数据分类,得到各个数据的热度类别。然后,待备份设备可以使用数据副本的方式对热数据进行备份,以及,将温数据和/或冷数据作为待备份数据,将待备份数据传递至编码节点,使得编码节点根据上述纠删码编码方法对待备份数据进行数据冗余备份。
对应上述的纠删码编码方法,在接下来的实施例中将描述一种恢复数据的方法。请参阅图32,图32为本申请实施例提供的一种恢复数据的方法的实现流程图。如图32所示,该方法包括步骤S3201至S3202。各步骤的实现原理如下:
S3201,获取待备份设备和校验节点的损坏信息;所述故障设备为存储有原始数据的待备份设备或存储有校验数据的校验节点。所述待备份设备的数量为N个,为提供原始数据块并参与编码的数据节点;所述校验节点为用于存储第一校验数据块和/或第二校验数据块的数据节点;所述损坏信息包括待备份设备和校验节点是否发生数据损坏。
其中,每个待备份设备的待备份数据在分块后可以得到多个原始数据块,属于同一所述待备份设备的多个原始数据块具有不同的排序位置。
所述第一校验信息块为编码节点从每个待备份设备选择一个原始数据块,且选择相同排序位置处的原始数据块进行编码后生成。
所述第二校验信息块为编码节点从每个待备份设备选择一个原始数据块,且选择不同排序位置处的原始数据块进行编码后生成,或,所述第二校验数据块为N个数据节点的N组原始数据块和一组第一校验数据块构成N+1组数据,编码节点从N+1组数据中的N组数据中各选择一个具有不同排序位置的原始数据块进行编码后生成。
如前所述,可理解地,校验节点和待备份设备可以存在重合,也可以不存在重合。
S3202,若待备份设备和校验节点中存在故障设备,则根据其他数据节点的未损坏数据块恢复故障设备的损坏数据块;故障设备为发生数据损坏的待备份设备和/或校验节点;其他数据节点为待备份设备和校验节点中除故障设备外的其余终端设备。
在本申请一些实施例中,步骤S3202包括:若确定待备份设备和校验节点中发生数据损坏或故障的故障设备的数量满足容错度,则根据其他数据节点的未损坏数据块恢复故障设备的损坏数据块。
由于增加了两组校验信息,即一组第一校验数据块和一组第二校验数据块,本申请实施例中数据损失的容错度为2,即最多能同时容忍待备份设备和校验节点中发生数据损坏或故障的故障设备的数量为2个。
在本申请一些实施例中,当确定待备份设备和校验节点中发生数据损坏的故障设备的数量为1个,从而意味着只有一个终端设备为故障设备,则根据其余数据节点的未损坏数据块恢复故障设备的损坏数据块。在本申请实施例中,将故障设备个数为1个的修复情形称为单节点故障修复。也就是说,若确定待备份设备和校验节点中仅存在一列数据块发生损坏或故障,则进行单节点故障数据的恢复。
可选地,在一种单节点故障修复示例中,当故障设备为存储第二校验数据块的校验节点,也就是说损坏数据块为第二校验数据块时,终端设备根据其余数据节点(如待备份设备和存储第一校验数据块的校验节点)的未损坏数据块恢复该校验节点中的第二校验数据块。
例如,终端设备可以使用各待备份设备的原始数据块进行编码恢复第二校验数据块。或,使用各待备份设备的原始数据块,和第一校验数据块进行编码恢复第二校验数据块。从而,当第二校验数据块发生数据故障,可以根据生成该第二校验数据块的相关的未损坏数据块进行编码,恢复损坏数据块。
可选地,在另一种单节点故障修复示例中,当故障设备为存储第一校验数据块的校验节点,则终端设备根据各待备份设备的原始数据块进行编码恢复该校验节点。
当故障设备为待备份设备中的一个,有一列原始数据块发生数据损坏或故障时,损坏数据块为原始数据块,损坏的终端设备为待备份设备,终端设备使用第一校验数据块与未损坏的原始数据块进行编码恢复损坏数据块。
从而,当第一校验数据块发生数据故障或原始数据块发生数据故障,可以根据生成第一校验数据块相关的未损坏数据块进行编码,恢复损失数据块。
在上述两种单节点故障修复示例中,采用单一的校验数据集合,即第一校验数据块的集合或第二校验数据块的集合中的一个,对损坏数据进行修复时,使用的是枚举的方式对损坏数据块进行修复,需要读取大量剩余的存活数据块,读取的数据量多,修复效率低下。
因而,针对不是第二校验数据块发生数据损坏的情形下,本申请实施例接下来提供了另一种单节点故障修复的示例。
在本示例中,对应如图27、图28和图29所示的编码方式,即对应根据原始数据块和第一校验数据块进行编码生成第二校验数据块的情形,由于生成第一校验数据块和第二校验数据块时,进行编码的数据块存在非空的数据块交集,因而,可以使用两组校验数据块进行混合修复。
此时,终端设备通过第一校验数据块和第二校验数据块对损坏数据块进行混合修复。
具体地,终端设备可以将一半损坏数据块利用第一校验数据块进行修复,另一半损坏数据块利用第二校验数据块进行修复。
本申请实施例称为单节点故障混合修复的方法。需要说明的是,当确定发生单节点故障,且发生故障的数据节点不是存储第二校验数据块的校验节点时,可以使用两列校验信息对损坏数据块进行混合修复。
作为本申请一非限制性示例,如图33所示,四个终端设备作为四个待备份设备,即设备1,设备2,设备3和设备4;两个设备作为校验节点,即设备5和设备6,设备5存储一组第一校验数据块,设备6存储一组第二校验数据块。若设备1的一组原始数据块损坏或丢失(图33中涂黑的四个数据块),若采用单一校验数据集合,即第一校验数据块和第二校验数据块中的一组,进行数据修复,需要读取设备2至设备4的12个原始数据块,以及设备5的4个第一校验数据块,共16块数据。可见,如图33所示,采用单一校验集合枚举修复需要读取16个数据块块的数据。
作为本申请另一非限制性示例,如图34所示,四个终端设备作为四个待备份设备,即设备1,设备2,设备3和设备4;两个设备作为校验节点,即设备5和设备6,设备5存储一组第一校验数据块,设备6存储一组第二校验数据块,需要说明的是,若图34所示的示例中,第二校验数据块采用图27所示的编码方式生成,即进行斜对角线方向的编码方式获得第二校验数据块。若设备1的一组原始数据块损坏或丢失(图34中涂黑的四个数据块),采用混合修复算法时,对两个损坏数据块(图34中上面两个涂黑的数据块)使用第一校验数据块进行修复;另外两个数据块(图34中下面两个涂黑的数据块)使用第二校验数据块进行修复,则不需要再读取重复的数据块,仅需要读取12个数据块就能实现单节点故障的快速修复,相比于图33所示的单一校验信息集合的修复方式,能够节约25%的数据读取量,从而提高数据修复效率,缩短恢复数据的时间。
在本申请一些实施例中,当确定待备份设备和校验节点中故障设备的个数为2个,从而意味着除了待备份设备和校验节点中发送数据丢失的节点有2个。此时,码字阵列中有两列或两行数据块丢失。
可选地,若确定待备份设备和校验节点中故障设备的个数为两个,且故障设备为存储第一校验数据块的校验节点和存储第二校验数据块的校验节点,则对待备份设备的原始数据块进行编码,恢复所述故障设备的损坏数据块。
若确定待备份设备和校验节点中故障设备的个数为两个,且故障设备为待备份设备中的一个和存储第二校验数据块的校验节点,则根据其余待备份设备的原始数据块和第一校验数据块,恢复所述故障设备的损坏数据块;其余待备份设备为待备份设备中未发生数据损坏的终端设备。
若确定待备份设备和校验节点中故障设备的个数为两个,且故障设备不包括存储第二校验数据块的校验节点,则结合其余待备份设备的原始数据块和第二校验数据块混合恢复故障设备的损坏数据块;其余待备份设备为待备份设备中未发生数据损坏的终端设备。
下面以丢失两列数据为例进行说明,也就是说,将每个待备份设备的原始数据块作为一列为例进行说明。应理解,在本申请其他示例中,还可以为丢失两行数据的情形。
丢失两列数据可以分为以下多种情况:
1)丢失的两列为校验数据列。此时,可通过前述实施例所述的编码算法进行修复,即通过行校验编码修复第一校验数据块,通过斜校验编码修复第二校验数据块。
2)丢失的两列中包含一列原始数据信息,一列斜校验信息。此时,使用行校验数据列恢复出原始数据信息,再通过斜校验编码恢复斜校验数据列。
3)丢失的两列数据块不包含斜校验数据列,即不包括第二校验数据块。此时,采用斜校验集合和行校验集合交叉修复(又称混合修复)的方式对丢失的数据块依次进行修复。
可选地,交叉修复的过程包括:
1.首先,对丢失的数据块进行分组,区分能使用斜校验信息进行修复的数据块和不能使用斜校验信息进行修复的数据块,将两者分在不同的组内,将能使用斜校验数据进行修复的数据块利用斜校验数据进行修复;
2.选择与步骤1中被修复的数据块处于同一行的丢失数据块作为接下来修复的组内成员,对该组内成员进行修复;
3.从剩余的丢失数据块中区分出能用斜校验数据进行修复的数据块,将能使用斜校验数据进行修复的数据块进行修复;
4.选择与步骤3修复的数据块处于同一行的丢失数据块作为接下来修复的组内成员,对该组内成员进行修复;
5.交替使用斜校验和行校验修复集合对丢失数据块进行修复,直到所有的数据块修复完成。将能利用斜校验数据集合进行修复的数据块都找出来,能够使用并行的方法进对多个丢失数据块进行修复,提高了数据修复效率。
作为本申请一非限制性示例。如图35至图40所示,四个终端设备作为四个待备份设备,即设备1,设备2,设备3和设备4;两个设备作为校验节点,即设备5和设备6,设备5存储行校验数据,设备6存储斜校验数据。需要说明的是,设备2和设备4的两列原始数据块损坏或丢失(图35中涂黑的两列数据块),斜校验数据采用图27所示的编码方式生成,即进行斜对角线方向的编码方式获得斜校验数据。对设备2和设备4的两列原始数据块进行恢复的过程如下:
首先,如图35所示,对丢失的两列数据块进行区分,识别出能用斜校验数据进行修复的数据块,即图35中所示的虚线椭圆标记的两个数据块D1,3和D2,1,先修复这两个数据块D1,3和D2,1
其次,如图36所示,选择与数据块D1,3处于同一行的丢失数据块D1,1,以及与数据块D2,1处于同一行的丢失数据块D2,3,作为修复对象,对这两个丢失数据块D1,1和D2,3进行修复。
之后,如图37所示,对剩余的丢失数据块进行区分,识别出能用斜校验数据进行修复的丢失数据块,即图37中所示的丢失数据块D3,3,修复这个数据块D3,3
然后,如图38所示,选择与数据块D3,3处于同一行的丢失数据块D3,1作为修复对象,对这个丢失数据块D3,1进行修复。
继而,如图39所示,对剩余的丢失数据块进行区分,识别出能用斜校验数据进行修复的丢失数据块,即图39中所示的丢失数据块D0,3,修复这个数据块D0,3
最后,如图40所示,选择与数据块D0,3处于同一行的丢失数据块D0,1作为修复对象,对这个丢失数据块D0,1进行修复,至此,所有的丢失数据块修复完成。
图41为本申请实施例提供的纠删码编码方法和数据恢复方法适用的一种数据备份系统。以下,将结合图41所示的数据备份系统,对本申请实施例适用的场景进行举例说明。
如图41所示,数据备份系统中包括四个终端设备,即手机411、笔记本电脑412、手环413和平板电脑414。
其中,手机411、笔记本电脑412、手环413和平板电脑414两两之间通过有线或无线的通信网络连接。手机411、笔记本电脑412、手环413和平板电脑414各自作为一个数据节点。
为了避免终端设备丢失或损坏造成数据丢失,或终端设备内存不足导致无法存储更多数据,例如,避免手环413的损坏或丢失造成手环413数据的丢失,或手环413存储空间有限,容易内存不足而无法存储更多数据,本申请实施例通过上述纠删码编码方法进行数据冗余备份,以及通过上述数据恢复方法恢复故障设备上的数据。
本申请实施例的方法可以在手机411、笔记本电脑412、手环413、和平板电脑414这四个数据节点中的任一数据节点进行,更一般地,该方法还可以在与这四个数据节点进行通信连接的其他数据节点进行,例如云服务器等。
在本申请一实施例中,存储数据的方法包括:将四个终端设备上的待备份的数据进行分块,得到对应每个终端设备的,按序排列的多个原始数据块;从每个终端设备中选择一个原始数据块,且选择具有相同排序位置的原始数据块,进行编码,得到第一校验数据块;从每个终端设备中选择一个原始数据块,且选择具有不同排序位置的原始数据块,进行编码,得到第二校验数据块;或四个终端设备的四组原始数据块和编码得到的一组第一校验数据块组成五组数据块,从这五组数据块中的四组数据块中各选出一个具有不同排序位置的数据块,进行编码,得到第二校验数据块;存储所述第一校验数据块和所述第二校验数据块。
可选地,在本申请一些实施例中,第一校验数据块和第二校验数据块可以一起存储在四个终端设备中的其中一个终端设备,例如笔记本电脑412,还可以分开存储在四个终端设备中的其中两个终端设备,例如笔记本电脑412和平板电脑414,还可以分开存储或一起存储在与这四个数据节点进行通信连接的其他数据节点,例如第一校验数据块和第二校验数据块一起存储在云服务器等。
可选地,在本申请一些实施例中,可以将每个终端设备分块后得到的原始数据块存储在本数据节点,即,手机411的待备份数据在分块后存储在手机411;手环413的待备份数据在分块后存储在手环413,依此类推;或者,可以将每个终端设备分块后得到的原始数据块存储在与本数据节点通信交互较好,或下线较少,或设备性能较稳定的其余三个数据节点中的至少一个,例如,手环413的待备份数据在分块后存储在设备性能稳定的笔记本电脑412。
当对图41所示的四个终端设备的待备份数据进行备份,且每个终端设备分块后得到的原始数据块存储在本数据节点,第一校验数据块和第二校验数据块一起存储在云服务器这个数据节点,图41所示的四个终端设备中的一个或两个终端设备的数据发生损坏需要恢复,例如当因手环413丢失或损坏造成无法读取其中数据的情形下,对应存储数据的方法,在本申请一实施例中,恢复数据的方法包括:获取手环待恢复的损坏数据块的信息;所述信息包括四个终端设备和校验节点(即云服务器)的信息;根据一起参与编码的其他三个终端设备,即手机411、笔记本电脑412、和平板电脑414,和/或云服务器的未损坏数据块恢复手环413的损坏数据块。
可选地,在本申请一些实施例中,可以通过读取云服务器中的第一校验数据块或第二校验数据块,通过枚举的方式恢复手环中待恢复的损坏数据块。读取的数据量多,修复的效率低。
可选地,在本申请一些实施例中,可以通过读取云服务器中的第一校验数据块和第二校验数据块,通过混合修复的方式恢复手环中待恢复的损坏数据块。数据读取开销小,修复效率高,修复时间短。
本申请实施例提供的存储数据的方法和恢复数据的方法,一方面,将数据通过编码的方式进行冗余备份,通过编码增加了一组第一校验数据块和一组第二校验数据块,相比采用副本的备份容错方式,大大降低了存储开销;另一方面,通过对相同排序位置的原始数据块进行编码,或对数据阵列进行行或列的编码,得到第一校验数据块;对不同排序位置的原始数据块进行斜向的编码,或,对不同排序位置的原始数据块和第一校验数据块进行斜向的编码,得到第二校验数据块,相比现有的纠删码编码方式,编译码计算复杂度低,存储效率高,恢复数据的速度快。
更一般地,图42为本申请实施例提供的纠删码编码方法和数据恢复方法适用的另一种数据备份系统。以下,将结合图42所示的数据备份系统,对本申请实施例适用的场景进行举例说明。
如图42所示,该数据备份系统包括六个终端设备,即终端设备421、终端设备422、终端设备423、终端设备424、终端设备425和终端设备426。其中,六个终端设备彼此间通过有线或无线的通信网络连接。每个终端设备作为一个数据节点。
在本申请一实施例中,终端设备421至终端设备424需要进行数据备份,作为原始数据块的来源,也就是说,终端设备421至终端设备424一起参与编码,作为待备份设备。终端设备421至终端设备424各自存储各自的原始数据块。
终端设备425用于存储第一校验数据块,终端设备426用于存储第二校验数据块;或,终端设备425用于存储第二校验数据块,终端设备426用于存储第一校验数据块。也就是说,终端设备425和终端设备426,作为校验节点。
在本申请另一实施例中,终端设备421至终端设备424需要进行数据备份,作为待备份设备。终端设备421至终端设备424各自存储各自的原始数据块。
终端设备425用于存储第一校验数据块和第二校验数据块,作为校验节点。
在本申请又一实施例中,终端设备421,终端设备422,终端设备423,以及终端设备425需要进行数据备份,作为待备份设备。终端设备421,终端设备422,终端设备423,以及终端设备425各自存储各自的原始数据块。
终端设备424用于存储第一校验数据块和第二校验数据块,终端设备424作为校验节点。或,终端设备424用于存储第一校验数据块,终端设备426用于存储第二校验数据块,也就是说,终端设备424和终端设备426,作为校验节点。或,终端设备424用于存储第二校验数据块,终端设备426用于存储第一校验数据块,也就是说,终端设备424和终端设备426,作为校验节点。
在本申请再一实施例中,终端设备421至终端设备424需要进行数据备份,作为待备份设备。
终端设备421和终端设备422的原始数据块均存储于终端设备421,终端设备423和终端设备424的原始数据块均存储于终端设备422。第一校验数据块和第二校验数据块存储于终端设备423,终端设备423作为校验节点。这种应用场景下,待备份设备和校验节点有重合。
在本申请再一实施例中,终端设备421至终端设备424需要进行数据备份,作为待备份设备。
终端设备421和终端设备422的原始数据块均存储于终端设备421。终端设备423的原始数据块和第一校验数据块均存储于终端设备422。终端设备423的原始数据块和第二校验数据块均存储于终端设备423。终端设备422和终端设备423作为校验节点。这种应用场景下,待备份设备和校验节点有重合。
需要说明的是,上述纠删码编码方法除了可以应用在上述分布式存储系统以外,还可以应用于其他系统,例如RAID存储系统。并且,上述纠删码编码方法中的待备份数据可以是通过上述数据分类方法确定的温数据和/或冷数据,或者,也可以是通过其他数据分类方法确定的温数据和/或冷数据,或者,也可以是其他类型的待备份数据。本申请实施例对上述纠删码编码方法所应用的系统以及参与纠删码编码的待备份数据不作任何限制。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
请参阅图43和图44,本申请实施例提供了一种终端设备4300。如图43所示,所述终端设备可以包括元数据管理模块4301、数据服务模块4302、数据热度计算模块4303、冷热数据分离模块4304以及数据分类管理模块4305。
其中,数据服务模块4302用于存储各个待分类数据。元数据管理模块4301用于存储数据的属性信息,例如写入时间、数据类型等属性信息。数据热度计算模块4303用于计算待分类数据的第一热度值。冷热数据分离模块4304用于根据第一热度值对待分类数据的热度类别进行划分。数据分类管理模块4305用于根据待分类数据的热度类别执行相应的数据管理操作。
图44是本实施例提供的数据热度计算模块4303的功能结构图。如图44所示,数据热度计算模块4303可以实现存储第二热度值的功能、管理数据访问记录的功能、热度值衰减计算功能以及第一热度值计算功能。
存储第二热度值的功能,用于存储初始热度值和前一次的第一热度值。
管理数据访问记录的功能,用于对访问记录进行管理,可以仅保留N天内的访问记录,删除N天前的访问记录,避免大量的访问记录占用终端设备过多的存储空间,其中,N为预设的正整数。在实现管理数据访问记录的功能时,终端设备可以在数据热度计算模块中设置数据列表来记录数据的访问记录,通过管理数据列表来管理数据的访问记录。访问记录中包括访问记录值以及第一时间信息。
热度值衰减计算功能,用于根据预设的第二时间衰减函数和第二时间信息计算第二热度值的第二衰减值,以及根据预设的第一时间衰减函数和各访问记录中的第一时间信息计算各访问记录中的访问热度值的第一衰减值。第二时间信息为预设时间段的起始时间。
第一热度值计算功能,用于计算数据的各条访问记录的第一衰减值的求和结果,并根据求和结果计算数据当前的第一热度值。
在本实施例中,上述终端设备的各个模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
请参阅图45,本申请实施例还提供了一种终端设备。该终端设备45包括:处理器450、存储器451以及存储在所述存储器451中并可在所述处理器450上运行的计算机程序452。所述处理器450执行所述计算机程序452时实现上述数据分类方法实施例中的步骤,例如图1所示的步骤S101至S104。或者,所述处理器450执行所述计算机程序452时实现上述各装置实施例中各模块/单元的功能。
示例性的,所述计算机程序452可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器451中,并由所述处理器450执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序452在所述终端设备45中的执行过程。例如,所述计算机程序452可以被分割成记录获取模块、第一衰减模块、热度计算模块以及分类管理模块,各模块具体功能如下:
记录获取模块,用于获取待分类数据的访问记录,所述访问记录包括访问热度值和第一时间信息;
第一衰减模块,用于根据所述第一时间信息计算第一时间衰减系数;
热度计算模块,用于根据各个访问记录对应的第一时间衰减系数以及访问热度值计算第一热度值,根据所述第一热度值确定所述待分类数据的热度类别;
分类管理模块,用于对所述待分类数据执行与所述热度类别对应的数据管理操作。
所述终端设备45可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备可包括,但不仅限于,处理器450、存储器451。本领域技术人员可以理解,图45仅仅是终端设备45的示例,并不构成对终端设备45的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器450可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器451可以是所述终端设备45的内部存储单元,例如终端设备45的硬盘或内存。所述存储器451也可以是所述终端设备45的外部存储设备,例如所述终端设备45上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器451还可以既包括所述终端设备45的内部存储单元也包括外部存储设备。所述存储器451用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器451还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (33)

1.一种数据处理方法,其特征在于,应用于第一设备,所述方法包括:
获取待分类数据的信息,所述信息包括所述待分类数据在预设时间段内的所有访问热度值和所述访问热度值对应的第一时间信息;
根据所述第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值;
根据所述各个访问热度值对应的第一衰减值计算第一热度值;
根据所述第一热度值确定所述待分类数据的热度类别。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一时间信息以及预设的第一时间衰减函数计算各个访问热度值的第一衰减值,包括:
根据所述第一时间信息以及所述预设的第一时间衰减函数计算所述各个访问热度值的第一时间衰减系数;
将所述各个访问热度值的第一时间衰减系数和所述各个访问热度值对应相乘得到所述各个访问热度值对应的第一衰减值;
所述根据所述各个访问热度值对应的第一衰减值计算第一热度值,包括:
将所述各个访问热度值对应的第一衰减值求和,得到所述第一热度值。
3.根据权利要求1所述的方法,其特征在于,所述信息还包括第二热度值和所述第二热度值对应的第二时间信息,所述第二热度值为预设的初始热度值或最近一次计算得到的第一热度值;
相应的,在所述获取待分类数据的信息之后,所述方法还包括:
根据所述第二时间信息以及预设的第二时间衰减函数计算所述第二热度值的第二衰减值,所述第二时间信息为所述预设时间段的起始时间;
相应的,所述根据所述各个访问热度值对应的第一衰减值计算第一热度值包括:
根据所述第二热度值的第二衰减值以及所述各个访问热度值对应的第一衰减值计算所述待分类数据的第一热度值;
将所述第二热度值更新为所述第一热度值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第二时间信息以及预设的第二时间衰减函数计算所述第二热度值的第二衰减值,包括:
根据所述第二时间信息以及所述预设的第二时间衰减函数计算第二时间衰减系数;
将所述第二时间衰减系数和所述第二热度值相乘得到所述第二热度值的第二衰减值;
相应的,所述根据所述第二热度值的第二衰减值以及所述各个访问热度值对应的第一衰减值计算所述待分类数据的第一热度值,包括:
将所述第二热度值的第二衰减值以及所述各个访问热度值对应的第一衰减值求和,得到所述第一热度值。
5.根据权利要求1所述的方法,其特征在于,所述热度类别包括温数据和冷数据,所述方法还包括:
从所述热度类型为温数据的待分类数据中选取第一预设比例的温数据作为第一备份数据;
对所述第一备份数据与所述热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据;
将所述热度类别为冷数据的待分类数据发送至第一指定终端,将所述第一校验数据发送至第二指定终端,删除本地存储的所述热度类别为冷数据的待分类数据。
6.根据权利要求5所述的方法,其特征在于,所述对所述第一备份数据与所述热度类别为冷数据的待分类数据进行纠删码编码,得到第一校验数据,包括:
所述第一备份数据为与所述冷数据相同数据量的温数据,对所述第一备份数据与所述热度类别为冷数据的待分类数据进行纠删码编码,得到所述第一校验数据;
或者,所述第一备份数据为与所述冷数据不同数据量的温数据,若所述第一备份数据的数据量比所述冷数据的数据量少,则将所述第一备份数据补零成与所述冷数据相同的数据量后,对补零后的第一备份数据和所述热度类别为冷数据的待分类数据进行纠删码编码,得到所述第一校验数据。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述热度类型为温数据的待分类数据中第一备份数据以外的温数据拆分成第二备份数据和第三备份数据;
对所述第二备份数据和所述第三备份数据进行纠删码编码,得到第二校验数据;
将所述第二校验数据发送至第三指定终端,并将所述第二备份数据的备份数据发送至第四指定终端。
8.根据权利要求1所述的方法,其特征在于,所述热度类别包括热数据,所述方法还包括:
将热度类别为热数据的待分类数据存储在本地的存储空间,并发送所述热数据的备份数据至数据备份终端进行备份。
9.根据权利要求1所述的方法,其特征在于,所述热度类别包括温数据,所述方法还包括:
从热度类别为温数据的待分类数据中选取第二预设比例的温数据作为第四备份数据;
对所述第四备份数据以及所述第四备份数据以外的温数据进行纠删码编码,得到第三校验数据;
将所述第三校验数据发送至第五指定终端,将所述第四备份数据发送至第六指定终端。
10.根据权利要求1所述的方法,其特征在于,所述热度类别包括冷数据,所述方法还包括:
将所述热度类别为冷数据的待分类数据拆分成第五备份数据和第六备份数据;
对所述第五备份数据和所述第六备份数据进行纠删码编码,得到第四校验数据;
将所述第五备份数据发送至第七指定终端,将所述第六备份数据发送至第八指定终端,将所述第四校验数据发送至第九指定终端,并删除本地存储的所述热度类别为冷数据的待分类数据。
11.根据权利要求1所述的方法,其特征在于,还包括:
确定纠删码条带的条带长度,所述条带长度小于或等于分布式存储系统中在线设备的数量;
获取各个待备份设备的待备份数据,所述待备份设备为存在待备份数据的在线设备,所述待备份设备包括所述第一设备,所述待备份数据包括所述待分类数据;
根据所述条带长度和所述待备份数据进行纠删码编码,得到目标校验数据;
将所述目标校验数据发送至校验节点进行存储。
12.根据权利要求11所述的方法,其特征在于,所述确定纠删码条带的条带长度,包括:
将所述在线设备的数量确定为纠删码条带的条带长度。
13.根据权利要求11所述的方法,其特征在于,所述确定纠删码条带的条带长度,包括:
确定所述在线设备中待备份设备的数量;
将所述待备份设备的数量确定为纠删码条带的条带长度。
14.根据权利要求11所述的方法,其特征在于,所述确定纠删码条带的条带长度,包括:
获取各个待备份数据的数据量;
根据预设合并规则对所述数据量小于第一阈值的待备份数据进行合并处理,得到所述数据量大于或等于第一阈值的待备份数据;
将合并处理后的待备份数据的数量确定为纠删码条带的条带长度。
15.根据权利要求11至14中任一项所述的方法,其特征在于,还包括:
将各个所述在线设备划分的数据块中最大的数据块的数据量确定为纠删码条带的条带深度;
或者,将纠删码条带的条带深度设置为预设值。
16.根据权利要求15所述的方法,其特征在于,所述根据所述条带长度和所述待备份数据进行纠删码编码,得到目标校验数据,包括:
根据所述条带长度以及各个所述待备份数据对应的原始数据块生成纠删码条带;
对所述纠删码条带进行纠删码编码,得到目标校验数据。
17.根据权利要求16所述的方法,其特征在于,在所述对所述纠删码条带进行纠删码编码,得到目标校验数据之前,还包括:
若所述纠删码条带中原始数据块的数量小于所述条带长度,则对所述纠删码条带做补零处理,使得所述纠删码条带中原始数据块的数量等于所述条带深度。
18.根据权利要求16所述的方法,其特征在于,在所述对所述纠删码条带进行纠删码编码,得到目标校验数据之前,还包括:
若所述纠删码条带中存在数据量小于所述条带深度的原始数据块,则对所述数据量小于所述条带深度的原始数据块做补零处理,使得所述数据量小于所述条带深度的原始数据块的数据量等于所述条带深度。
19.根据权利要求11所述的方法,其特征在于,所述校验节点为云存储设备或网络附属存储NAS设备。
20.根据权利要求11所述的方法,其特征在于,在所述将所述目标校验数据发送至校验节点进行存储之前,还包括:
获取各个所述在线设备的设备参数,所述设备参数包括设备可靠性、设备在线时间以及设备存储空间中的一个或多个参数;
根据各个所述在线设备的设备参数以及预设校验节点选取规则,从各个所述在线设备中选取校验节点。
21.根据权利要求11所述的方法,其特征在于,所述获取待备份数据,包括:
根据各个所述在线设备对应的元数据确定待备份设备,所述元数据用于指示所述在线设备是否存在待备份数据和/或待备份数据的数据量;
从各个所述待备份设备中读取待备份数据。
22.根据权利要求11所述的方法,其特征在于,所述根据所述条带长度和所述待备份数据进行纠删码编码,得到目标校验数据,包括:
当所述条带长度满足p为大于或等于3的素数的条件时,获取各个待备份数据对应的原始数据块,得到N组原始数据块,其中,p为N+1,N为所述条带长度,一个待备份数据对应一组原始数据块,同一组的原始数据块具有不同的排序位置;
从所述N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
从所述N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
或者,从所述N组原始数据块和一组第一校验数据块中,选取N组数据块,从所述N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块。
23.根据权利要求22所述的方法,其特征在于,所述从所述N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块,包括:
将一组原始数据块按照排序位置排成一列,不同组的原始数据块对应不同列,形成第一数据块阵列;
对所述第一数据块阵列中的每行进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
相应的,所述从所述N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
从所述第一数据块阵列的每列选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
相应的,所述从所述N组原始数据块和一组第一校验数据块中,选取N组数据块,从所述N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块,包括:
将一组第一校验数据块按照排序位置排成一列,并根据第一校验数据块对应的列对第一数据块阵列进行扩展,得到第一扩展阵列;
从所述第一扩展阵列的N+1列中选择N列,并从所述N列中每列选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
24.根据权利要求23所述的方法,其特征在于,所述从所述第一数据块阵列的每列选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对所述第一数据块阵列进行不同斜对角线的纠删码编码,得到各个不同排序位置对应的第二校验数据块;
所述从所述第一扩展阵列的N+1列中选择N列,并从所述N列中每列选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对所述第一扩展阵列进行不同斜对角线的纠删码编码,得到各个不同排序位置对应的第二校验数据块。
25.根据权利要求22所述的方法,其特征在于,所述从所述N组原始数据块中各自选取一个具有相同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第一校验数据块,包括:
将一组原始数据块按照排序位置排成一行,不同组的原始数据块对应不同行,形成第二数据块阵列;
对所述第二数据块阵列中的每列进行纠删码编码,得到各个不同排序位置对应的第一校验数据块;
相应的,所述从所述N组原始数据块中各自选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
从所述第二数据块阵列的每行选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块;
相应的,所述从所述N组原始数据块和一组第一校验数据块中,选取N组数据块,从所述N组数据块中各自选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置的对应的第二校验数据块,包括:
将一组第一校验数据块按照排序位置排成一行,并根据第一校验数据块对应的行对第二数据块阵列进行扩展,得到第二扩展阵列;
从所述第二扩展阵列的N+1行中选择N行,并从所述N行中每行选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块。
26.根据权利要求25所述的方法,其特征在于,所述从所述第二数据块阵列的每行选取一个具有不同排序位置的原始数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对所述第二数据块阵列进行不同斜对角线的编码,得到各个不同排序位置对应的第二校验数据块;
所述从所述第二扩展阵列的N+1行中选择N行,并从所述N行中每行选取一个具有不同排序位置的数据块进行纠删码编码,得到各个不同排序位置对应的第二校验数据块,包括:
对所述第二扩展阵列进行不同斜对角线的编码,得到各个不同排序位置对应的第二校验数据块。
27.根据权利要求22至26中任一项所述的方法,其特征在于,所述纠删码编码为同或编码或异或编码。
28.根据权利要求22中任一项所述的方法,其特征在于,还包括:
当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,所述目标校验数据包括所述第一校验数据块和所述第二校验数据块。
29.根据权利要求28所述的方法,其特征在于,所述当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,包括:
当存在损坏的数据块且损坏的数据块的组数小于或等于2时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,所述目标校验数据包括所述第一校验数据块和所述第二校验数据块。
30.根据权利要求28所述的方法,其特征在于,所述当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,包括:
当任意一组数据块损坏时,获取损坏的数据块的类型;
若损坏的数据块为第一校验数据块,则根据所述N组原始数据块修复损坏的第一校验数据块;
若损坏的数据块为第二校验数据块,则根据所述N组原始数据块修复损坏的第二校验数据块,或者,根据所述N组原始数据块和所述第一校验数据块修复损坏的第二校验数据块;
若损坏的数据块为原始数据块,则根据未损坏的原始数据块和所述第一校验数据块修复损坏的原始数据块,或者,根据未损坏的原始数据块、所述第一校验数据块和所述第二校验数据块混合修复损坏的数据块。
31.根据权利要求28所述的方法,其特征在于,所述当存在损坏的数据块时,根据未损坏的原始数据块和未损坏的目标校验数据修复损坏的数据块,包括:
当任意两组数据块损坏时,获取损坏的数据块的类型;
若损坏的数据块为一组第一校验数据块和一组第二校验数据块,则根据所述N组原始数据块修复损坏的第一校验数据块和第二校验数据块;
若损坏的数据块为一组原始数据块和一组第二校验数据块,则根据未损坏的原始数据块和第一校验数据块修复损坏的原始数据块和第二校验数据块;
若损坏的数据块不包括第二校验数据块,则根据未损坏的原始数据块和所述第二校验数据块混合修复损坏的数据块。
32.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至31任一项所述的方法。
33.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至31任一项所述的方法。
CN202011167995.2A 2019-12-11 2020-10-27 数据处理方法、装置、终端设备及计算机可读存储介质 Pending CN112948171A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/128785 WO2021115021A1 (zh) 2019-12-11 2020-11-13 数据处理方法、装置、终端设备及计算机可读存储介质

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
CN201911268590 2019-12-11
CN2019112685905 2019-12-11
CN201911425935 2019-12-31
CN2019114259353 2019-12-31
CN202010741937 2020-07-29
CN202010741937X 2020-07-29

Publications (1)

Publication Number Publication Date
CN112948171A true CN112948171A (zh) 2021-06-11

Family

ID=76234576

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011167995.2A Pending CN112948171A (zh) 2019-12-11 2020-10-27 数据处理方法、装置、终端设备及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN112948171A (zh)
WO (1) WO2021115021A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568576A (zh) * 2021-07-23 2021-10-29 杭州朗和科技有限公司 数据处理方法及装置、存储介质、电子设备
CN113722152A (zh) * 2021-08-05 2021-11-30 四川大学 一种数据增量备份方法、装置、设备及存储介质
CN114547027A (zh) * 2022-02-11 2022-05-27 清华大学 容量和价值约束的数据压缩处理方法、装置及存储介质
CN115033187A (zh) * 2022-08-10 2022-09-09 蓝深远望科技股份有限公司 一种基于大数据的分析管理方法
CN115131784A (zh) * 2022-04-26 2022-09-30 东莞博奥木华基因科技有限公司 一种图像处理方法、装置、电子设备及存储介质

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568580A (zh) * 2021-07-29 2021-10-29 广州市品高软件股份有限公司 分布式存储系统的实现方法、装置、介质及存储系统
CN114374704B (zh) * 2021-12-29 2023-07-07 张海滨 可靠广播方法、装置、系统及介质
CN114879904B (zh) * 2022-04-22 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 一种数据存储纠删方法、装置、设备及可读存储介质
CN114625325B (zh) * 2022-05-16 2022-09-23 阿里云计算有限公司 分布式存储系统及其存储节点离线处理方法
CN116192242B (zh) * 2023-04-25 2023-07-21 华南农业大学 一种无人飞机低空遥感数据自适应分片处理算法
CN118012851A (zh) * 2024-04-08 2024-05-10 浪潮通信信息系统有限公司 场景数据管理方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103997512B (zh) * 2014-04-14 2017-06-30 南京邮电大学 一种面向云存储系统的数据副本数量确定方法
CN106569962A (zh) * 2016-10-19 2017-04-19 暨南大学 一种基于增强时间局部性的热点数据识别方法
CN109144895B (zh) * 2017-06-15 2023-11-14 中兴通讯股份有限公司 一种数据存储方法及装置
US10901907B2 (en) * 2017-10-19 2021-01-26 Samsung Electronics Co., Ltd. System and method for identifying hot data and stream in a solid-state drive
CN109144417A (zh) * 2018-08-16 2019-01-04 广州杰赛科技股份有限公司 一种云存储方法、系统和设备
CN110502452B (zh) * 2019-07-12 2022-03-29 华为技术有限公司 访问电子设备中的混合缓存的方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113568576A (zh) * 2021-07-23 2021-10-29 杭州朗和科技有限公司 数据处理方法及装置、存储介质、电子设备
CN113722152A (zh) * 2021-08-05 2021-11-30 四川大学 一种数据增量备份方法、装置、设备及存储介质
CN113722152B (zh) * 2021-08-05 2023-08-01 四川大学 一种数据增量备份方法、装置、设备及存储介质
CN114547027A (zh) * 2022-02-11 2022-05-27 清华大学 容量和价值约束的数据压缩处理方法、装置及存储介质
CN114547027B (zh) * 2022-02-11 2023-01-31 清华大学 容量和价值约束的数据压缩处理方法、装置及存储介质
CN115131784A (zh) * 2022-04-26 2022-09-30 东莞博奥木华基因科技有限公司 一种图像处理方法、装置、电子设备及存储介质
CN115033187A (zh) * 2022-08-10 2022-09-09 蓝深远望科技股份有限公司 一种基于大数据的分析管理方法
CN115033187B (zh) * 2022-08-10 2022-11-08 蓝深远望科技股份有限公司 一种基于大数据的分析管理方法

Also Published As

Publication number Publication date
WO2021115021A1 (zh) 2021-06-17

Similar Documents

Publication Publication Date Title
CN112948171A (zh) 数据处理方法、装置、终端设备及计算机可读存储介质
US10613776B2 (en) Appyling multiple hash functions to generate multiple masked keys in a secure slice implementation
US10481978B2 (en) Optimal slice encoding strategies within a dispersed storage unit
CN107885612B (zh) 数据处理方法和系统及装置
US20160006461A1 (en) Method and device for implementation data redundancy
US9223654B2 (en) Resilient distributed replicated data storage system
US20100318575A1 (en) Storage or removal actions based on priority
CN105404469A (zh) 一种视频数据的存储方法和系统
WO2019001521A1 (zh) 数据存储方法、存储设备、客户端及系统
CN105893169A (zh) 一种基于纠删码的文件存储方法和系统
CN111400083A (zh) 数据存储方法及系统、存储介质
CN110941514A (zh) 一种数据备份方法、恢复方法、计算机设备和存储介质
CN114546707A (zh) 数据处理方法及装置
CN107153661A (zh) 一种基于hdfs系统的数据的存储、读取方法及其装置
CN112860189A (zh) 一种成本驱动的冷热分层云存储冗余存储方法与系统
JP6671708B2 (ja) バックアップリストアシステム及びバックアップリストア方法
CN110457163B (zh) 一种分布式块存储的数据恢复方法、装置及存储介质
US20230205630A1 (en) Rebuilding Missing Data in a Storage Network via Locally Decodable Redundancy Data
US10958731B2 (en) Indicating multiple encoding schemes in a dispersed storage network
CN115878381A (zh) 基于srm盘的数据恢复方法及装置、存储介质、电子装置
US10506045B2 (en) Memory access using deterministic function and secure seed
CN111625502B (zh) 数据读取方法及装置、存储介质、电子装置
CN112799872B (zh) 一种基于键值对存储系统的纠删码编码方法及装置
US10838660B2 (en) Identifying and processing predefined dispersed storage network workflows
US11645333B1 (en) Garbage collection integrated with physical file verification

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