CN110262922A - 基于副本数据日志的纠删码更新方法及系统 - Google Patents
基于副本数据日志的纠删码更新方法及系统 Download PDFInfo
- Publication number
- CN110262922A CN110262922A CN201910403522.9A CN201910403522A CN110262922A CN 110262922 A CN110262922 A CN 110262922A CN 201910403522 A CN201910403522 A CN 201910403522A CN 110262922 A CN110262922 A CN 110262922A
- Authority
- CN
- China
- Prior art keywords
- data
- log
- verification
- block
- correcting
- 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.)
- Granted
Links
Classifications
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于副本数据日志的纠删码更新方法,包括:接收更新数据,并将其保存至数据端的副本数据日志;当该副本数据日志满时,以该更新数据和该数据块获得校验差值,以该校验差值更新对应的数据块,并将该校验差值转发至存储校验块的校验端;将该校验差值保存至该校验端的校验日志,当该校验日志满时,通过该校验差值生成校验数据,以该校验数据更新校验块。本发明提出的纠删码更新方法,在保证一致性的前提下,减少更新过程中产生的计算开销、网络开销和磁盘寻道开销,提高了纠删码的更新效率,在一些应用场景相对其他更新方法,达到1个数量级的性能提升。
Description
技术领域
本发明涉及数据存储及纠删码领域,特别涉及一种基于副本数据日志的混合日志纠删码更新方法。
背景技术
在大数据时代,海量数据的存储正面临存储可靠性与空间利用率的矛盾。纠删码存储方式,既具有较高的空间利用效率,又能保证数据存储的可靠性,越来多的应用于存储系统当中。组件故障经常威胁由廉价商业服务器构建的集群存储系统的可靠性。磁盘阵列、副本和纠删码机制用于提高了数据的可靠性。然而,磁盘阵列性能比较低,且作用于单机,无法保证分布式系统的节点数据可靠性。副本机制简单,高效,是当前最为普遍的数据组织方式,但副本机制在存储成本和网络传输带宽方面是昂贵的。在3副本的情况下,副本占用3倍的磁盘存储开销和网络传输开销。然而,纠删码只占用1.3倍的磁盘存储开销和网络传输开销。纠删码机制由于其在磁盘成本和网络开销方面的优势,已被开源和商用存储系统广泛采用。在Google的GFS、Microsoft的Azure以及Facebook的存储系统等商业系统和HDFS、GlusterFS、CEPH等开源存储系统中都有应用。
纠删码主要用于对更新性能要求较低的离线应用场景,如廉价的数据中心、多媒体、冷数据存储等。然而,在经常更新数据的文件系统(如企业服务器、数据库应用程序和网络文件系统)中,纠删码的更新性能是一个瓶颈。因此,在实时应用、在线数据处理和数据库等场景中,提高更新性能已成为纠删码的主要需求。
更新过程包括数据块更新和奇偶校验块更新。数据块通常采用就地更新方法,读取存储的旧数据,修改内容,并写入新的数据。校验块通常采用基于日志的更新方法,将更新记录追加到仅支持追加操作的日志末尾。然而,当前基于日志的更新方法仍然非常复杂,计算开销、网络开销和随机访问开销很大,导致更新延迟很大,更新吞吐量很低。因此,许多研究者不断地对擦除码更新进行优化,以获得更快的更新速度,例如PL,PLR和PARIX。
在更新操作上,基于副本的数据组织方式,发生更新时只需要同时更新同为副本的几个数据块即可。而纠删码与副本组织方式不同,纠删码的校验块采用基于柯西矩阵的运算所得,当数据块更新时,校验块需要通过计算才可以更新。
校验块的更新方式包括两种。第一种是重构更新,当发生更新时,读取一个条带内的其他数据,然后通过柯西矩阵重新计算校验块,最后覆盖原来的校验块,此方式适应于更新粒度较大,能够覆盖整个条带中数据块的大小,否则,重新计算校验块时,还需要读取其他未被更新的数据块,开销较大,影响更新效率和系统性能。第二种是增量更新,根据纠删码的计算公式,当数据块发生更新时,更新数据与数据块旧数据异或生成校验差值,数据块就地更新,对应的校验块数据只需要依靠数据块的校验差值即可生成新校验块数据(校验差值是数据块更新位置新旧数据的异或运算结果),根据纠删码的计算原理,校验块更新通过将数据块新旧数据的校验差值与当前校验块数据进行异或运算即可获得更新后的校验块数据),此种方法,不需要读取额外的数据块,减少数据的读取,提高更新效率。当更新粒度足以覆盖整个条带时,采用重构更新,当更新粒度较小时,采用增量更新。目前,更新多为随机小粒度操作,故增量更新更为常见。如中国国家发明“一种基于纠删码集群存储系统的局部式数据更新方法”(申请号:CN201210110334.5),公开了一种基于纠删码集群存储系统的局部式数据更新方法,包括:接收用户发出的对数据D0的更新请求(更新请求将数据D0更新为D0’),将更新后的数据D0’发送到待更新的数据节点,待更新的数据节点从本地磁盘读取数据D0到内存中,在待更新的数据节点的内存中计算出所有m个冗余节点需要的临时数据块集合,数据节点将更新后的数据D0’写入本地磁盘,数据节点将m个临时数据块通过网络并行发送至m个冗余节点上,第j个冗余节点从本地磁盘读取原始的冗余数据Pj,并计算出新的校验数据Pj’,第j个冗余节点将计算得到的校验数据块Pj’写到本地磁盘上。
纠删码编码过程和更新过程:
公式(1)为纠删码编码公式,基于柯西矩阵将数据块D0、D1、D2和D3通过矩阵乘运算(伽罗瓦域运算,位宽为8位)得到校验块P0和P1。D0、D1、D2、D3、P0和P1组成一个条带,并分布到不同的节点进行存储。可以达到容忍任意小于校验块数量的块丢失。在较小存储开销的前提下,达到和副本一样的的可靠性。当数据块D0发生更新操作时,校验块P0和P1会被更新。公式(2)为校验块P0的更新计算过程。
P0=V00*D0+V01*D1+V01*D2+V03*D3 (2)
由公式(2)中可以看出,当只有D0被更新,其他三个数据为未发生变化(同样适用于D1、D2,和D3,位于不同节点,处理方式一样),且编码矩阵未发生编码,那么公式(2)可以演变为公式(3)。
在公式(3)中,将X代替其他不变项,代替V00,可以得到P0与D0的线性关系表达式。当D0被更新为P0被更新为如公式(4)所示
由公式(3)和公式(4)可以得出公式(5)。
当D0经过n次更新后,P0被更新为那么可以推出的推导公式(6)。
如公式(6)所示,当数据块发生更新时,数据块的新旧数据生成校验差值,即校验块的更新依赖于数据块的校验差值。
全覆盖FO(Full-overwrite)和全日志FL(Full-Logging)是较早出现的纠删码更新方案,FO模式对数据块和校验块采用就地更新方式,一次更新同时完成数据块和对应编码块的更新过程,更新过程复杂,更新路径较长,且由于更新过程中的随机问题,导致FO模式更新效率很差。FL通过将数据块生成的校验差值和数据块更新数据全部追加到日志的方式,将更新过程中的随机问题转化为顺序写操作,减少由于随机问题导致的性能低下,提高了纠删码的更新效率,但由于更新数据追加到日志中,每次读取需要查询日志,导致读性能较低,且日志回收过程中同样伴随随机问题,日志回收效率很差。
PL(Parity-Logging)机制对于数据块更新采用就地更新机制,将数据块生成的校验差值追加到对应校验块节点的校验日志中,相对FL机制,保证了系统数据的读性能,同时由于采用日志保存校验差值,减少了FO更新过程中的随机开销。但PL机制生成校验差值的过程是一个耗费时间的读后写过程,首先读取就数据块内容,然后计算校验差值,并将校验差值发送到对应的校验块节点日志中,最后,更新数据块。此过程数据块的读写是一个随机操作,同时伴随通信和计算开销。另外,PL机制将校验差值追加到日志中,虽然避免了随机开销,但日志的回收过程依然是一个具有较大随机开销的过程,回收性能较差。
PLR(Parity-Logging with Reserved Space)在PL机制的基础上,将日志进行切分,将校验块日志存放在校验块预留的相邻位置,这样,校验差值从PL机制中的统一日志,变成了追加到对应校验块的日志中。日志回收过程规避了随机访问。但PLR和PL一样,同样存在校验差值生成开销的问题,并且,在并发更新场景下,向不同校验日志中追加校验差值的过程也是一个类似随机操作。PLR相对PL机制,仅优化了日志的回收效率。
PARIX机制是USENIXATC 17年的一篇论文提出的机制,主要适合于时间局部性明显的重复位置更新的数据仓库应用场景。PARIX采用公式(6),使用数据增量代替校验差值来计算校验块内容。PARIX避免了PL机制中耗时的校验差值计算过程,直接将更新数据转发到对应校验块节点,校验日志记录最新和最旧的数据,日志回收时,通过数据块的新旧数据只计算一次校验差值,和校验块计算得到最新的校验数据。PARIX利用了更新过程找那个的时间局部性,避免了重复更新记录的多次计算,提高了更新效率。但在时间局部性差的更新场景,由于每次转发,第一次更新的数据需要再转发一次原始数据,导致更新过程中引入两倍的通信开销和日志存储开销。
PL和PLR减少了更新校验块的磁盘开销,但是生成校验增量(校验增量即paritydelta,校验增量是数据块新旧数据的异或差值,用于更新对应的校验块)的开销仍然很大,因此它们不能解决更新延迟大的问题,更新效率较差。PARIX减少了生成校验增量的开销,但引入了双重通信开销和日志空间开销。综上所述,这些问题仍然存在:1)纠删码更新延迟大(校验差值生成开销大后者时间局部性差导致);2)由于数据局部性特点利用不足导致的计算开销、网络开销和磁盘开销;3)由于日志随机性导致的日志添加和日志回收效率之间的权衡。
中国国家发明“一种纠删码更新方法及装置,电子设备”(申请号:CN201611071692.4),提供了一种纠删码更新方法,包括:根据更新纠删码中原始数据的请求,更新所述原始数据变化日志,然后更新所述原始数据;最后当满足预设条件时,根据更新后的所述原始数据的变化日志,更新纠删码中的校验数据。该方法通过在校验日志中直接存储更新的新旧数据,减少计算量,但在更新时间局部性原理弱的环境中,引入两倍通信开销和日志存储开销。
中国国家发明“单一存储池的差量日志式纠删码更新方法”(申请号:CN201610710868.X),将对数据块全覆盖更新和对校验块进行差量日志的校验部分日志的思路与PDN-P更新方式相结合,提出了一种新的数据更新方式PDN-PDS。该方法通过使用一个单一存储池减少校验块更新时的校验差值读取量,虽然减少的日志的存储量和数据的读取量,但未考虑可靠性问题,存在一致性问题。
发明内容
为解决上述现有技术在纠删码更新过程中,由于现有更新机制导致的更新延迟大,由于数据局部性原理利用不足导致的计算开销、网络开销和磁盘寻道开销,由于日志访问中的随机性开销导致的日志添加和回收效率的均衡问题,本发明在数据块端增加基于副本机制的数据日志,提出一种基于副本数据日志的纠删码更新方法。
具体来说,本方法包括:接收更新数据,并将其保存至数据端的副本数据日志;当该副本数据日志满时,以该更新数据和该数据块获得校验差值,以该校验差值更新对应的数据块,并将该校验差值转发至存储校验块的校验端;将该校验差值保存至该校验端的校验日志,当该校验日志满时,通过该校验差值生成校验数据,以该校验数据更新校验块。
本发明所述的纠删码更新方法,其中获得该校验差值后,回收该该副本数据日志;获得该校验数据后,回收该校验日志。
本发明所述的纠删码更新方法,还包括:将拟存储数据保存为元数据端的元数据,在客户端将该拟存储数据分为K个数据块D,并通过纠删码编码公式生成M个校验块P,将K个数据块D分别保存至K个该数据端,并将M个该校验块P分别保存至M个该校验端;其中K、M为正整数。
本发明所述的纠删码更新方法,其特征在于,通过该校验数据更新校验块的过程包括:通过校验块更新公式对该校验块P进行更新;其中P0为更新前的校验块,Pn为进行n次数据块数据更新后的校验块,为纠删码编码公式的柯西矩阵元素,ΔD为该校验数据,n为正整数。
本发明还提出一种基于副本数据日志的纠删码更新系统,包括:数据日志追加模块,用于接收更新数据,并将其保存至数据端的副本数据日志;数据日志回收模块,用于当该副本数据日志满时,以该更新数据和该数据块获得校验差值,以该校验差值更新对应的数据块,并将该校验差值转发至存储校验块的校验端;校验日志回收模块,用于将该校验差值保存至该校验端的校验日志,当该校验日志满时,通过该校验差值生成校验数据,以该校验数据更新校验块。
本发明所述的纠删码更新系统,其中该数据日志回收模块获得该校验差值后,回收该该副本数据日志;该校验日志回收模块获得该校验数据后,回收该校验日志。
本发明所述的纠删码更新系统,还包括:纠删码编码模块,用于将拟存储数据保存为元数据端的元数据,在客户端将该拟存储数据分为K个数据块D,并通过纠删码编码公式生成M个校验块P,将K个数据块D分别保存至K个该数据端,并将M个该校验块P分别保存至M个该校验端;其中K、M为正整数。
本发明所述的纠删码更新系统,其中该校验日志回收模块包括:校验块更新模块,用于通过校验块更新公式对该校验块P进行更新;其中P0为更新前的校验块,Pn为进行n次数据块数据更新后的校验块,为纠删码编码公式的柯西矩阵元素,ΔD为该校验数据,n为正整数。
本发明还提出一种可读存储介质,存储有可执行指令,该可执行指令用于执行前述的基于副本数据日志的纠删码更新方法。
本发明还提出一种数据处理装置,包括前述的可读存储介质,该数据处理装置调取并执行该可读存储介质中的可执行指令,以进行基于副本数据日志的纠删码更新。
本发明提出的基于副本数据日志的纠删码更新方法,在保证一致性的前提下,减少更新过程中产生的计算开销、网络开销和磁盘寻道开销,提高了纠删码的更新效率,在一些应用场景相对其他更新方法,达到1个数量级的性能提升。
附图说明
图1是本发明的纠删码分布式存储系统架构示意图。
图2是本发明的纠删码更新系统架构示意图。
图3是本发明的纠删码更新时序示意图。
图4是本发明的数据日志和校验日志在更新过程中的异步流水机制示意图。
图5是本发明的基于负载感知的自适应日志管理架构示意图。
图6是本发明的数据处理装置结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明提出基于副本数据日志的纠删码更新方法方法及系统进一步详细说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明,并不用于限定本发明。
本发明在校验日志的基础上,增加基于副本的数据日志,组成混合日志架构,更新数据在数据日志端,能够根据时空局部性原理进行聚合,减少大量的计算开销、网络开销和磁盘访问开销。数据日志以副本形式存储在不同节点中,在保证一致性的前提下,降低了更新延迟,大幅度提高更新IOPS。
本发明还使用基于负载感知的FIFO队列日志结构管理混合日志,日志组织为面向多盘的多队列,日志以日志单元为基础单位,多个的日志单元组织成负载感知的日志队列,日志单元面向磁盘,保证追加的高效性,FIFO结构,保证日志追加与回收的并发性,基于磁盘和目标节点的多日志回收引擎组,每个磁盘组织为基于多个目标节点的回收引擎队列,多个磁盘将回收引擎队列组织为回收引擎组。
于本发明的纠删码更新方法中,数据日志位于内存,具备高速缓存的功能,使用基于块和位移区间的高速索引结构,保证数据日志的高效查询和日志回收效率。基于块索引可以使得日志回收时以块为单位,减少寻道开销,根据位移区间可以将更新数据按照更新位置合并,减少重复的请求,将位置相邻的更新请求合并,减少寻道、网络和计算次数,保证日志回收的高效性。进行纠删码更新时,存储数据块的数据端接收该数据块的更新数据,并将其保存至副本数据日志;当该副本数据日志满时(日志组织为基于日志单元的FIFO日志队列,日志追加和回收的单位是日志单元,可以保证日志追加和回收的并发性,此处的日志满表示日志单元满,日志按照填满的日志单元一次回收,满足FIFO特性),将该副本数据日志中的所有项与其对应的数据块的数据计算生成校验差值(日志以块和位移区间组织为两层索引,方便数据聚合,基于位移,方便数据的合并和组合),并以该副本数据日志中的记录更新对应的数据块,完成该数据日志的回收,并将该校验差值转发至对应的校验端,基于当前队列日志的使用程度,可以回收多余的存储单元;当该校验日志满时,通过该校验日志生成校验数据,以该校验数据更新校验块,完成该校验日志的回收。
使用基于队列的回收引擎,队列按照磁盘进行组织,日志单元按照FIFO特性,前向合并,保证在尽量低磁盘开销的前提下,能够处理更多的日志数据。其中副本数据日志和校验日志均为先进先出的负载感知自适应日志队列,日志以日志单元为单位进行组织,日志单元构成日志队列,基于更新数据突发量,日志队列可以进行自适应的扩展和压缩。日志队列面向单一磁盘,同一节点组织为多日志队列,日志队列占据内存空间固定,日志队列设定固定限额,根据不同磁盘的突发情况不同,总的日志空间不变,日志队列间可以进行日志限额拆借,总日志空间不变。
本发明提出的基于副本数据日志的混合日志更新方法,采用数据日志将更新数据在节点、块和位移三个维度上进行聚合,避免了大量的计算开销、网络开销和磁盘访问开销,保证了高效的更新效率和回收效率。回收机制在持续进行,在低开销的前提下保证日志能够及时回收,保证高效的数据更新效率和日志回收效率,降低对磁盘恢复造成影响。
本发明的基于纠删码的分布式存储文件系统,由三部分组成元数据管理服务器MDS,对象数据存储服务器OSD,和客户端CLIENT。图1是本发明的纠删码分布式存储系统架构示意图。如图1所示的纠删码分布式存储系统架构,当数据从客户端写入时,客户端向MDS请求,建立对应的元数据。然后,在客户端,数据按顺序切分成K个块,客户端将K个数据块通过基于柯西矩阵的RS算法(Reed-Solomon)生成M个校验块,K个数据和M个数据块组成一个长度为K+M的条带,分别发送到K+M个不同的OSD服务器(根据存储内容分为数据端和校验端)进行存储(OSD命名为snode01..06)。
基于纠删码的数据组织方式,数据发生更新时,需要同时修改数据块和编码块。数据块采用就地更新发生,编码块的更新首先需要计算校验差值,然后与校验块对应数据进行计算生成校验数据,并覆盖写对应的校验块。由于更新时随机小粒度更新,相对副本更新机制,纠删码更新过程复杂,且由于更新过程中的随机问题,导致更新效率低下。例如PL、PLR,在更新关键路径上,校验差值生成开销较大,不能同时兼顾日志的追加和回收性能。PARIX优化了PL、PLR更新过程中校验差值生成开销大的问题,依赖时间局部性,通过直接记录数据代替计算校验差值,避免了相同数据的计算开销,但在时间局部性差的环境下,PARIX引入了两倍的通信开销和日志存储开销。
因此,本发明提出了一种基于副本数据日志的混合日志方法优化纠删码的更新过程,并提出一种负载感知的自适应队列日志结构,管理数据日志和校验日志,获得较高的日志追加和回收效率。图2是本发明的纠删码更新系统架构示意图。如图2所示为纠删码更新系统架构,每个节点包含副本数据日志(数据端)或校验日志(校验端),副本数据日志采用多副本方式进行组织,每个副本数据日志有三个相同的副本,第一个副本日志是主副本日志,位于当前节点(数据端),提供副本数据日志的读写,支持副本数据日志的回收,第二个副本数据日志(近端副本数据日志)位于当前节点(数据端)所在机架的另外一个节点,主要用于保证可靠性,第三个副本数据日志(远端副本数据日志)位于另外一个机架中,用于可靠性支持,当主副本数据日志收到更新数据后,并转发至两个副本日志中,表示更新完成。
一、基于副本数据日志的混合日志
副本机制作为简单高效的数据可靠性保证机制,虽然存储开销大,但简单高效。为了使纠删码更新效率接近并达到副本的更新效率,本发明提出了基于副本数据日志的纠删码更新方法。这种方法是一种基于副本数据日志和校验日志的混合日志结构。数据块部分使用数据日志简化更新时序,降低更新时延,基于时间、空间局部性原理聚合重复数据,合并位置相邻的请求,组合同一目标节点的离散校验差值(减少网络次数),进而降低数据更新的计算开销、网络开销和随机访盘开销。校验日志进一步聚合属于同一校验块的校验差值,降低更新过程中的寻道开销、计算开销和网络开销比例,提高更新效率。
图3是本发明的纠删码更新时序示意图,图4是本发明的数据日志和校验日志在更新过程中的异步流水机制示意图。如图3所示,保存数据块的OSD在接收到客户端更新数据时,将数据直接追加到副本数据日志三个副本中(数据日志以多副本形式进行组织,保证数据日志的可靠性),即完成更新任务。副本数据日志满时开始回收,读取对应的数据块和副本数据日志记录生成校验差值,校验差值发送到对应的校验日志中,即完成回收过程。校验日志满时开始回收,读取对应的校验块数据与校验差值生成最新的校验数据,并覆盖写校验块,完成校验块的回收操作。通过引入副本数据日志,将纠删码更新过程划分为三个阶段:数据日志追加,数据日志回收和校验日志回收。三个阶段将更新流程组织成异步流水任务,提高了日志追加和日志回收的并发性。如图4所示,追加、数据日志回收和校验日志回收将更新化成切分为三个时间片进行并行流水执行。
相对PL等机制,副本数据日志记录了数据块内容,因此,在系统正常数据读取时可能会对读性能产生影响。同时,基于副本数据日志的更新方案,相对于PL等机制,增加了数据日志部分。校验日志可以在磁盘等介质满时在回收,但数据日志必须及时回收,否则会影响读取数据的性能。同时也意味着需要回收的日志变多了,如何才能提高回收效率。
副本数据日志的引入改变了更新过程,缩短了更新关键路径,减少了更新过程中的计算开销、网络开销和磁盘访问开销。基于副本数据日志的混合日志结构在设计过程中,需要解决以下几个问题:
日志追加与回收效率:当前的更新机制中,在日志的追加和回收效率上是一种互相妥协的,因此,需要一种同时保证高效日志追加和回收效率的日志管理方法。
数据读取效率:采用基于副本数据日志的混合日志相对比PL、PLR和PARIX等采用数据块就地更新的方法,在数据块上采用了数据日志。当系统读取数据时,需要一种高效的机制保证数据的读取效率。
日志回收效率:在有限资源的情况下,更新的效率与日志的回收效率成正比。因此,需要一种高效的日志回收方法。
混合日志方法由数据日志和校验日志两部分组成。数据日志和校验日志将更新过程分为三个阶段。第一阶段是将更新数据附加到数据日志中。在第二阶段中,数据日志中的更新数据被回收以生成校验差值,并追加相应的校验日志中(校验差值需要通过网络转发到校验块对应的节点的校验日志中)。第三阶段是将校验日志中的校验差值合并到校验块中。
回收校验日志的效率与追加校验日志的效率成正比。回收数据日志的效率也是如此。在实际工作负载中,数据日志的回收过程是一个瓶颈,因为数据日志的回收过程包括数据日志的回收和奇偶校验日志的追加。提出了一种基于工作负载感知的队列日志结构来管理数据日志和奇偶校验日志。
将日志数据组织到内存中,提高了数据的读写效率。传统的单日志文件或双缓冲日志不足以支持有效的日志追加和回收效率。由于日志回收过程的复杂性和回收过程的磁盘访问成本不同,不同时间或不同应用场景下日志的回收效率也不同。为了提高数据读取效率,保证高效的日志追加和回收性能,本发明提出一种基于负载感知的队列日志结构管理数据日志和校验日志。
二、基于负载感知的队列日志结构
自适应多队列日志结构-日志追加和回收效率:在当前的更新机制中,日志不能同时保证有效的追加和回收效率。PL采用整个日志来保证追加效率,PLR采用基于块的日志来保证回收效率。追加到唯一的日志并以块的形式回收数据可以避免随机开销,确保最大的读写性能。而追加和回收的并行需要多日志文件的存在。因此,本发明提出了一种负载感知的日志队列结构。
日志空间被分成固定大小的日志单元。日志单元被组织到FIFO环形队列中。日志单元一个接一个地填充数据,并按填充顺序回收。为了避免浪费内存空间,日志单元的长度根据更新负载进行自适应伸缩。初始情况或较少更新发生时,队列长度设置为2或更小。图5是本发明的基于负载感知的自适应日志管理架构示意图。如图5所示,左侧环形队列即本发明提出的FIFO环形队列,支持日志单元的申请和释放。当队列中的所有日志单元都已满时,日志队列将追加到新的日志单元,如果队列中的一些日志单元在一段时间内为空,日志单元的内存空间将被释放。
为了提高磁盘的并发性,降低互斥锁的粒度,本发明构建了一个基于磁盘的日志队列组,将日志队列组织成多队列数组。由于日志采用常驻内存的方式,为了限制日志空间,日志队列设置了一个内存配额,这意味着每个日志队列都有一个最大的队列长度。根据更新负载,需要支持动态内存扩展和收缩,以处理日志队列组在不同时间的不同内存需求。当日志大小突然增加时,日志可以动态地扩展内存空间。当日志使用量减少时,日志可以动态压缩内存空间并释放内存。
本发明提供了一个简单的内存调度机制。当日志队列达到其内存配额时,它可以从另一个日志队列中借用一些配额来扩展其配额,该队列的日志队列长度变长。在初始化系统时,为确保每个磁盘的日志空间的公平性,将固定每个磁盘的日志空间限制。队列长度配额可以根据其工作负载进行自适应修改,但总配额为一定值。在更新过程中,会出现某一个或某几个磁盘更新访问量突发的情况,在总的磁盘额定大小下,为了更好的优化资源利用率,资源紧张的队列自适应的拆借资源充足的队列。
高速索引-数据读取效率:通过多队列日志,数据日志和校验日志可以实现磁盘之间的高并发性,以及数据追加和回收之间的高并发性。读取和回收数据需要日志的高速索引。索引被组织为两个级别的索引。第一级是块索引,它可以快速定位对应的数据块和校验块。第二级是位移区间,它可以定位对应的数据。索引被组织成块级和位移区间索引,以便更有效地整合数据。当查询请求发生时,块级索引可以根据哈希映射快速定位块。找到对应块后,根据链表顺序找到对应的位移区间。数据日志具有高速读取缓存的功能。本发明在块级索引上添加位图,它可以快速确定是否可以命中,并避免不必要的链表查询成本。如果读取日志中的数据,可以避免磁盘访问开销,从而提高读取效率。
高速日志回收队列组-日志回收效率:回收数据日志的过程包括读取数据、计算校验差值、转发和追加到相应的校验日志,以及回写数据。回收校验日志的过程包括读取数据、计算和写回新的奇偶校验数据。回收日志的开销包括磁盘访问开销和网络开销。并发随机访问越多,磁盘访问性能越低。因此,为了提高日志恢复的效率,有必要对随机问题进行优化,降低网络开销。随机性优化策略主要包括合并相同数据块的重复数据、相邻数据和非相邻数据。聚合重复数据,这可以减少对同一位置数据的多次访问,并减少重复数据的传输开销。聚合相邻和非相邻数据,以确保同时读取和传输尽可能多的数据。
本发明为每个磁盘定义固定的回收线程。当日志单元被填满时,日志单元状态被标记为LOG_FULL,日志记录根据块的哈希值以块的形式映射到不同的回收线程。日志记录将按照块级追加到回收线程的回收队列的末尾,后一个追加块合并到前一个追加块中,以较少的寻道开销处理更多的数据。
请再次参阅图5。更新过程的关键步骤为:
日志追加:更新发生时,在日志追加FIFO队列中,找到当前未满或者第一个空的日志单元,判断数据长度是否能够进行填充,当不能进行数据填充式,将当前日志单元设置为LOG_FULL标志,然后再选择下一个为空的日志单元进行填充。如果当前FIFO队列中,没有可用日志单元,查看当前日志单元大小是否小于日志单元长度配额,如果小于,则分配日志单元并追加到FIFO队列尾部,否则,只能等待已经标记为LOG_FULL的日志单元回收完毕。然后再次查找日志单元进行填充。日志填充到当前日志单元中,然后转发到当前副本数据日志对应的两个其他副本数据日志中,追加完成后,等待返回,客户端返回完成当前更新操作。
数据日志回收:当回收日志队列发现存在标记为LOG_FULL的日志单元后,按照块遍历日志索引,将每一个块按照哈希挂载到不同的回收线程队列上。回收线程在进行数据回收时,先后遍历回收队列,查找是否有跟当前回收块一样的块,进行覆盖合并,进行在磁盘访问一个块时,能进行多的处理更新数据。回收任务执行时,在块索引内,按照位移区间遍历第二级索引,将相邻的数据组合到一个buffer中,一起读取旧数据块,进行校验差值的计算,如果当前组合数据不足1MB,继续合并下一个数据段,直到将若干不相邻的更新区间合并,组成一个大小1MB以内的超级数据块,转发到对应的校验日志节点,减少网络开销。如果当前块内更新较少,也可以将同一个目标节点的不同块进行聚合,最大化减少网络开销。超块发送到目标节点后,校验差值追加到校验日志中,但索引组织按照块和位移进行组织,相对比数据日志索引,校验日志索引,数据不在覆盖,而是追加,索引按照位移从小到大,唯一区间从大到小进行更新。校验差值在追加到校验日志的过程中,追加过程类似步骤1。数据日志单元回收完毕后,日志单元标记为LOG_EMPTY,日志空闲数量加1。
校验日志回收:当回收日志队列发现存在标记为LOG_FULL的校验日志单元后,按照块索引遍历索引,每次回收回收一个块,减少寻道开销。校验索引中,同样维护位图,位图按照4KB粒度进行映射,主要为加速数据的读取效率,当一个块的更新页数大于1024时,读取整个块。数据读取后,依次读取旧校验数据,完成计算后,统一回写校验数据,完成校验日志单元的回收。校验日志单元回收完毕后,日志单元标记为LOG_EMPTY,日志空间数量增加1。
图6是本发明的数据处理装置结构示意图。如图6所示,本发明实施例还提供一种可读存储介质,以及一种数据处理装置。本发明的可读存储介质存储有计可执行指令,可执行指令被数据处理装置的处理器执行时,实现上述基于副本数据日志的纠删码更新方法。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于可读存储介质中,如只读存储器、磁盘或光盘等。上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本发明实施例不限制于任何特定形式的硬件和软件的结合。
本发明提出的基于副本数据日志的混合日志更新方法及系统,采用数据日志将更新数据在节点、块和位移三个维度上进行聚合,避免了大量的计算开销、网络开销和磁盘访问开销,保证了高效的更新效率和回收效率。回收机制在持续进行,在低开销的前提下保证日志能够及时回收,保证高效的数据更新效率和日志回收效率,降低对磁盘恢复造成影响。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中的普通技术人员,在不脱离本发明的精神和范围内,可以做出若干变形和改进,故本发明的保护范围当视后附的申请发明范围所界定者为准。
Claims (10)
1.一种基于副本数据日志的纠删码更新方法,其特征在于,包括:
接收更新数据,并将其保存至数据端的副本数据日志;
当该副本数据日志满时,以该更新数据和该数据块获得校验差值,以该校验差值更新对应的数据块,并将该校验差值转发至存储校验块的校验端;
将该校验差值保存至该校验端的校验日志,当该校验日志满时,通过该校验差值生成校验数据,以该校验数据更新校验块。
2.如权利要求1所述的纠删码更新方法,其特征在于,获得该校验差值后,回收该该副本数据日志;获得该校验数据后,回收该校验日志。
3.如权利要求1所述的纠删码更新方法,其特征在于,还包括:
将拟存储数据保存为元数据端的元数据,在客户端将该拟存储数据分为K个数据块D,并通过纠删码编码公式生成M个校验块P,将K个数据块D分别保存至K个该数据端,并将M个该校验块P分别保存至M个该校验端;其中K、M为正整数。
4.如权利要求3所述的纠删码更新方法,其特征在于,通过该校验数据更新校验块的过程包括:
通过校验块更新公式对该校验块P进行更新;其中P0为更新前的校验块,Pn为进行n次数据块数据更新后的校验块,为纠删码编码公式的柯西矩阵元素,ΔD为该校验数据,n为正整数。
5.一种基于副本数据日志的纠删码更新系统,其特征在于,包括:
数据日志追加模块,用于接收更新数据,并将其保存至数据端的副本数据日志;
数据日志回收模块,用于当该副本数据日志满时,以该更新数据和该数据块获得校验差值,以该校验差值更新对应的数据块,并将该校验差值转发至存储校验块的校验端;
校验日志回收模块,用于将该校验差值保存至该校验端的校验日志,当该校验日志满时,通过该校验差值生成校验数据,以该校验数据更新校验块。
6.如权利要求5所述的纠删码更新系统,其特征在于,该数据日志回收模块获得该校验差值后,回收该该副本数据日志;该校验日志回收模块获得该校验数据后,回收该校验日志。
7.如权利要求5所述的纠删码更新系统,其特征在于,还包括:
纠删码编码模块,用于将拟存储数据保存为元数据端的元数据,在客户端将该拟存储数据分为K个数据块D,并通过纠删码编码公式生成M个校验块P,将K个数据块D分别保存至K个该数据端,并将M个该校验块P分别保存至M个该校验端;其中K、M为正整数。
8.如权利要求7所述的纠删码更新系统,其特征在于,该校验日志回收模块包括:
校验块更新模块,用于通过校验块更新公式对该校验块P进行更新;其中P0为更新前的校验块,Pn为进行n次数据块数据更新后的校验块,为纠删码编码公式的柯西矩阵元素,ΔD为该校验数据,n为正整数。
9.一种可读存储介质,存储有可执行指令,该可执行指令用于执行如权利要求1~4任一项所述的基于副本数据日志的纠删码更新方法。
10.一种数据处理装置,包括如权利要求9所述的可读存储介质,该数据处理装置调取并执行该可读存储介质中的可执行指令,以进行基于副本数据日志的纠删码更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910403522.9A CN110262922B (zh) | 2019-05-15 | 2019-05-15 | 基于副本数据日志的纠删码更新方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910403522.9A CN110262922B (zh) | 2019-05-15 | 2019-05-15 | 基于副本数据日志的纠删码更新方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110262922A true CN110262922A (zh) | 2019-09-20 |
CN110262922B CN110262922B (zh) | 2021-02-09 |
Family
ID=67913176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910403522.9A Active CN110262922B (zh) | 2019-05-15 | 2019-05-15 | 基于副本数据日志的纠删码更新方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110262922B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618895A (zh) * | 2019-09-29 | 2019-12-27 | 北京天融信网络安全技术有限公司 | 一种基于纠删码的数据更新方法、装置和存储介质 |
CN111309266A (zh) * | 2020-02-23 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种基于ceph的分布式存储元数据系统日志优化系统与方法 |
CN111404554A (zh) * | 2019-09-29 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 一种纠删码的编码矩阵生成方法、装置及电子设备 |
CN111522825A (zh) * | 2020-04-09 | 2020-08-11 | 陈尚汉 | 基于校验信息块共享缓存机制的高效信息更新方法及系统 |
CN112306740A (zh) * | 2020-11-03 | 2021-02-02 | 深圳市瑞驰信息技术有限公司 | 基于Glusterfs在ARM提升纠删码修复性能的方法 |
CN112463434A (zh) * | 2020-11-19 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于纠删码的数据重构方法、装置、设备及存储介质 |
CN112783904A (zh) * | 2019-11-07 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 一种更新索引数据的方法和装置 |
CN113157715A (zh) * | 2021-05-12 | 2021-07-23 | 厦门大学 | 纠删码数据中心机架协同更新方法 |
CN113504875A (zh) * | 2021-06-24 | 2021-10-15 | 中国科学院计算技术研究所 | 一种基于多级调度的纠删码系统恢复方法及系统 |
CN114115735A (zh) * | 2021-11-18 | 2022-03-01 | 北京奥星贝斯科技有限公司 | 写入数据的方法及装置 |
CN117420969A (zh) * | 2023-12-19 | 2024-01-19 | 中电云计算技术有限公司 | 一种分布式数据存储方法、装置、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2151755A1 (en) * | 2008-07-30 | 2010-02-10 | Pegatron Corporation | Electronic device and method for updating bios thereof |
CN102368210A (zh) * | 2011-10-25 | 2012-03-07 | 曙光信息产业(北京)有限公司 | 一种分布式系统中基于流水线的元数据日志的方法 |
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储系统的局部式数据更新方法 |
CN103914402A (zh) * | 2014-04-17 | 2014-07-09 | 华中科技大学 | 一种基于纠删码缓存的重构优化方法 |
CN106227464A (zh) * | 2016-07-14 | 2016-12-14 | 中国科学院计算技术研究所 | 一种双层冗余存储系统及其数据写入、读取及恢复方法 |
CN106776146A (zh) * | 2016-12-29 | 2017-05-31 | 华为技术有限公司 | 一种数据校验方法、装置及系统 |
CN107766170A (zh) * | 2016-08-23 | 2018-03-06 | 北京计算机技术及应用研究所 | 单一存储池的差量日志式纠删码更新方法 |
CN105930103B (zh) * | 2016-05-10 | 2019-04-16 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
-
2019
- 2019-05-15 CN CN201910403522.9A patent/CN110262922B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2151755A1 (en) * | 2008-07-30 | 2010-02-10 | Pegatron Corporation | Electronic device and method for updating bios thereof |
CN102368210A (zh) * | 2011-10-25 | 2012-03-07 | 曙光信息产业(北京)有限公司 | 一种分布式系统中基于流水线的元数据日志的方法 |
CN102681793A (zh) * | 2012-04-16 | 2012-09-19 | 华中科技大学 | 一种基于纠删码集群存储系统的局部式数据更新方法 |
CN103914402A (zh) * | 2014-04-17 | 2014-07-09 | 华中科技大学 | 一种基于纠删码缓存的重构优化方法 |
CN105930103B (zh) * | 2016-05-10 | 2019-04-16 | 南京大学 | 一种分布式存储ceph的纠删码覆盖写方法 |
CN106227464A (zh) * | 2016-07-14 | 2016-12-14 | 中国科学院计算技术研究所 | 一种双层冗余存储系统及其数据写入、读取及恢复方法 |
CN107766170A (zh) * | 2016-08-23 | 2018-03-06 | 北京计算机技术及应用研究所 | 单一存储池的差量日志式纠删码更新方法 |
CN106776146A (zh) * | 2016-12-29 | 2017-05-31 | 华为技术有限公司 | 一种数据校验方法、装置及系统 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618895B (zh) * | 2019-09-29 | 2023-06-09 | 北京天融信网络安全技术有限公司 | 一种基于纠删码的数据更新方法、装置和存储介质 |
CN111404554A (zh) * | 2019-09-29 | 2020-07-10 | 杭州海康威视系统技术有限公司 | 一种纠删码的编码矩阵生成方法、装置及电子设备 |
CN110618895A (zh) * | 2019-09-29 | 2019-12-27 | 北京天融信网络安全技术有限公司 | 一种基于纠删码的数据更新方法、装置和存储介质 |
CN111404554B (zh) * | 2019-09-29 | 2023-09-01 | 杭州海康威视系统技术有限公司 | 一种纠删码的编码矩阵生成方法、装置及电子设备 |
CN112783904A (zh) * | 2019-11-07 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 一种更新索引数据的方法和装置 |
CN111309266A (zh) * | 2020-02-23 | 2020-06-19 | 苏州浪潮智能科技有限公司 | 一种基于ceph的分布式存储元数据系统日志优化系统与方法 |
CN111522825A (zh) * | 2020-04-09 | 2020-08-11 | 陈尚汉 | 基于校验信息块共享缓存机制的高效信息更新方法及系统 |
CN112306740A (zh) * | 2020-11-03 | 2021-02-02 | 深圳市瑞驰信息技术有限公司 | 基于Glusterfs在ARM提升纠删码修复性能的方法 |
CN112463434A (zh) * | 2020-11-19 | 2021-03-09 | 苏州浪潮智能科技有限公司 | 一种基于纠删码的数据重构方法、装置、设备及存储介质 |
CN113157715A (zh) * | 2021-05-12 | 2021-07-23 | 厦门大学 | 纠删码数据中心机架协同更新方法 |
CN113157715B (zh) * | 2021-05-12 | 2022-06-07 | 厦门大学 | 纠删码数据中心机架协同更新方法 |
CN113504875A (zh) * | 2021-06-24 | 2021-10-15 | 中国科学院计算技术研究所 | 一种基于多级调度的纠删码系统恢复方法及系统 |
CN113504875B (zh) * | 2021-06-24 | 2023-08-01 | 中国科学院计算技术研究所 | 一种基于多级调度的纠删码系统恢复方法及系统 |
CN114115735A (zh) * | 2021-11-18 | 2022-03-01 | 北京奥星贝斯科技有限公司 | 写入数据的方法及装置 |
CN114115735B (zh) * | 2021-11-18 | 2024-02-09 | 北京奥星贝斯科技有限公司 | 写入数据的方法及装置 |
CN117420969A (zh) * | 2023-12-19 | 2024-01-19 | 中电云计算技术有限公司 | 一种分布式数据存储方法、装置、设备及存储介质 |
CN117420969B (zh) * | 2023-12-19 | 2024-04-16 | 中电云计算技术有限公司 | 一种分布式数据存储方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110262922B (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262922A (zh) | 基于副本数据日志的纠删码更新方法及系统 | |
US10296498B2 (en) | Coordinated hash table indexes to facilitate reducing database reconfiguration time | |
US7401129B2 (en) | Network system, server, data processing method and program | |
CN104765575B (zh) | 信息存储处理方法 | |
CN106775476A (zh) | 混合内存系统及其管理方法 | |
US20150039907A1 (en) | Method of Adapting a Uniform Access Indexing Process to a Non-Uniform Access Memory, and Computer System | |
US8229968B2 (en) | Data caching for distributed execution computing | |
US20110060724A1 (en) | Distributed database recovery | |
US9817587B1 (en) | Memory-based on-demand data page generation | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及系统 | |
CN104537112B (zh) | 一种安全云计算的方法 | |
CN113377868A (zh) | 一种基于分布式kv数据库的离线存储系统 | |
CN114817341B (zh) | 访问数据库的方法和装置 | |
US11307997B2 (en) | Logical to physical data storage mapping | |
Son et al. | Optimizing I/O operations in file systems for fast storage devices | |
Chen et al. | wrJFS: A write-reduction journaling file system for byte-addressable NVRAM | |
Xie et al. | MICRO: A multilevel caching-based reconstruction optimization for mobile storage systems | |
CN104778100A (zh) | 一种安全备份数据的方法 | |
Chen et al. | Low‐overhead inline deduplication for persistent memory | |
CN116436962A (zh) | 面向dfs的全局聚合命名空间下跨计算节点的持久性缓存方法和装置 | |
Shen et al. | Ditto: An elastic and adaptive memory-disaggregated caching system | |
WO2022121274A1 (zh) | 一种存储系统中元数据管理方法、装置及存储系统 | |
US11586353B2 (en) | Optimized access to high-speed storage device | |
Tchaye-Kondi et al. | Hadoop perfect file: a fast access container for small files with direct in disc metadata access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |