CN102937967B - 数据冗余实现方法及装置 - Google Patents
数据冗余实现方法及装置 Download PDFInfo
- Publication number
- CN102937967B CN102937967B CN201210384091.4A CN201210384091A CN102937967B CN 102937967 B CN102937967 B CN 102937967B CN 201210384091 A CN201210384091 A CN 201210384091A CN 102937967 B CN102937967 B CN 102937967B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- stored
- data block
- mentioned
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种数据冗余实现方法及装置,其中,该方法包括:获取待存储数据的存储策略标识;采用与存储策略标识相应的存储方式存储待存储数据,其中,存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式。本发明解决了相关技术中无法提供更高的存储空间利用率的问题,从而在确保数据安全性、可靠性的同时,提高存储空间的利用率,提高了数据冗余的实现的灵活性。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种数据冗余实现方法及装置。
背景技术
在分布式文件***中,大规模地使用了外设存储和本地存储设备。如果在存储***中不采取额外的数据冗余方案,每增加一个节点都会导致整个***安全性能的下降。随着容量的扩展,***变得越来越不安全,以致于几乎不可用。为了保证数据和***的安全性,必须采用数据冗余方案对数据进行保护,保证在一定数量的节点发生故障丢失数据之后,通过冗余数据来恢复故障节点,确保数据安全。在信息时代的今天,大量数据的存储使得存储空间成为必要的资源。目前的分布式文件***大多采用的是完全副本方式的冗余,该方式只需要有一个副本安全就可以提供服务,但其有一个不足就是存储空间利用率较低。现有的数据冗余技术无法提供更高的存储空间利用率。因此,需要一种新的分布式文件***数据冗余策略,能够根据存储环境的需求和实际条件,保证数据的可靠性和提高存储空间的利用率。
针对相关技术中上述至少之一的问题,目前尚未提出有效的解决方案。
发明内容
本发明提供了一种数据冗余实现方法及装置,以至少解决相关技术中无法提供更高的存储空间利用率的问题。
根据本发明的一个方面,提供了一种数据冗余实现方法,其包括:获取待存储数据的存储策略标识;采用与上述存储策略标识相应的存储方式存储上述待存储数据,其中,上述存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式。
优选地,采用纠删编解码处理的存储方式存储上述待存储数据包括:从元数据服务器获取对上述待存储数据进行纠删码EC编码的编码比例信息,其中,上述编码比例信息包括:将上述待存储数据的每一页数据划分的数据块的数量N、每一页数据块编码后的冗余数据块的数量M,上述N和上述M为自然数;根据上述编码比例信息和上述待存储数据的大小将上述待存储数据的每一页数据划分成上述N个数据块,并以上述N个数据块为一组进行EC编码,并每一组生成上述M个冗余数据块;在对一页中所有的数据块编码完成的情况下,将上述一页的编码后的数据块存储到数据库中。
优选地,将上述一页的编码后的数据块存储到数据库中包括:向上述数据库发送申请上述N加上述M个存储节点的请求消息;接收上述请求消息的回复消息,其中,上述回复消息包括:上述N加上述M个存储节点的节点信息、上述N加上述M个存储节点的位置信息;根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述M个数据块分别存储到申请到的上述N加上述M个存储节点中。
优选地,根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述 M个数据块分别存储到申请到的上述N加上述M个存储节点中包括:检测到每一页编码后的数据块中有大于上述M个数据块存储失败的情况下,发送存储失败的告警或通知。
优选地,根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述 M个数据块分别存储到申请到的上述N加上述M个存储节点中包括:检测到每一页编码后的数据块中有小于等于上述M个数据块存储失败的情况下,将存储失败的数据块重新存储到上述存储失败数据块对应的存储节点中,或者将存储失败的数据块重新存储到新申请的存储节点中。
优选地,在采用与上述存储策略标识相应的存储方式存储上述待存储数据之后,上述数据冗余实现方法还包括:获取待读取数据的读取信息,其中,上述读取信息包括:上述待读取数据的存储策略标识;根据上述待读取数据的存储策略标识采用相应的读取方式读取上述待读取数据,其中,上述待读取数据的存储策略标识用于指示上述待读取数据的存储方式采用以下至少之一:副本冗余处理方式、纠删编解码处理方式。
优选地,根据上述待读取数据的存储策略标识采用相应的读取方式读取上述待读取数据包括:在上述待读取数据的存储方式采用纠删编解码处理方式的情况下,获取存储上述待读取数据的每一页编码后的N加M个数据块对应的存储信息,其中,上述存储信息包括:上述N加上述M个存储节点的存储节点信息、上述N加上述M个存储节点的位置信息,上述N和上述M为自然数;根据上述存储信息从上述N加上述M个存储节点中读取上述每一页编码后的上述N加上述M个数据块;从读取的上述N加上述M个数据块中按照顺序选择上述N个数据块进行EC解码,恢复得到上述每一页的数据。
根据本发明的另一方面,提供了一种数据冗余实现装置,其包括:第一获取模块,用于获取待存储数据的存储策略标识;存储模块,用于采用与上述存储策略标识相应的存储方式存储上述待存储数据,其中,上述待存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式。
优选地,上述存储模块包括:获取单元,用于从元数据服务器获取对上述待存储数据进行EC编码的编码比例信息,其中,上述编码比例信息包括:将上述待存储数据的每一页数据划分的数据块的数量N、每一页数据块编码后的冗余数据块的数量M,上述N和上述M为自然数;编码单元,用于根据上述编码比例信息和上述待存储数据的大小将上述待存储数据的每一页数据划分成上述N个数据块,并以上述N个数据块为一组进行EC编码,并每一组生成上述M个冗余数据块;存储单元,用于在对一页中所有的数据块编码完成的情况下,将上述一页的编码后的数据块存储到数据库中。
优选地,上述数据冗余实现装置还包括:第二获取模块,用于获取待读取数据的读取信息,其中,上述读取信息包括:上述待读取数据的存储策略标识;读取模块,用于根据上述待读取数据的存储策略标识采用相应的读取方式读取上述待读取数据,其中,上述待读取数据的存储策略标识用于指示上述待读取数据的存储方式采用以下至少之一:副本冗余处理方式、纠删编解码处理方式。
在本发明中,首先获取上述待存储数据的存储策略标识,该存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式,然后,采用与所述存储策略标识相应的存储方式存储所述待存储数据,即可以根据不同需要或实际条件对待存储数据的存储方式进行设置,例如,当存储空间充裕时,可以采用副本冗余处理方式来存储上述待存储数据,当需要提高存储空间利用率时,可以采用纠删编解码处理方式来存储上述待存储数据,以在确保数据安全性、可靠性的同时,降低数据冗余度,提高存储空间的利用率,因此,实现可以根据不同需要或实际条件对待存储数据的存储方式进行设置,从而提高了数据冗余的实现的灵活性。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据冗余实现方法的流程图;
图2是根据本发明实施例的数据冗余实现装置的结构框图;
图3是根据本发明实施例的存储模块的结构框图;
图4是根据本发明实施例的另一种数据冗余实现装置的结构框图;
图5是根据本发明实施例的数据冗余实现***的架构示意图;
图6是根据本发明实施例的采用纠删编解码处理方式时对数据进行纠删编码的流程图;
图7是根据本发明实施例的采用纠删编解码处理方式时对数据进行纠删解码的流程图;
图8是根据本发明实施例的采用纠删编解码处理方式写入文件的流程图;以及
图9是根据本发明实施例的采用纠删编解码处理方式读取文件的流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本实施例提供了一种数据冗余实现方法,如图1所示,该数据冗余实现方法包括步骤S102 至步骤S104。
步骤S102:获取待存储数据的存储策略标识。
步骤S104:采用与存储策略标识相应的存储方式存储待存储数据,其中,存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式。
通过上述步骤,首先获取上述待存储数据的存储策略标识,该存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式,然后,采用与所述存储策略标识相应的存储方式存储所述待存储数据,即可以根据不同需要或实际条件对待存储数据的存储方式进行设置,例如,当存储空间充裕时,可以采用副本冗余处理方式来存储上述待存储数据,当需要提高存储空间利用率时,可以采用纠删编解码处理方式来存储上述待存储数据,以在确保数据安全性、可靠性的同时,降低数据冗余度,提高存储空间的利用率,因此,实现可以根据不同需要或实际条件对待存储数据的存储方式进行设置,从而提高了数据冗余的实现的灵活性。
优选地,上述数据冗余实现方法可以适用于分布式文件***,以提高分布式文件***的存储空间利用率,同时也保障了存储数据的可靠性。通过根据配置环境和需求,确定对待存储数据进行副本冗余处理或者纠删编解码处理。副本冗余技术,即保存多个要存储的数据的完整副本。纠删编码处理是对待存储数据按照纠删码(Erasure Code,简称为EC)算法进行编码,形成若干个分片;当***发现部分分片损坏后,通过对编码的数据的进行译码算法,仍能将数据正确恢复,从而避免***数据崩溃。当存储空间充裕时,可以选择副本冗余机制,当数据异常时,只需要有一个副本正常即可;当需要提高存储空间利用率时,则可以选择纠删编解码的方式提高数据可靠性保证。因此上述数据冗余实现方法提出了一种新的适用于分布式文件***数据冗余的可配置实现方案
与现有单一的完全副本的数据冗余实现方法相比,上述数据冗余实现方法可以在存储空间足够时,可以采用完全副本方式;也可以在同样的存储空间下,使用EC算法对待存储数据进行编码,该存储方式将比完全复制方式的冗余度更低。因此,相对于单一采用副本机制实现数据可靠性的存储方式,在同样的数据可靠性下,通过EC算法的数据冗余实现方式可以有效地提高存储空间的利用率。根据冗余方案配置的不同,对需要存储的数据进行相应的冗余方案存储,极大地增加了存储***的实用性。该方案优选地适用于有元数据服务器的分布式文件***中。
在上述步骤S104中,可以通过以下步骤来采用纠删编解码处理的存储方式存储上述待存储数据,例如,采用上述纠删编解码处理的存储方式存储上述待存储数据包括:从元数据服务器获取对上述待存储数据进行EC编码的编码比例信息,其中,上述编码比例信息包括:将上述待存储数据的每一页数据划分的数据块的数量N、每一页数据块编码后的冗余数据块的数量M,上述N和上述M为自然数;根据上述编码比例信息和上述待存储数据的大小将上述待存储数据的每一页数据划分成上述N个数据块,并以上述N个数据块为一组进行EC编码,并每一组生成上述M个冗余数据块;在对一页中所有的数据块编码完成的情况下,将上述一页的编码后的数据块存储到数据库中。
优选地,上述N值、M值可以根据不同需要进行设置,例如,在存储空间充裕的情况下,可以将M设置的大一些,N值设置的小一些,当待存储数据较大,和/或需要提高存储空间利用率的情况下,将M值设置的小一点,N值设置的大一些,即可以根据不同需要和/或实际条件设置合适的N值和M值。
在实施过程中,可以通过本优选实施例中的以下步骤来将上述一页的编码后的数据块存储到数据库中,例如,在未对一页中所有的数据块编码完成的情况下,可以申请N加M个缓存区,将编码后的数据块存储到申请的缓存区中,在对一页中所有的数据块编码完成的情况下,向上述数据库发送申请上述N加上述M个存储节点的请求消息;接收上述请求消息的回复消息,其中,上述回复消息包括:上述N加上述M个存储节点的节点信息、上述N加上述 M个存储节点的位置信息;根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述M个数据块分别存储到申请到的上述N加上述M个存储节点中。
为了提高数据的可靠性,在本优选实施例中,根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述M个数据块分别存储到申请到的上述N加上述M个存储节点中包括:检测到每一页编码后的数据块中有大于上述M个数据块存储失败的情况下,发送存储失败的告警或通知。即检测到有大于上述M个数据块存储失败的情况下,发送存储(写入)失败的告警或通知,以指示上述待存储数据存储失败。
在检测到有数据块存储失败的情况下,为了提高数据的可靠性,在本优选实施例中,根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述M个数据块分别存储到申请到的上述N加上述M个存储节点中包括:检测到每一页编码后的数据块中有小于等于上述M个数据块存储失败的情况下,将存储失败的数据块重新存储到上述存储失败数据块对应的存储节点中,或者将存储失败的数据块重新存储到新申请的存储节点中。
为了满足不同应用场景的需求,在本优选实施例中,在采用与上述存储策略标识相应的存储方式存储上述待存储数据之后,上述数据冗余实现方法还包括:获取待读取数据的读取信息,其中,上述读取信息包括:上述待读取数据的存储策略标识;根据上述待读取数据的存储策略标识采用相应的读取方式读取上述待读取数据,其中,上述待读取数据的存储策略标识用于指示上述待读取数据的存储方式采用以下至少之一:副本冗余处理方式、纠删编解码处理方式。即在存储数据后,可以再根据存储方式读取数据,并对编码后的数据进行解码,以恢复数据。
在本优选实施例中,可以通过以下步骤来采用纠删编解码处理方式读取上述待读取数据,例如,根据上述待读取数据的存储策略标识采用相应的读取方式读取上述待读取数据包括:在上述待读取数据的存储方式采用纠删编解码处理方式的情况下,获取存储上述待读取数据的每一页编码后的N加M个数据块对应的存储信息,其中,上述存储信息包括:上述N加上述M个存储节点的存储节点信息、上述N加上述M个存储节点的位置信息,上述N和上述 M为自然数;根据上述存储信息从上述N加上述M个存储节点中读取上述每一页编码后的上述N加上述M个数据块;从读取的上述N加上述M个数据块中按照顺序选择上述N个数据块进行EC解码,恢复得到上述每一页的数据。
在本优选实施例中,提供了一种数据冗余实现装置,如图2所示,该数据冗余实现装置包括:第一获取模块202,用于获取待存储数据的存储策略标识;存储模块204,连接至第一获取模块202,用于采用与上述存储策略标识相应的存储方式存储上述待存储数据,其中,上述存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式。
在上述优选实施例中,首先第一获取模块202获取上述待存储数据的存储策略标识,该存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式,然后,存储模块204采用与所述存储策略标识相应的存储方式存储所述待存储数据,即可以根据不同需要或实际条件对待存储数据的存储方式进行设置,例如,当存储空间充裕时,可以采用副本冗余处理方式来存储上述待存储数据,当需要提高存储空间利用率时,可以采用纠删编解码处理方式来存储上述待存储数据,以在确保数据安全性、可靠性的同时,降低数据冗余度,提高存储空间的利用率,因此,实现可以根据不同需要或实际条件对待存储数据的存储方式进行设置,从而提高了数据冗余的实现的灵活性。
在本优选实施例中,如图3所示,上述存储模块204包括:第一获取单元2042,用于从元数据服务器获取对上述待存储数据进行EC编码的编码比例信息,其中,上述编码比例信息包括:将上述待存储数据的每一页数据划分的数据块的数量N、每一页数据块编码后的冗余数据块的数量M,上述N和上述M为自然数;编码单元2044,连接至第一获取单元2042,用于根据上述编码比例信息和上述待存储数据的大小将上述待存储数据的每一页数据划分成上述N个数据块,并以上述N个数据块为一组进行EC编码,并每一组生成上述M个冗余数据块;存储单元2046,连接至编码单元2044,用于在对一页中所有的数据块编码完成的情况下,将上述一页的编码后的数据块存储到数据库中。
在本优选实施中,上述存储单元2046还包括:发送子单元,用于向上述数据库发送申请上述N加上述M个存储节点的请求消息;接收子单元,连接至发送子单元,用于接收上述请求消息的回复消息,其中,上述回复消息包括:上述N加上述M个存储节点的节点信息、上述N加上述M个存储节点的位置信息;第一存储子单元,连接至接收子单元,用于根据上述节点信息和上述位置信息将上述每一页数据块编码后的上述N加上述M个数据块分别存储到申请到的上述N加上述M个存储节点中。
在检测到有数据块存储失败的情况下,为了提高数据的可靠性,在本优选实施例中,上述存储单元2046还包括:发送子单元,用于检测到每一页编码后的数据块中有大于上述M个数据块存储失败的情况下,发送存储失败的告警或通知。第二存储子单元,用于检测到每一页编码后的数据块中有小于等于上述M个数据块存储失败的情况下,将存储失败的数据块重新存储到上述存储失败数据块对应的存储节点中,或者将存储失败的数据块重新存储到新申请的存储节点中。
为了满足不同应用场景的需求,在本优选实施例中,如图4所示,上述数据冗余实现装置还包括:第二获取模块206,用于获取待读取数据的读取信息,其中,上述读取信息包括:上述待读取数据的存储策略标识;读取模块208,连接至第二获取模块206,用于根据上述待读取数据的存储策略标识采用相应的读取方式读取上述待读取数据,其中,上述待读取数据的存储策略标识用于指示上述待读取数据的存储方式采用以下至少之一:副本冗余处理方式、纠删编解码处理方式。
在本优选实施例中,上述读取模块208可以包括:第二获取单元,用于在上述待读取数据的存储方式采用纠删编解码处理方式的情况下,获取存储上述待读取数据的每一页编码后的N加M个数据块对应的存储信息,其中,上述存储信息包括:上述N加上述M个存储节点的存储节点信息、上述N加上述M个存储节点的位置信息,上述N和上述M为自然数;读取单元,连接至第二获取单元,用于根据上述存储信息从上述N加上述M个存储节点中读取上述每一页编码后的上述N加上述M个数据块;解码单元,连接至读取单元,用于从读取的上述N加上述M个数据块中按照顺序选择上述N个数据块进行EC解码,恢复得到上述每一页的数据。
优选地,上述数据冗余实现装置可以优选地适用于分布式文件***中的文件访问客户端上。
以下结合附图对上述各个优选实施例进行详细地描述。
图5是根据本发明实施例的数据冗余实现***的架构示意图,如图5所示,该数据冗余实现***包括:文件访问客户端:负责为本文件***面向的应用程序提供类似于标准文件***的接口调用服务;同时作为EC的实际编解码侧存在。在其上电后从元数据服务器侧获取数据存储策略,完成相应的数据副本存储或EC编解码算法;
元数据服务器(File Location Register,简称为FLR(文件定位寄存器)):负责管理本文件***内所有文件的文件名、数据块等元数据信息;并向文件访问客户端提供元数据写入和查询等操作;在原有的元数据的基础上,为了实现上述EC功能,增加了文件存储属标志位来标识当前文件的存储策略。在打开文件时,FLR去数据库获取该标志位,不同的存储属性采取不同的处理流程。文件以EC存储策略存储时,元数据服务器需要去数据库获取EC的编码比例,进而确定chunk(数据块)的副本个数并返回给文件访问客户端;
文件访问服务器:负责与本文件***内的存储介质进行交互,进行实际数据块的读写操作;响应文件访问客户端的数据读写请求,从存储媒介上读取数据并返回给文件访问客户端;从文件访问客户端读取数据并写入存储媒介;
存储媒介:一般为普通的SCSI(小型计算机***接口,Small Computer SystemInterface) 磁盘或SATA(串行高级技术附件,Serial Advanced Technology Attachment)磁盘。
基于上述数据冗余实现***,在本优选实施例中,以分布式文件***为例,目前分布式文件***(Distributed File System,简称为DFS)的文件访问客户端(FileAccessClient,简称为FAC)是以page为单位管理文件的。FAC向文件访问服务器(File AccessServer,简称为 FAS)写入文件时,也是以page为单位进行操作的。为了支持Erasure Code,FAC就需要对 page进行RS(里德-所罗门码,Reed-solomon Codes)编码。再将编码后的数据写入存储服务器FAS。图6是根据本发明实施例的采用纠删编解码处理方式时对数据进行纠删编码的流程图,如图6所示,该流程可以包括如下步骤:
步骤S602:FAC选取一个page(相当于上述待存储数据);
步骤S604:FAC从page中读取K个WORD(字节)数据;
步骤S606:对page中的数据进行RS编码,得到N个WORD编码后的数据。
步骤S608:将N个WORD编码后的数据分别依次写入N个编码缓冲区。
步骤S610:判断是否读完一个page,若是,则转至步骤S612,若否,则转至步骤S604。
步骤S612:将N个编码缓冲区的数据分别写入对应的FAS,转至步骤S602。
图7是根据本发明实施例的采用纠删编解码处理方式时对数据进行纠删解码的流程图,如图7所示,该流程可以包括如下步骤:
步骤S702:FAC从K个FAS中分别依次读取数据到K个解码缓存区中。
步骤S704:FAC从K个解码缓存区依次分别选取一个WORD数据,即共K个WORD 数据。
步骤S706:FAC对上述K个WORD数据进行解码,生成K个解码后的数据。
步骤S708:FAC将上述K个解码后的数据依次存入page中。
步骤S710:FAC判断是否读完解码缓冲区的数据,若是,则转至步骤S702,若否,则转至步骤S704。
在本优选实施例中,以上述存储策略标识指示配置为纠删编解码策略为例,使用文件访问客户端作为纠删编解码的实现侧,将编码后的冗余数据刷入文件访问服务器;数据部分分片异常时,文件访问客户端从文件服务器读出其他分片,由文件访问客户端实现解码,获得原始数据。图8是根据本发明实施例的采用纠删编解码处理方式写入文件的流程图,如图8 所示,该流程可以包括如下步骤:
步骤S802:调用write(写)接口之前,文件访问客户端需要先open(打开)该文件(相当于上述待存储数据)获取文件描述符(fd),以及通过元数据服务器从数据库获取该文件chunk (文件块)的冗余机制(相当于上述存储策略标识)是双副本还是EC的标识符。
步骤S804:进入write(写)接口中,判断存储策略标识,然后调用相应的策略流程。
步骤S806:以page(页)为单位,将page(页)分割成更小的数据块(每个数据块的大小可以为1Byte(字节)或其他,可根据实际N和M值及pagesize(页大小)设置,设置后不可更改),然后每N个数据块为一组进行EC编码,将编码后的数据块存入新申请的N+M个缓存中,直至一个page(页)的所有块都编码完成,再写下一个page(页)。
步骤S808:FAC(文件访问客户端)端从缓存中将编码后的数据块写入FAS(文件访问服务器)之前,需要向数据库申请N+M个存储节点,获取N+M个存储节点的存储节点信息及位置信息,然后才能将这N+M个编码后的数据块写入分别写入获取到的FAS(文件访问服务器)中。
在步骤S808中,如果其中有节点写失败,则尝试重新写入(两种重试:一是重试继续写该节点,一是重试申请写入其他节点),如果有超过M个节点写失败,则该page(页)写失败,即该文件写失败,发写失败告警或通知;如果只有不超过M个节点写失败,则要么重试,要么不管失败,但后续可以采取解码恢复,或在读取的时候采取解码恢复。
图9是根据本发明实施例的采用纠删编解码处理方式读取文件的流程图,如图9所示,该流程可以包括以下步骤:
步骤S902:FAC先open(打开)文件(相当于上述待读取数据),通过元数据服务器从数据库获取策略标识符。
步骤S904:判断标识符是何种冗余策略,进入对应流程。
步骤S906:一个page(页)一个page(页)读取,在读取一个page(页)时,需要首先获取存储这个page(页)的分割块的N+M个存储节点的存储节点信息。
步骤S908:从这N+M个节点中将N+M个chunk(文件块)读取到FAC(文件访问服务器)侧,然后通过分割块的大小,按顺序从这些chunk(文件块)中取N个数据块解码恢复 page(页)的第一组N个实际数据块,直至完全恢复整个page(页);
在步骤S908中,只要不超过M个节点读失败,就能完全恢复这个page(页)的实际数据;一旦超过M个节点读失败,则读这个page(页)失败。
从以上的描述中,可以看出,本发明实现了如下技术效果:首先获取上述待存储数据的存储策略标识,该存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式,然后,采用与所述存储策略标识相应的存储方式存储所述待存储数据,即可以根据不同需要或实际条件对待存储数据的存储方式进行设置,例如,当存储空间充裕时,可以采用副本冗余处理方式来存储上述待存储数据,当需要提高存储空间利用率时,可以采用纠删编解码处理方式来存储上述待存储数据,以在确保数据安全性、可靠性的同时,降低数据冗余度,提高存储空间的利用率,因此,实现可以根据不同需要或实际条件对待存储数据的存储方式进行设置,从而提高了数据冗余的实现的灵活性。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种数据冗余实现方法,其特征在于,包括:
获取待存储数据的存储策略标识;
采用与所述存储策略标识相应的存储方式存储所述待存储数据,其中,所述存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式;
采用纠删编解码处理的存储方式存储所述待存储数据包括:
从元数据服务器获取对所述待存储数据进行纠删码EC编码的编码比例信息,其中,所述编码比例信息包括:将所述待存储数据的每一页数据划分的数据块的数量N、每一页数据块编码后的冗余数据块的数量M,所述N和所述M为自然数;
根据所述编码比例信息和所述待存储数据的大小将所述待存储数据的每一页数据划分成所述N个数据块,并以所述N个数据块为一组进行EC编码,并每一组生成所述M个冗余数据块;
在对一页中所有的数据块编码完成的情况下,将所述一页的编码后的数据块存储到数据库中;
其中,将所述一页的编码后的数据块存储到数据库中包括:
向所述数据库发送申请所述N加所述M个存储节点的请求消息;
接收所述请求消息的回复消息,其中,所述回复消息包括:所述N加所述M个存储节点的节点信息、所述N加所述M个存储节点的位置信息;
根据所述节点信息和所述位置信息将所述每一页数据块编码后的所述N加所述M个数据块分别存储到申请到的所述N加所述M个存储节点中。
2.根据权利要求1所述的方法,其特征在于,根据所述节点信息和所述位置信息将所述每一页数据块编码后的所述N加所述M个数据块分别存储到申请到的所述N加所述M个存储节点中包括:
检测到每一页编码后的数据块中有大于所述M个数据块存储失败的情况下,发送存储失败的告警或通知。
3.根据权利要求1所述的方法,其特征在于,根据所述节点信息和所述位置信息将所述每一页数据块编码后的所述N加所述M个数据块分别存储到申请到的所述N加所述M个存储节点中包括:
检测到每一页编码后的数据块中有小于等于所述M个数据块存储失败的情况下,将存储失败的数据块重新存储到所述存储失败数据块对应的存储节点中,或者将存储失败的数据块重新存储到新申请的存储节点中。
4.根据权利要求1所述的方法,其特征在于,在采用与所述存储策略标识相应的存储方式存储所述待存储数据之后,还包括:
获取待读取数据的读取信息,其中,所述读取信息包括:所述待读取数据的存储策略标识;
根据所述待读取数据的存储策略标识采用相应的读取方式读取所述待读取数据,其中,所述待读取数据的存储策略标识用于指示所述待读取数据的存储方式采用以下至少之一:副本冗余处理方式、纠删编解码处理方式。
5.根据权利要求4所述的方法,其特征在于,根据所述待读取数据的存储策略标识采用相应的读取方式读取所述待读取数据包括:
在所述待读取数据的存储方式采用纠删编解码处理方式的情况下,获取存储所述待读取数据的每一页编码后的N加M个数据块对应的存储信息,其中,所述存储信息包括:所述N加所述M个存储节点的存储节点信息、所述N加所述M个存储节点的位置信息,所述N和所述M为自然数;
根据所述存储信息从所述N加所述M个存储节点中读取所述每一页编码后的所述N加所述M个数据块;
从读取的所述N加所述M个数据块中按照顺序选择所述N个数据块进行EC解码,恢复得到所述每一页的数据。
6.一种数据冗余实现装置,其特征在于,包括:
第一获取模块,用于获取待存储数据的存储策略标识;
存储模块,用于采用与所述存储策略标识相应的存储方式存储所述待存储数据,其中,所述待存储策略标识用于指示采用以下存储方式的至少之一:副本冗余处理方式、纠删编解码处理方式;
所述存储模块包括:获取单元,用于从元数据服务器获取对所述待存储数据进行EC编码的编码比例信息,其中,所述编码比例信息包括:将所述待存储数据的每一页数据划分的数据块的数量N、每一页数据块编码后的冗余数据块的数量M,所述N和所述M为自然数;编码单元,用于根据所述编码比例信息和所述待存储数据的大小将所述待存储数据的每一页数据划分成所述N个数据块,并以所述N个数据块为一组进行EC编码,并每一组生成所述M个冗余数据块;存储单元,用于在对一页中所有的数据块编码完成的情况下,将所述一页的编码后的数据块存储到数据库中;
其中,所述存储单元还包括:发送子单元,用于向上述数据库发送申请上述N加上述M个存储节点的请求消息;接收子单元,连接至发送子单元,用于接收所述请求消息的回复消息,其中,所述回复消息包括:所述N加上述M个存储节点的节点信息、所述N加所述M个存储节点的位置信息;第一存储子单元,连接至接收子单元,用于根据所述节点信息和所述位置信息将所述每一页数据块编码后的上述N加上述M个数据块分别存储到申请到的所述N加上述M个存储节点中。
7.根据权利要求6所述的装置,其特征在于,还包括:
第二获取模块,用于获取待读取数据的读取信息,其中,所述读取信息包括:所述待读取数据的存储策略标识;
读取模块,用于根据所述待读取数据的存储策略标识采用相应的读取方式读取所述待读取数据,其中,所述待读取数据的存储策略标识用于指示所述待读取数据的存储方式采用以下至少之一:副本冗余处理方式、纠删编解码处理方式。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210384091.4A CN102937967B (zh) | 2012-10-11 | 2012-10-11 | 数据冗余实现方法及装置 |
US14/435,250 US20160006461A1 (en) | 2012-10-11 | 2013-09-10 | Method and device for implementation data redundancy |
EP13845224.8A EP2908254A4 (en) | 2012-10-11 | 2013-09-10 | METHOD AND DEVICE FOR IMPLEMENTING REDUNDANCY OF DATA |
PCT/CN2013/083249 WO2014056381A1 (zh) | 2012-10-11 | 2013-09-10 | 数据冗余实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210384091.4A CN102937967B (zh) | 2012-10-11 | 2012-10-11 | 数据冗余实现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102937967A CN102937967A (zh) | 2013-02-20 |
CN102937967B true CN102937967B (zh) | 2018-02-27 |
Family
ID=47696864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210384091.4A Active CN102937967B (zh) | 2012-10-11 | 2012-10-11 | 数据冗余实现方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160006461A1 (zh) |
EP (1) | EP2908254A4 (zh) |
CN (1) | CN102937967B (zh) |
WO (1) | WO2014056381A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227731A (zh) * | 2016-07-06 | 2016-12-14 | 联想(北京)有限公司 | 一种数据处理方法、装置及分布式文件*** |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102937967B (zh) * | 2012-10-11 | 2018-02-27 | 南京中兴新软件有限责任公司 | 数据冗余实现方法及装置 |
CN103118133B (zh) * | 2013-02-28 | 2015-09-02 | 浙江大学 | 基于文件访问频次的混合云存储方法 |
CN103618769A (zh) * | 2013-11-15 | 2014-03-05 | 华为技术有限公司 | 一种冗余配置的方法、***以及相关设备 |
CN103942116B (zh) * | 2014-04-24 | 2017-02-01 | 深圳市中博科创信息技术有限公司 | 一种对数据进行容错处理的方法及数据处理*** |
CN105025053A (zh) * | 2014-04-24 | 2015-11-04 | 苏宁云商集团股份有限公司 | 基于云存储技术的分布式文件的上传方法及其*** |
US9672122B1 (en) * | 2014-09-29 | 2017-06-06 | Amazon Technologies, Inc. | Fault tolerant distributed tasks using distributed file systems |
CN104283960B (zh) * | 2014-10-15 | 2018-11-20 | 福建亿榕信息技术有限公司 | 实现异构网络存储的虚拟化整合及分级管理的*** |
CN105095352B (zh) * | 2015-06-19 | 2019-03-05 | 曙光信息产业股份有限公司 | 应用于分布式***的数据处理方法及装置 |
CN105630418A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种数据存储方法及装置 |
CN106686095A (zh) * | 2016-12-30 | 2017-05-17 | 郑州云海信息技术有限公司 | 一种基于纠删码技术的数据存储方法及装置 |
CN106991118A (zh) * | 2017-02-17 | 2017-07-28 | 深圳市中博睿存信息技术有限公司 | 基于ceph纠删除容错的读取文件方法及装置 |
CN109150792B (zh) | 2017-06-15 | 2022-03-08 | 杭州海康威视数字技术股份有限公司 | 一种提高数据存储安全性方法及装置 |
GB2564696B (en) * | 2017-07-20 | 2020-02-05 | Advanced Risc Mach Ltd | Register-based complex number processing |
CN107809302B (zh) * | 2017-08-23 | 2020-12-15 | 银江股份有限公司 | 一种不可靠链路下的文件元数据冗余传输、接收方法及*** |
KR20200104601A (ko) | 2019-02-27 | 2020-09-04 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
KR102421149B1 (ko) | 2018-01-02 | 2022-07-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
KR102456173B1 (ko) | 2017-10-27 | 2022-10-18 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN109799948B (zh) * | 2017-11-17 | 2023-05-16 | 航天信息股份有限公司 | 一种数据存储方法及装置 |
CN108052655B (zh) * | 2017-12-28 | 2020-11-10 | 新华三技术有限公司 | 数据写入及读取方法 |
KR102663422B1 (ko) * | 2018-01-19 | 2024-05-07 | 삼성전자주식회사 | 객체 스토리지 장치들에 대한 하이브리드 데이터 신뢰성을 위한 시스템 및 방법 |
CN110278222B (zh) * | 2018-03-15 | 2021-09-14 | 华为技术有限公司 | 分布式文件存储***中数据管理的方法、***以及相关设备 |
CN111381767B (zh) * | 2018-12-28 | 2024-03-26 | 阿里巴巴集团控股有限公司 | 一种数据处理方法及装置 |
CN109639819B (zh) * | 2018-12-28 | 2022-01-14 | 腾讯科技(深圳)有限公司 | 文件传输方法、客户端、服务器及*** |
CN109885256B (zh) * | 2019-01-23 | 2022-07-08 | 平安科技(深圳)有限公司 | 一种基于数据分片的数据存储方法、设备及介质 |
CN110347344A (zh) * | 2019-07-19 | 2019-10-18 | 北京计算机技术及应用研究所 | 一种基于分布式存储***的自动配置块存储方法 |
KR102456176B1 (ko) | 2020-05-21 | 2022-10-19 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11573891B2 (en) | 2019-11-25 | 2023-02-07 | SK Hynix Inc. | Memory controller for scheduling commands based on response for receiving write command, storage device including the memory controller, and operating method of the memory controller and the storage device |
CN111414271B (zh) * | 2020-03-17 | 2023-10-13 | 上海爱数信息技术股份有限公司 | 一种基于自适应存储冗余策略的存储方法 |
KR102406449B1 (ko) | 2020-06-25 | 2022-06-08 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
KR102435253B1 (ko) | 2020-06-30 | 2022-08-24 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
US11755476B2 (en) | 2020-04-13 | 2023-09-12 | SK Hynix Inc. | Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device |
KR102495910B1 (ko) | 2020-04-13 | 2023-02-06 | 에스케이하이닉스 주식회사 | 스토리지 장치 및 그 동작 방법 |
JP2022074807A (ja) * | 2020-11-05 | 2022-05-18 | 株式会社日立製作所 | ファイルストレージ及びコンピュータシステム |
CN112783445A (zh) * | 2020-11-17 | 2021-05-11 | 北京旷视科技有限公司 | 数据存储方法、装置、***、电子设备及可读存储介质 |
CN115129506A (zh) * | 2021-03-24 | 2022-09-30 | 华为技术有限公司 | 一种数据传输的***、方法以及网络设备 |
CN118075289A (zh) * | 2024-02-20 | 2024-05-24 | 北京冀银科技有限公司 | 一种金融信息传输方法以及金融信息传输*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788303B2 (en) * | 2005-10-21 | 2010-08-31 | Isilon Systems, Inc. | Systems and methods for distributed system scanning |
CN101840377A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 基于rs纠删码的数据存储方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储***的数据存储方法 |
CN102594899A (zh) * | 2011-12-31 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 一种存储服务方法以及应用该方法的存储服务器 |
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储***的局部式数据更新方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685126B2 (en) * | 2001-08-03 | 2010-03-23 | Isilon Systems, Inc. | System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system |
US20060167838A1 (en) * | 2005-01-21 | 2006-07-27 | Z-Force Communications, Inc. | File-based hybrid file storage scheme supporting multiple file switches |
US7886034B1 (en) * | 2006-09-27 | 2011-02-08 | Symantec Corporation | Adaptive liveness management for robust and efficient peer-to-peer storage |
WO2010033644A1 (en) * | 2008-09-16 | 2010-03-25 | File System Labs Llc | Matrix-based error correction and erasure code methods and apparatus and applications thereof |
US9098519B2 (en) * | 2008-09-16 | 2015-08-04 | File System Labs Llc | Methods and apparatus for distributed data storage |
US8458287B2 (en) * | 2009-07-31 | 2013-06-04 | Microsoft Corporation | Erasure coded storage aggregation in data centers |
CN102937967B (zh) * | 2012-10-11 | 2018-02-27 | 南京中兴新软件有限责任公司 | 数据冗余实现方法及装置 |
-
2012
- 2012-10-11 CN CN201210384091.4A patent/CN102937967B/zh active Active
-
2013
- 2013-09-10 WO PCT/CN2013/083249 patent/WO2014056381A1/zh active Application Filing
- 2013-09-10 EP EP13845224.8A patent/EP2908254A4/en not_active Withdrawn
- 2013-09-10 US US14/435,250 patent/US20160006461A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7788303B2 (en) * | 2005-10-21 | 2010-08-31 | Isilon Systems, Inc. | Systems and methods for distributed system scanning |
CN101840377A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 基于rs纠删码的数据存储方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储***的数据存储方法 |
CN102594899A (zh) * | 2011-12-31 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 一种存储服务方法以及应用该方法的存储服务器 |
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储***的局部式数据更新方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106227731A (zh) * | 2016-07-06 | 2016-12-14 | 联想(北京)有限公司 | 一种数据处理方法、装置及分布式文件*** |
CN106227731B (zh) * | 2016-07-06 | 2019-10-29 | 联想(北京)有限公司 | 一种数据处理方法、装置及分布式文件*** |
Also Published As
Publication number | Publication date |
---|---|
US20160006461A1 (en) | 2016-01-07 |
EP2908254A4 (en) | 2015-11-25 |
WO2014056381A1 (zh) | 2014-04-17 |
EP2908254A1 (en) | 2015-08-19 |
CN102937967A (zh) | 2013-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102937967B (zh) | 数据冗余实现方法及装置 | |
US11281531B2 (en) | Serial storage node processing of data functions | |
US9021335B2 (en) | Data recovery for failed memory device of memory device array | |
US7725655B2 (en) | Method of operating distributed storage system in which data is read from replicated caches and stored as erasure-coded data | |
CN101488104B (zh) | 一种实现高效安全存储的***和方法 | |
US7266716B2 (en) | Method and recovery of data using erasure coded data from stripe blocks | |
US11907410B2 (en) | Method and device for managing storage system | |
WO2015100627A1 (zh) | 一种分布式文件存储***中的数据处理方法及设备 | |
US11275762B2 (en) | System and method for hybrid data reliability for object storage devices | |
US11662929B2 (en) | Systems, methods, and computer readable media providing arbitrary sizing of data extents | |
US20050091450A1 (en) | Methods of reading and writing data | |
WO2005043531A2 (en) | Methods of reading and writing data | |
CN109445681B (zh) | 数据的存储方法、装置和存储*** | |
CN104965835B (zh) | 一种分布式文件***的文件读写方法及装置 | |
WO2023279906A1 (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US11314594B2 (en) | Method, device and computer program product for recovering data | |
CN108141229A (zh) | 损坏数据的高效检测 | |
CN102364472A (zh) | 数据存储方法及*** | |
CN111857603B (zh) | 数据处理方法及相关装置 | |
US11281532B1 (en) | Synchronously storing data in a dispersed storage network | |
US20100325519A1 (en) | CRC For Error Correction | |
US12008254B2 (en) | Deduplication of storage device encoded data | |
CN107357677A (zh) | 一种GlusterFS基于纠删码的数据冗余存储方法 | |
KR102663422B1 (ko) | 객체 스토리지 장치들에 대한 하이브리드 데이터 신뢰성을 위한 시스템 및 방법 | |
CN111367712A (zh) | 一种数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |