CN117420969B - 一种分布式数据存储方法、装置、设备及存储介质 - Google Patents

一种分布式数据存储方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117420969B
CN117420969B CN202311750470.5A CN202311750470A CN117420969B CN 117420969 B CN117420969 B CN 117420969B CN 202311750470 A CN202311750470 A CN 202311750470A CN 117420969 B CN117420969 B CN 117420969B
Authority
CN
China
Prior art keywords
data
stripe
check
space
copy
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
Application number
CN202311750470.5A
Other languages
English (en)
Other versions
CN117420969A (zh
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.)
Zhongdian Cloud Computing Technology Co ltd
Original Assignee
Zhongdian Cloud Computing Technology 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 Zhongdian Cloud Computing Technology Co ltd filed Critical Zhongdian Cloud Computing Technology Co ltd
Priority to CN202311750470.5A priority Critical patent/CN117420969B/zh
Publication of CN117420969A publication Critical patent/CN117420969A/zh
Application granted granted Critical
Publication of CN117420969B publication Critical patent/CN117420969B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Abstract

一种分布式数据存储方法、装置、设备及存储介质,涉及数据存储技术领域,其中,分布式数据存储方法包括:将校验分片划分为副本数据空间和校验数据空间,副本数据空间仅存放未满条带的副本数据,校验数据空间仅存放满条带的校验数据;对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。本申请可提高写入性能,并能避免存储容量空间的浪费。

Description

一种分布式数据存储方法、装置、设备及存储介质
技术领域
本申请涉及数据存储技术领域,具体涉及一种分布式数据存储方法、装置、设备及存储介质。
背景技术
随着信息化的日益深入,全社会每天产生的数据量呈现爆发式增长,因此,人们对数据存储的可靠性、可用性需求变得越来越迫切;副本和纠删码是分布式存储邻域常见的两种冗余策略;对于一些对性能要求高的关键业务场景,比如数据库场景,用户往往期望采用副本冗余策略来保证数据的安全性,同时,读写性能也能得到保障;而对于其他对性能要求不高,对存储容量利用率较高的业务场景,比如视频存储场景,用户则往往期望采用纠删码冗余策略,保证了数据安全的同时,也提高了存储容量利用率;
相比副本冗余策略,纠删码能够大大提高存储系统的利用率,减少数据在存储系统中占用的网络带宽,但相应代价则是CPU资源的损耗,读写性能的降低。
应当说明的是,一个好的纠删码方案需要兼顾读写性能和得盘率,目前分布式存储领域的纠删码方案主要存在以下问题:
(1)用户数据保存到硬盘上所消耗的时间,除了包括必要的IO路径耗时,还增加了控制流程等待条带被写满的耗时,以及计算校验数据的耗时,而这两种增加的耗时对前台IO影响较大,降低了写入性能。
(2)现有方案强依赖前台IO,当条带不能被凑满时,写入性能会受影响,与此同时,为凑满条带的补0操作也会使存储容量空间产生严重浪费,这种结果与用户选择纠删码存储方案的初衷相悖。
发明内容
本申请提供一种分布式数据存储方法、装置、设备及存储介质,其可提高写入性能,并能避免存储容量空间的浪费。
第一方面,本申请实施例提供一种分布式数据存储方法,所述分布式数据存储方法包括:
将校验分片划分为副本数据空间和校验数据空间,所述副本数据空间仅存放未满条带的副本数据,所述校验数据空间仅存放满条带的校验数据;
对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;
对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;
在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
结合第一方面,在一种实施方式中,在校验分片上进行后台聚合,将副本数据转化为校验数据,包括:
当校验分片上条带中的副本数据总大小小于条带大小,且该条带不存在对应的校验数据时,不对该条带执行操作;
当校验分片上条带中的副本数据总大小等于条带大小,且该条带不存在对应的校验数据时,将副本数据聚合为校验数据,并删除该条带在副本数据空间中的副本数据;
当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,并删除该条带在副本数据空间中的所有副本数据。
结合第一方面,在一种实施方式中,所述当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,包括:
当新的副本数据整体覆盖的chunk数达到条带总chunk数的一半及以上时,或条带中所有chunk均被新的副本数据部分覆盖时,在副本数据空间对应的条带中,获取被整体覆盖的chunk数据;
使用条带最新chunk数据计算出最新校验数据。
结合第一方面,在一种实施方式中,还包括:
若条带中存在未获取到的chunk数据,则在数据分片上获取剩余的chunk数据。
结合第一方面,在一种实施方式中,所述当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,包括:
在副本数据空间对应的条带中,获取所有的新副本数据;
在校验数据空间对应的条带中,获取待更新的校验数据;
在数据分片上获取新副本数据对应区段的老数据;
计算新副本数据与对应区段老数据的差异位图;
增量计算出最新校验数据。
结合第一方面,在一种实施方式中,在校验分片上进行后台聚合,将校验数据转化为副本数据,包括:
当校验分片上存在被删除的副本数据,且该条带不存在对应的校验数据时,不对该条带执行操作;
当校验分片上存在被删除的副本数据,且该条带存在对应的校验数据时,在对应的数据分片上获取原始数据段,将原始数据段作为整体,以副本形式写到副本数据空间中的对应偏移上,并删除该条带在校验数据空间的校验数据。
结合第一方面,在一种实施方式中,将校验分片划分为等大小的副本数据空间和校验数据空间。
第二方面,本申请实施例提供了一种分布式数据存储装置,所述分布式数据存储装置包括:
划分模块,其用于将校验分片划分为副本数据空间和校验数据空间,所述副本数据空间仅存放未满条带的副本数据,所述校验数据空间仅存放满条带的校验数据;
存储模块,其用于:
对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;
对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;
数据转换模块,其用于在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
第三方面,本申请实施例提供了一种分布式数据存储设备,所述分布式数据存储设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的分布式数据存储程序,其中所述分布式数据存储程序被所述处理器执行时,实现如上述任一种所述的分布式数据存储方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有分布式数据存储程序,其中所述分布式数据存储程序被处理器执行时,实现如上述任一种所述的分布式数据存储方法的步骤。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请中的分布式数据存储方法,其通过将校验分片划分为副本数据空间和校验数据空间,副本数据空间仅存放未满条带的副本数据,校验数据空间仅存放满条带的校验数据;对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
也就是说,本申请中的方案不依赖前台IO凑满条带,对写入数据的大小、偏移没有强制要求;对于写满的条带数据,直接计算出校验数据,对于未写满的条带数据,直接将其作为一个整体,以副本形式写到校验分片的副本数据空间中,后续转成校验数据的工作由后台聚合任务定期完成;由于本申请的方案没有等待逻辑,因此可以极大提高IO写入性能。
再者,本申请中的方案在条带未写满的情况下,并没有采用常规补0的操作,因此从根本上杜绝了空间浪费问题,与此同时,不补0也节省了补0操作带来的元数据增加,间接减少了空间浪费。
另外,在条带数据被覆盖写,需要更新校验数据时,并没有完全通过全量计算的方法计算出新的校验数据,而是通过判断条带中被覆盖写的具体情况,选择性的通过增量更新的方法计算出新的校验数据,避免了额外的计算、网络开销。
附图说明
图1为本申请分布式数据存储方法一实施例的流程示意图;
图2为本申请对于已经写满的条带的处理策略图;
图3为本申请对于未写满的条带的处理策略图;
图4为本申请第一种场景下的副本数据转校验数据的示意图;
图5为本申请第二种场景下的副本数据转校验数据的示意图;
图6为本申请第三种场景下的副本数据转校验数据的示意图;
图7为本申请第一种场景下的校验数据转副本数据的示意图;
图8为本申请第二种场景下的校验数据转副本数据的示意图;
图9为本申请分布式数据存储装置一实施例的功能模块示意图;
图10为本申请实施例方案中涉及的分布式数据存储设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。术语“第一”、“第二”和“第三”等描述,是用于区分不同的对象等,其不代表先后顺序,也不限定“第一”、“第二”和“第三”是不同的类型。
在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
在本申请实施例描述的一些流程中,包含了按照特定顺序出现的多个操作或步骤,但是应该理解,这些操作或步骤可以不按照其在本申请实施例中出现的顺序来执行或并行执行,操作的序号仅用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作或步骤可以按顺序执行或并行执行,并且这些操作或步骤可以进行组合。
首先,对本申请中涉及的相关存储方式进行介绍:
分布式存储系统:是一种将数据分散存储在多台独立设备上的数据存储系统。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
纠删码数据存储:是一种数据保护方法,它将原始数据按照指定的大小切分成k个原始数据块,然后根据冗余级别将其编码成p个校验数据块,最后将原始数据块、校验数据块存储在不同的位置,以达到数据保护的目的。
副本数据存储:是一种数据保护方法,它将原始数据作为一个整体,根据冗余级别,在n个不同的位置上,存储n份一摸一样的数据,以达到数据保护的目的。
值得说明的是,对于现有技术中纠删码存储方案而言,用户数据在下盘之前,控制流程会先计算出其对应的校验数据,然后连同用户数据一起保存到硬盘上;另外,计算出校验数据的前提是用户数据已经写满条带,因此,在用户数据写满条带之前,控制流程会等待,直到条带写满或者达到超时等待的阈值。
显而易见的,用户数据保存到硬盘上所消耗的时间,除了包括必要的IO路径耗时,还增加了控制流程等待条带被写满的耗时,以及计算校验数据的耗时,而这两种增加的耗时对前台IO影响较大,降低了写入性能。
再者,对于使用纠删码存储方案的用户,其初衷是为了降低成本,提高存储容量利用率,但现有的纠删码存储方案依赖前台IO凑满条带,其大致流程为:
前台IO到达后,控制流程先根据IO offset、条带大小等信息,将数据切分到归属的条带内;当某个条带被写满后,控制流程就会根据纠删码的k、p(其中,k表示一个条带被切分成的原始数据块个数,p表示校验数据块个数;),计算该条带数据对应的校验数据,然后原始数据块连同校验数据块一起下盘;当等待了超时阈值后,条带依旧没有被写满,为了保证前台IO能够执行后续的下盘操作,控制流程会把条带内空缺的区段补0,这些填充的0也会被当作“原始数据”,用于计算出该条带数据对应的校验数据,然后包含填充0的原始数据块连同校验数据块一起下盘。
由此可见,现有方案强依赖前台IO,当条带不能被凑满时,写入性能会受影响,与此同时,补0操作也会使存储容量空间产生严重浪费,这种结果与用户选择纠删码存储方案的初衷相悖。
为解决上述问题,本申请提供一种分布式数据存储方法,当前台IO到达后,控制流程先根据IO offset、条带大小、chunk size、冗余级别等信息,将数据切分到归属的条带内;对于已经写满的条带,直接计算该条带数据对应的校验数据,随后,原始数据块连同校验数据块一起下盘;对于没有写满的条带,直接将其作为一个整体,以副本的形式写到对应数据分片以及校验分片上;校验分片上启动一个后台任务,负责定期检测写入条带的数据,当检测到条带被写满后,就会将该条带上的副本数据聚合为校验数据,然后删除副本数据。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
第一方面,本申请实施例提供一种分布式数据存储方法。
一实施例中,参照图1,图1为本申请分布式数据存储方法一实施例的流程示意图。如图1所示,分布式数据存储方法包括:
S1、将校验分片划分为副本数据空间和校验数据空间,所述副本数据空间仅存放未满条带的副本数据,所述校验数据空间仅存放满条带的校验数据。
本实施例中将校验分片分成两个部分,专门用来存放对应的数据,在具体实现时,可以将校验分片划分为等大小的副本数据空间和校验数据空间。
S2、对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上。
值得说明的是,前台IO到达后,控制流程先根据IO offset、条带大小、chunksize、冗余级别等信息,将数据切分到归属的条带内。其中,IO offset指的是IO偏移,chunksize指的是每个chunk数据块的大小,即条带深度,条带大小指的是所有chunk数据块的大小,即所有数据分片中chunk块总和。
为了便于本申请方案的阐述,后续均基于纠删码4+2(4个数据分片,2个校验分片),chunk size等于4K进行描述。
参见图2所示,对于已经写满的条带,其对应的原始数据会被切分成4个4K大小的chunk数据块A、B、C、D,同时,控制流程会使用写满的条带数据,计算出2个4K大小的校验数据块P、Q;显而易见的,原始数据块A、B、C、D需要依次存放到数据分片0、1、2、3上;校验分片上等大划分了副本数据空间和校验数据空间,副本数据空间仅存放未满条带的副本数据,校验数据空间仅存放满条带的校验数据;校验数据块P、Q分别存放到校验分片P、Q校验数据空间中的对应偏移上。
由于当前条带为写满状态,控制流程直接计算出对应的校验数据即可,校验分片上的副本数据空间无需保存该条带对应的副本数据。
S3、对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上。
参见图3所示,对于未写满的条带数据,控制流程依旧会根据条带大小、chunksize、冗余级别等信息切分数据块,如图3,条带对应的原始数据被切分成2个4K大小的chunk数据块A、B,以及1个不满chunk大小的数据块C,由于当前条带未写满,因此,控制流程无需计算校验数据;显而易见的,原始数据块A、B、C需要依次存放到数据分片0、1、2上,与此同时,为了提高写入性能,控制流程将不会等待条带写满,而是直接将原始数据块A、B、C作为一个整体,以副本形式写到校验分片P、Q副本数据空间中的对应偏移上。
由于当前条带为未写满状态,控制流程无法计算出对应的校验数据,因此,校验分片上的校验数据空间中暂时没有该条带对应的校验数据。
结合步骤S2和S3可知,不管前台IO有没有写满条带,控制流程均不做等待操作;对于写满条带的情况,直接计算条带校验数据,并将其写到校验分片的校验数据空间中的对应偏移上;对于未写满条带的情况,不计算条带校验数据,而直接将该条带中的所有数据作为一个整体,以副本形式写到校验分片的副本数据空间中的对应偏移上。
S4、在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
后台聚合是校验分片上启动的一个后台任务,其作用是定期扫描副本数据,处理副本数据与校验数据相互转化的逻辑,动态优化空间占用率。
当副本数据凑满一个条带后,后台聚合流程将其聚合为校验数据,然后删除副本数据;相反的,当条带中存在被删除的副本数据,且存在对应条带的校验数据时,后台聚合流程会在副本数据空间对应的条带中恢复出副本数据,然后删除对应的校验数据。
可以理解的是,副本数据与校验数据相互转化包括两种情况,即副本数据转化为校验数据、校验数据转化为副本数据,下面分别对这两种情况进行介绍。
副本数据转校验数据,主要分三类场景:
(1)副本数据总size小于条带大小,且不存在校验数据;
参见图4所示,当条带中的副本数据总大小小于条带大小,且该条带没有对应的校验数据时,条带的校验数据是无法计算出来的,因此,后台聚合流程将不会对该条带做任何操作。
(2)副本数据总size等于条带大小,且不存在校验数据;
参见图5所示,当条带中的副本数据总大小等于条带大小,且该条带没有对应的校验数据时,计算条带校验数据的所有数据已准备就绪,因此,后台聚合流程会将副本数据聚合为校验数据,然后将该条带在副本数据空间中的数据删除。
(3)存在新的副本数据,且存在校验数据;
参见图6所示,当条带中存在新的副本数据,且该条带存在对应的校验数据时,说明当前条带发生了覆盖写,对应的校验数据也需要被更新,因此,后台聚合流程会使用新的副本数据更新校验数据,又因为考虑到计算开销以及网络开销,计算新校验数据的方式分为两类:全量重算和增量更新。
全量重算:
当新的副本数据整体覆盖的chunk数达到条带总chunk数的一半及以上,或者条带中所有chunk均被新的副本数据部分覆盖,此时,全量重算新的校验数据的总开销相对较低,其具体流程为:
1)在副本数据空间对应的条带中,获取被整体覆盖的chunk数据;
2)若条带中还存在未获取到的chunk数据,则需要到数据分片上去获取剩余的chunk数据,在进入下一步之前,保证该条带最新的全部chunk数据准备就绪;
3)使用条带最新数据计算出最新校验数据。
增量更新:
除全量重算的情况外,使用增量更新的方法产生的总开销相对较低,其具体流程为:
1)在副本数据空间对应的条带中,获取所有的新副本数据;
2)在校验数据空间对应的条带中,获取待更新的校验数据;
3)到数据分片上获取新副本数据对应区段的老数据;
4)计算新副本数据与对应区段老数据的差异位图;
5)增量计算出最新校验数据。
计算出新的校验数据后,聚合流程将其更新到校验数据空间,然后删除该条带在副本数据空间中的所有副本数据。
校验数据转副本数据,主要分两类场景:
(1)存在被删除的副本数据,且不存在校验数据;
参见图7所示,当条带中存在被删除的副本数据,且该条带没有对应的校验数据时,说明该条带从未被聚合过,条带数据一直是以副本数据形式存在的,因此,后台聚合流程无需处理该条带。
值得说明的是,存在被删除的副本数据,指的是存在被打上了被删除标识的副本数据。
(2)存在被删除的副本数据,且存在校验数据;
参见图8所示,当后台聚合任务扫描到条带中存在被删除的副本数据,且该条带对应的校验数据存在时,说明当前条带之前是处于写满状态的,但由于当前有数据被删除,导致当前条带就处于未写满状态了,显而易见的,此时的校验数据已经失效,因此,后台聚合流程需要将校验数据恢复为副本数据;
由于恢复副本数据之前,副本数据空间中最新的数据是缺失的,因此需要到对应的数据分片上去获取原始数据段;后台聚合流程获取到原始数据段后,将其作为一个整体,以副本形式写到校验分片的副本数据空间中的对应偏移上,最后删除对应的校验数据。
综上所述,本申请中的分布式数据存储方法,其通过将校验分片划分为副本数据空间和校验数据空间,副本数据空间仅存放未满条带的副本数据,校验数据空间仅存放满条带的校验数据;对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
也就是说,本申请中的方案不依赖前台IO凑满条带,对写入数据的大小、偏移没有强制要求;对于写满的条带数据,直接计算出校验数据,对于未写满的条带数据,直接将其作为一个整体,以副本形式写到校验分片的副本数据空间中,后续转成校验数据的工作由后台聚合任务定期完成;由于本申请的方案没有等待逻辑,因此可以极大提高IO写入性能。
再者,本申请中的方案在条带未写满的情况下,并没有采用常规补0的操作,因此从根本上杜绝了空间浪费问题,与此同时,不补0也节省了补0操作带来的元数据增加,间接减少了空间浪费。
另外,在条带数据被覆盖写,需要更新校验数据时,并没有完全通过全量计算的方法计算出新的校验数据,而是通过判断条带中被覆盖写的具体情况,选择性的通过增量更新的方法计算出新的校验数据,避免了额外的计算、网络开销。
第二方面,本申请实施例还提供一种分布式数据存储装置。
一实施例中,参照图9,图9为本申请分布式数据存储装置一实施例的功能模块示意图。如图9所示,分布式数据存储装置包括:
划分模块,其用于将校验分片划分为副本数据空间和校验数据空间,所述副本数据空间仅存放未满条带的副本数据,所述校验数据空间仅存放满条带的校验数据;
存储模块,其用于:
对于已写满的条带,将原始数据以chunk size切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;
对于未写满的条带,将原始数据也以chunk size切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;
数据转换模块,其用于在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
进一步地,一实施例中,所述数据转换模块在校验分片上进行后台聚合,将副本数据转化为校验数据,包括:
当校验分片上条带中的副本数据总大小小于条带大小,且该条带不存在对应的校验数据时,不对该条带执行操作;
当校验分片上条带中的副本数据总大小等于条带大小,且该条带不存在对应的校验数据时,将副本数据聚合为校验数据,并删除该条带在副本数据空间中的副本数据;
当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,并删除该条带在副本数据空间中的所有副本数据。
进一步地,一实施例中,所述当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,所述数据转换模块基于新的副本数据更新校验数据,包括:
当新的副本数据整体覆盖的chunk数达到条带总chunk数的一半及以上时,或条带中所有chunk均被新的副本数据部分覆盖时,在副本数据空间对应的条带中,获取被整体覆盖的chunk数据;
使用条带最新chunk数据计算出最新校验数据。
进一步地,一实施例中,所述数据转换模块还用于:
若条带中存在未获取到的chunk数据,则在数据分片上获取剩余的chunk数据。
进一步地,一实施例中,所述当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,所述数据转换模块基于新的副本数据更新校验数据,包括:
在副本数据空间对应的条带中,获取所有的新副本数据;
在校验数据空间对应的条带中,获取待更新的校验数据;
在数据分片上获取新副本数据对应区段的老数据;
计算新副本数据与对应区段老数据的差异位图;
增量计算出最新校验数据。
进一步地,一实施例中,所述数据转换模块在校验分片上进行后台聚合,将校验数据转化为副本数据,包括:
当校验分片上存在被删除的副本数据,且该条带不存在对应的校验数据时,不对该条带执行操作;
当校验分片上存在被删除的副本数据,且该条带存在对应的校验数据时,在对应的数据分片上获取原始数据段,将原始数据段作为整体,以副本形式写到副本数据空间中的对应偏移上,并删除该条带在校验数据空间的校验数据。
进一步地,一实施例中,所述划分模块将校验分片划分为等大小的副本数据空间和校验数据空间。
其中,上述分布式数据存储装置中各个模块的功能实现与上述分布式数据存储方法实施例中各步骤相对应,其功能和实现过程在此处不再一一赘述。
第三方面,本申请实施例提供一种分布式数据存储设备,分布式数据存储设备可以是个人计算机(personal computer,PC)、笔记本电脑、服务器等具有数据处理功能的设备。
参照图10,图10为本申请实施例方案中涉及的分布式数据存储设备的硬件结构示意图。本申请实施例中,分布式数据存储设备可以包括处理器、存储器、通信接口以及通信总线。
其中,通信总线可以是任何类型的,用于实现处理器、存储器以及通信接口互连。
通信接口包括输入/输出(input/output,I/O)接口、物理接口和逻辑接口等用于实现分布式数据存储设备内部的器件互连的接口,以及用于实现分布式数据存储设备与其他设备(例如其他计算设备或用户设备)互连的接口。物理接口可以是以太网接口、光纤接口、ATM接口等;用户设备可以是显示屏(Display)、键盘(Keyboard)等。
存储器可以是各种类型的存储介质,例如随机存取存储器(randomaccessmemory,RAM)、只读存储器(read-only memory,ROM)、非易失性RAM(non-volatileRAM,NVRAM)、闪存、光存储器、硬盘、可编程ROM(programmable ROM,PROM)、可擦除PROM(erasable PROM,EPROM)、电可擦除PROM(electrically erasable PROM,EEPROM)等。
处理器可以是通用处理器,通用处理器可以调用存储器中存储的分布式数据存储程序,并执行本申请实施例提供的分布式数据存储方法。例如,通用处理器可以是中央处理器(central processing unit,CPU)。其中,分布式数据存储程序被调用时所执行的方法可参照本申请分布式数据存储方法的各个实施例,此处不再赘述。
本领域技术人员可以理解,图10中示出的硬件结构并不构成对本申请的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
第四方面,本申请实施例还提供一种计算机可读存储介质。
本申请计算机可读存储介质上存储有分布式数据存储程序,其中所述分布式数据存储程序被处理器执行时,实现如上述的分布式数据存储方法的步骤。
其中,分布式数据存储程序被执行时所实现的方法可参照本申请分布式数据存储方法的各个实施例,此处不再赘述。
需要说明的是,上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本申请各个实施例所述的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (9)

1.一种分布式数据存储方法,其特征在于,所述分布式数据存储方法包括:
将校验分片划分为副本数据空间和校验数据空间,所述副本数据空间仅存放未满条带的副本数据,所述校验数据空间仅存放满条带的校验数据;
对于已写满的条带,将原始数据以条带深度chunksize切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;
对于未写满的条带,将原始数据也以chunksize切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;
在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化;
其中,在校验分片上进行后台聚合,将校验数据转化为副本数据,包括:
当校验分片上存在被删除的副本数据,且该条带不存在对应的校验数据时,不对该条带执行操作;
当校验分片上存在被删除的副本数据,且该条带存在对应的校验数据时,在对应的数据分片上获取原始数据段,将原始数据段作为整体,以副本形式写到副本数据空间中的对应偏移上,并删除该条带在校验数据空间的校验数据。
2.如权利要求1所述的分布式数据存储方法,其特征在于,在校验分片上进行后台聚合,将副本数据转化为校验数据,包括:
当校验分片上条带中的副本数据总大小小于条带大小,且该条带不存在对应的校验数据时,不对该条带执行操作;
当校验分片上条带中的副本数据总大小等于条带大小,且该条带不存在对应的校验数据时,将副本数据聚合为校验数据,并删除该条带在副本数据空间中的副本数据;
当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,并删除该条带在副本数据空间中的所有副本数据。
3.如权利要求2所述的分布式数据存储方法,其特征在于,所述当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,包括:
当新的副本数据整体覆盖的块容器chunk数达到条带总chunk数的一半及以上时,或条带中所有chunk均被新的副本数据部分覆盖时,在副本数据空间对应的条带中,获取被整体覆盖的chunk数据;
使用条带最新chunk数据计算出最新校验数据。
4.如权利要求3所述的分布式数据存储方法,其特征在于,还包括:
若条带中存在未获取到的chunk数据,则在数据分片上获取剩余的chunk数据。
5.如权利要求2所述的分布式数据存储方法,其特征在于,所述当校验分片上存在新的副本数据,且该条带存在对应的校验数据时,基于新的副本数据更新校验数据,包括:
在副本数据空间对应的条带中,获取所有的新副本数据;
在校验数据空间对应的条带中,获取待更新的校验数据;
在数据分片上获取新副本数据对应区段的老数据;
计算新副本数据与对应区段老数据的差异位图;
增量计算出最新校验数据。
6.如权利要求1所述的分布式数据存储方法,其特征在于:
将校验分片划分为等大小的副本数据空间和校验数据空间。
7.一种分布式数据存储装置,其特征在于,所述分布式数据存储装置包括:
划分模块,其用于将校验分片划分为副本数据空间和校验数据空间,所述副本数据空间仅存放未满条带的副本数据,所述校验数据空间仅存放满条带的校验数据;
存储模块,其用于:
对于已写满的条带,将原始数据以chunksize切分存放至对应数据分片,直接计算出条带校验数据,并写到校验数据空间中的对应偏移上;
对于未写满的条带,将原始数据也以chunksize切分存放至对应数据分片,不计算条带校验数据,直接将该条带中的所有数据作为整体,以副本形式写到副本数据空间中的对应偏移上;
数据转换模块,其用于在校验分片上进行后台聚合,以进行副本数据与校验数据相互转化。
8.一种分布式数据存储设备,其特征在于,所述分布式数据存储设备包括处理器、存储器、以及存储在所述存储器上并可被所述处理器执行的分布式数据存储程序,其中所述分布式数据存储程序被所述处理器执行时,实现如权利要求1至6中任一项所述的分布式数据存储方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有分布式数据存储程序,其中所述分布式数据存储程序被处理器执行时,实现如权利要求1至6中任一项所述的分布式数据存储方法的步骤。
CN202311750470.5A 2023-12-19 2023-12-19 一种分布式数据存储方法、装置、设备及存储介质 Active CN117420969B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311750470.5A CN117420969B (zh) 2023-12-19 2023-12-19 一种分布式数据存储方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311750470.5A CN117420969B (zh) 2023-12-19 2023-12-19 一种分布式数据存储方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN117420969A CN117420969A (zh) 2024-01-19
CN117420969B true CN117420969B (zh) 2024-04-16

Family

ID=89530664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311750470.5A Active CN117420969B (zh) 2023-12-19 2023-12-19 一种分布式数据存储方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117420969B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085953B1 (en) * 2002-11-01 2006-08-01 International Business Machines Corporation Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array
CN104503706A (zh) * 2014-12-23 2015-04-08 中国科学院计算技术研究所 一种基于磁盘阵列的数据存储及读取方法
CN107817947A (zh) * 2016-09-14 2018-03-20 北京金山云网络技术有限公司 一种数据存储方法、装置及系统
CN109783016A (zh) * 2018-12-25 2019-05-21 西安交通大学 一种分布式存储系统中的弹性多维度冗余方法
CN109814807A (zh) * 2018-12-28 2019-05-28 曙光信息产业(北京)有限公司 一种数据存储方法及装置
CN110262922A (zh) * 2019-05-15 2019-09-20 中国科学院计算技术研究所 基于副本数据日志的纠删码更新方法及系统
CN110347344A (zh) * 2019-07-19 2019-10-18 北京计算机技术及应用研究所 一种基于分布式存储系统的自动配置块存储方法
WO2021003822A1 (zh) * 2019-07-11 2021-01-14 平安科技(深圳)有限公司 数据存储及恢复的方法、装置及计算机设备
WO2023020136A1 (zh) * 2021-08-20 2023-02-23 华为技术有限公司 存储系统中的数据存储方法及装置
CN115878042A (zh) * 2022-12-29 2023-03-31 广州文远知行科技有限公司 一种数据存储系统、数据处理方法及存储介质
CN116700623A (zh) * 2023-06-25 2023-09-05 新华三云计算技术有限公司 一种数据存储方法、系统、电子设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8103903B2 (en) * 2010-02-22 2012-01-24 International Business Machines Corporation Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system
CN103793425B (zh) * 2012-10-31 2017-07-14 国际商业机器公司 用于分布式系统的数据处理方法及装置
US11182352B2 (en) * 2019-07-08 2021-11-23 Vmware, Inc. Exchanging runtime state information between datacenters using a controller bridge

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7085953B1 (en) * 2002-11-01 2006-08-01 International Business Machines Corporation Method and means for tolerating multiple dependent or arbitrary double disk failures in a disk array
CN104503706A (zh) * 2014-12-23 2015-04-08 中国科学院计算技术研究所 一种基于磁盘阵列的数据存储及读取方法
CN107817947A (zh) * 2016-09-14 2018-03-20 北京金山云网络技术有限公司 一种数据存储方法、装置及系统
CN109783016A (zh) * 2018-12-25 2019-05-21 西安交通大学 一种分布式存储系统中的弹性多维度冗余方法
CN109814807A (zh) * 2018-12-28 2019-05-28 曙光信息产业(北京)有限公司 一种数据存储方法及装置
CN110262922A (zh) * 2019-05-15 2019-09-20 中国科学院计算技术研究所 基于副本数据日志的纠删码更新方法及系统
WO2021003822A1 (zh) * 2019-07-11 2021-01-14 平安科技(深圳)有限公司 数据存储及恢复的方法、装置及计算机设备
CN110347344A (zh) * 2019-07-19 2019-10-18 北京计算机技术及应用研究所 一种基于分布式存储系统的自动配置块存储方法
WO2023020136A1 (zh) * 2021-08-20 2023-02-23 华为技术有限公司 存储系统中的数据存储方法及装置
CN115878042A (zh) * 2022-12-29 2023-03-31 广州文远知行科技有限公司 一种数据存储系统、数据处理方法及存储介质
CN116700623A (zh) * 2023-06-25 2023-09-05 新华三云计算技术有限公司 一种数据存储方法、系统、电子设备及存储介质

Also Published As

Publication number Publication date
CN117420969A (zh) 2024-01-19

Similar Documents

Publication Publication Date Title
KR102240557B1 (ko) 데이터 저장 방법, 장치 및 시스템
US10719250B2 (en) System and method for combining erasure-coded protection sets
US11442961B2 (en) Active transaction list synchronization method and apparatus
CN106708653B (zh) 一种基于纠删码与多副本的混合税务大数据安全保护方法
CN110018989B (zh) 一种快照比对的方法和装置
CN102591947A (zh) 用于数据去重复的快速且低ram占用的索引
CN109358947B (zh) 一种虚拟机快照的实现方法及系统
CN113176858B (zh) 数据处理方法、存储系统及存储设备
CN110058953B (zh) 用于改变存储系统的类型的方法、设备和存储介质
US20170123678A1 (en) Garbage Collection for Reference Sets in Flash Storage Systems
US11656942B2 (en) Methods for data writing and for data recovery, electronic devices, and program products
US11886705B2 (en) System and method for using free space to improve erasure code locality
CN104965835A (zh) 一种分布式文件系统的文件读写方法及装置
CN113806300A (zh) 数据存储方法、系统、装置、设备及存储介质
CN112748866A (zh) 一种增量索引数据的处理方法和装置
CN117420969B (zh) 一种分布式数据存储方法、装置、设备及存储介质
CN111143113A (zh) 复制元数据的方法、电子设备和计算机程序产品
WO2023197937A1 (zh) 数据处理方法及其装置、存储介质、计算机程序产品
CN111506450B (zh) 用于数据处理的方法、设备和计算机程序产品
CN114879905A (zh) 一种数据存储方法、装置、电子设备及存储介质
US10678453B2 (en) Method and device for checking false sharing in data block deletion using a mapping pointer and weight bits
US11620080B2 (en) Data storage method, device and computer program product
US11809717B2 (en) Data managing method, an electric device, and a computer program product for efficient management of services
CN111694801A (zh) 一种应用于故障恢复的数据去重方法和装置
US11656950B2 (en) Method, electronic device and computer program product for storage management

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