CN115202575A - 一种数据处理方法及电子设备 - Google Patents
一种数据处理方法及电子设备 Download PDFInfo
- Publication number
- CN115202575A CN115202575A CN202210712116.2A CN202210712116A CN115202575A CN 115202575 A CN115202575 A CN 115202575A CN 202210712116 A CN202210712116 A CN 202210712116A CN 115202575 A CN115202575 A CN 115202575A
- Authority
- CN
- China
- Prior art keywords
- data
- storage address
- storage
- bitmap
- mark
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/1004—Adding 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
-
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法及电子设备,该方法包括:响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址;确定存储地址对应的位图标记,位图标记用于表征存储地址中是否存在经过纠删码计算的数据;根据位图标记在存储地址中写入待写入数据,或从存储地址中读取待读取数据。如此,在采用大规模的条带的纠删码保存数据时,每次在存储地址中写入数据或读取数据时,仅需要对存储地址对应的位图标记进行确认,并基于位图标记的确认结果在存储地址中写入数据或读取数据,也即可以在无需对数据重构的基础上,直接通过局部更新的方式在条带中写入数据,从而节省对条带中的数据重构所花费的时间,提高用户体验。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法及电子设备。
背景技术
在高性能计算(HPC)领域,往往会使用大规模的条带的纠删码保存数据。因此,在面对如何在存储单元的条带中写入数据这一问题时,更新整个条带往往不能作为一个可行的解决方案。
现有的解决方案中可以通过局部更新的方式在条带中写入数据,但这种方法需要保证条带中的数据是经过纠删码计算的,而通常条带中有旧的脏数据,是不满足这个条件的。因此,需要在写入数据前对条带中的数据进行重构,重构的方法包括将条带中的数据全部清零,或将条带中的有效数据读出,然后计算纠删码,将计算好的纠删码写入校验位。但无论何时对条带中的数据进行重构,都需要访问全量的数据空间,在大型存储系统中(比如PB(petabyte)级),会花费大量的时间,降低用户体验。
发明内容
有鉴于此,本申请实施例通过提供一种数据处理方法及电子设备,用以至少解决现有技术中存在的上述技术问题。
根据本申请第一方面,本申请实施例提供了一种数据处理方法,包括:响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址;确定存储地址对应的位图标记,位图标记用于表征存储地址中是否存在经过纠删码计算的数据;根据位图标记在存储地址中写入待写入数据,或从存储地址中读取待读取数据。
可选地,确定存储地址对应的位图标记,包括:确定存储地址对应的目标数据块,目标数据块为条带中的一个数据块;确定目标数据块的位图标记;将目标数据块的位图标记作为存储地址对应的位图标记。
可选地,根据位图标记在存储地址中写入待写入数据,包括:根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据;将返回数据及待写入数据进行纠删码计算,得到第二校验数据;将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据。
可选地,将返回数据及待写入数据进行纠删码计算,得到第二校验数据,包括:将返回数据中存储地址对应的存储数据及待写入数据进行增量计算,得到增量数据;将增量数据及返回数据中存储地址对应的第一校验数据进行纠删码计算,得到第二校验数据。
可选地,在将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据之前,数据处理方法还包括:将存储地址对应的脏位图标记设置成脏标记;脏位图标记用于表征存储地址中的存储数据是否需要恢复;
在将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据之后,数据处理方法还包括:将存储地址对应的脏位图标记设置成非脏标记。
可选地,根据位图标记从存储地址中读取待读取数据,包括:根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据。
可选地,根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据,包括:在确定位图标记为写入标记的情况下,读取存储地址中的存储数据及存储地址对应的第一校验数据,得到返回数据;在确定位图标记为未写入标记的情况下,确定第一常量作为存储地址对应的存储数据,确定第二常量作为存储地址对应的第一校验数据,基于第一常量及第二常量得到返回数据,其中,第一常量及第二常量均满足:该常量经过纠删码计算得到的纠删码,等于该常量;其中,写入标记用于表征存储地址中存在经过纠删码计算的数据,未写入标记用于表征存储地址中不存在经过纠删码计算的数据。
可选地,在响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址之前,数据处理方法还包括:根据用户请求的数据存储容量,从存储单元中分配多个条带的多个数据块,作为数据存储空间;对分配的多个条带的多个数据块对应的位图标记进行初始化。
可选地,数据处理方法还包括:响应于系统启动,对存储单元中各条带的各数据块对应的脏位图标记进行检查;对于任一条带,在确认存在脏位图标记的数据块的情况下,读取条带中脏位图标记为非脏标记的数据块中的数据;将该数据进行纠删码计算,得到修正数据;将修正数据写入脏位图标记为脏标记的数据块中;将脏标记翻转为非脏标记。
根据本申请第二方面,本申请实施例还提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行如第一方面或第一方面任意实施方式中的数据处理方法。
本申请实施例提供的数据处理方法及电子设备,通过响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址;确定存储地址对应的位图标记,位图标记用于表征存储地址中是否存在经过纠删码计算的数据;根据位图标记在存储地址中写入待写入数据,或从存储地址中读取待读取数据;如此,在采用大规模的条带的纠删码保存数据时,每次在存储地址中写入数据或读取数据时,仅需要对存储地址对应的位图标记进行确认,并基于位图标记的确认结果在存储地址中写入数据或读取数据,并不需要确保条带中的数据均是经过纠删码计算的,以及对条带中的数据进行重构,也即可以在无需对数据重构的基础上,直接通过局部更新的方式在条带中写入数据,从而节省对条带中的数据重构所花费的时间,提高用户体验。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
图1为本申请实施例中一种数据处理方法的流程示意图;
图2为本申请实施例中存储单元的结构示意图;
图3为本申请实施例中数据处理方法的另一流程示意图;
图4为本申请实施例中一种电子设备的硬件结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请实施例涉及的几个名词进行解释:
纠删码(erasure coding,EC)):是一种数据保护方法,它将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置。
条带(stripe):是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中的不同磁盘上的方法。简单的说,条带是一种将多个磁盘驱动器合并为一个卷的方法。许多情况下,这是通过硬件控制器来完成的。
脏数据(Dirty Read):是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑。
逻辑块:本申请的逻辑块是存储器保证原子性的最小单位,比如当系统掉电时,该区域的写入不会部分成功,部分失败。通常是磁盘扇区大小或者物理块大小,比如硬盘可以保证512以上的完整性,NVMe存储系统(Non-Volatile Memory express)盘可以保证4096以上的完整性。条带中的数据块与逻辑块一一对应。
存储位图:存储单元中多个条带的多个数据块所属的区域,存储位图按位与逻辑块一一对应。
位图标记:用于表征存储地址中是否存在经过纠删码计算的数据;位图标记与逻辑块一一对应,从而数据块与位图标记一一对应。
脏位图标记:用于标记数据块中是否存在脏数据,脏位图标记与数据块一一对应。
本申请实施例提供了一种数据处理方法,可应用于采用条带的纠删码进行保存数据的方案中,如图1所示,数据处理方法包括:
S101,响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址。
在本实施例中,写入数据请求可以是对存储有脏数据的存储单元进行覆盖写入数据的请求,也可以是对新的存储单元进行数据写入的请求。读取数据请求可以是对存储有脏数据的存储单元进行数据读取的请求,也可以是对存储单元中经过纠删码计算的数据的读取请求。存储单元包括但不限于:持久内存设备、磁盘。持久内存设备包括但不限于非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM)、傲腾(Optane)、NVMe存储系统盘的持久性内存区域(PersistentMemoryRegion,PMR)。磁盘包括但不限于机械盘、NVMe存储系统固态硬盘、NVMe存储系统盘。待写入数据对应的存储地址为待写入数据写入存储单元中的位置,待读取数据对应的存储地址为待读取数据存储在存储单元中的位置。
S102,确定存储地址对应的位图标记,位图标记用于表征存储地址中是否存在经过纠删码计算的数据。
在本实施例中,由于向存储单元中写入数据时,需要对待写入数据进行纠删码计算,且此之前,并未对存储单元中的数据进行重构,因此,不能确定存储地址中是否存在经过纠删码计算的数据。如果待写入数据对应的存储地址中存在经过纠删码计算的数据,则可以直接通过局部更新的方式,将待写入数据写入存储地址中,这样可以保证后续能够对数据进行修复;如果待写入数据对应的存储地址中存在脏数据,脏数据未经过纠删码计算,则不能直接通过局部更新的方式,将待写入数据写入存储地址中,否则不能达到纠删码的效果。
而存储地址对应的逻辑块对应有位图标记,位图标记可以表征存储地址中是否存在经过纠删码计算的数据,因此,需要确定存储地址对应的位图标记,以确定存储地址存储的数据是否经过纠删码计算。
S103,根据位图标记在存储地址中写入待写入数据,或从存储地址中读取待读取数据。
在本实施例中,如果位图标记表明存储地址中存在经过纠删码计算的数据,则可以直接通过局部更新的方式,将待写入数据以覆盖写入的形式写入存储地址中,或直接从存储地址中读取待读取数据。如果位图标记表明存储地址中不存在经过纠删码计算的数据,则可以将存储地址中的数据看作常量,例如0的方式,直接通过局部更新的方式,将待写入数据以覆盖写入的形式写入存储地址中,或返回常量,得到从存储地址中读取的待读取数据。
本申请实施例提供的数据处理方法,通过响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址;确定存储地址对应的位图标记,位图标记用于表征存储地址中是否存在经过纠删码计算的数据;根据位图标记在存储地址中写入待写入数据,或从存储地址中读取待读取数据;如此,在采用大规模的条带的纠删码保存数据时,每次在存储地址中写入数据或读取数据时,仅需要对存储地址对应的位图标记进行确认,并基于位图标记的确认结果在存储地址中写入数据或读取数据,并不需要确保条带中的数据均是经过纠删码计算的,以及对条带中的数据进行重构,也即可以在无需对数据重构的基础上,直接通过局部更新的方式在条带中写入数据,从而节省对条带中的数据重构所花费的时间,提高用户体验。
在一个可选的实施例中,对于旧的存储单元,如果存储单元中存储了大量的脏数据,则这些脏数据对于目前要写入的数据不相关,则可以在存储系统建立时,对存储单元中各数据块的位图标记进行初始化。位图标记包括写入标记和未写入标记两种状态。当对位图标记进行初始化时,是清除位图标记中的写入标记,将其置为未写入标记。查找数据块的位图标记为写入标记的方式包括直接遍历查找,和通过布隆过滤器进行优化查找。
如此,通过对存储单元中各数据块的位图标记进行初始化,然后进行数据写入,就像使用一个新的存储单元一样,重新写入各数据块中的数据可以完全覆盖数据块中原有的脏数据,从存储单元中也不能读取到原有的脏数据,且由于仅对存储单元中各数据块的位图标记进行初始化,所需时间非常短,用户无感知,与现有技术中对存储单元进行数据重构所花费的大量时间相比,用户可以快速使用旧的存储单元,提高用户体验。例如,需要写入的数据量是1/blk-size/8,容量远远低于存储单元总容量,按总容量2P,逻辑块8k计算,需要写入的数据量仅为32G,通过本申请实施例的数据处理方法,在存储单元中写入32G数据仅几秒就可以完成,与现有技术中存储单元的整个存储空间需要数天的数据重构相比,节省了大量的数据重构的时间。
在一个可选的实施例中,当用户在使用存储系统前通常需要给数据分配数据存储空间,分配数据存储空间包括创建卷、创建逻辑单元号(Logical Unit Number,LUN)等。因此,在本申请实施例中,在步骤S101,响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址之前,数据处理方法还包括:根据用户请求的数据存储容量,从存储单元中分配多个条带的多个数据块,作为数据存储空间;对分配的多个条带的多个数据块对应的位图标记进行初始化。
具体地,用户请求的数据存储容量小于或等于存储单元的总容量。存储单元的结构示意图如图2所示。如果作为数据存储空间的多个条带的多个数据块对应的位图标记没有进行初始化,还需要对数据存储空间中的多个条带的多个数据块对应的位图标记进行初始化。
如此,可以根据用户对数据存储容量的需求,合理地为数据分配数据存储空间,提高用户体验。
在一个可选的实施例中,步骤S102,确定存储地址对应的位图标记,包括:确定存储地址对应的目标数据块,目标数据块为条带中的一个数据块;确定目标数据块的位图标记;将目标数据块的位图标记作为存储地址对应的位图标记。
具体实施时,可以通过存储地址、条带容量及数据块容量计算待存储地址所在的条带的目标数据块。例如,首先计算存储地址与条带容量的第一比值,得到存储地址所在的条带,然后计算存储地址与数据块容量的第二比值,得到存储地址所在的区块,根据存储地址所在的条带及所在的区块,确定存储地址所在的条带的目标数据块。
可以通过映射查找的方式在数据块与位图标记的映射关系中查找目标数据块的位图标记。然后确定目标数据块的位图标记为存储地址对应的位图标记。
在本实施例中,由于存储单元中条带的各数据块对应有位图标记,则通过确定存储地址对应的目标数据块,并查找到目标数据块的位图标记,可以准确地确定存储地址对应的位图标记。
在一个可选的实施例中,步骤S103中,根据位图标记在存储地址中写入待写入数据,包括:根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据;将返回数据及待写入数据进行纠删码计算,得到第二校验数据;将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据。
在一些实施方式中,根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据,包括:在确定位图标记为写入标记的情况下,读取存储地址中的存储数据及存储地址对应的第一校验数据,得到返回数据;在确定位图标记为未写入标记的情况下,确定第一常量作为存储地址对应的存储数据,确定第二常量作为存储地址对应的第一校验数据,基于第一常量及第二常量得到返回数据,其中,第一常量及第二常量均满足:该常量经过纠删码计算得到的纠删码,等于该常量;其中,写入标记用于表征存储地址中存在经过纠删码计算的数据,未写入标记用于表征存储地址中不存在经过纠删码计算的数据。
具体实施时,写入标记和未写入标记可以采用符号或数据代替,例如写入标记为1,未写入标记为0。第一常量和第二常量满足的常等式为:EC(a+b+c+d)=e+f,其中a=b=c=d=e=f。在本实施例中,第一常量和第二常量为0时,是满足上述常等式的,因此,在本实施例中,可以设置第一常量和第二常量为0。
在本实施例中,在位图标记为写入标记的情况下,说明存储地址中存在经过纠删码计算的数据,则直接读取存储地址中的存储数据及存储地址对应的第一校验数据,得到返回数据;在位图标记为未写入标记的情况下,直接确定第一常量作为存储地址对应的存储数据,确定第二常量作为存储地址对应的第一校验数据,则可以保证无论存储地址中是否存在经过纠删码计算的数据,返回的数据均能够满足纠删码的要求,可以避免读取到存储地址中的脏数据,从而可以直接采用局部更新的方式在条带中写入数据。
在一些实施方式中,将返回数据及待写入数据进行纠删码计算,得到第二校验数据,包括:将返回数据中存储地址对应的存储数据及待写入数据进行增量计算,得到增量数据;将增量数据及返回数据中存储地址对应的第一校验数据进行纠删码计算,得到第二校验数据。
具体实施时,增量计算可以为异或操作。第一校验数据可以存储在存储单元的校验块中,每个条带可以对应有一个或多个校验块。第一校验数据用于恢复目标数据块中的数据。在计算到第二校验数据后,需要将第二校验数据替换校验块中的第一校验数据。
在本实施例中,根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据;将返回数据及待写入数据进行纠删码计算,得到第二校验数据;将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据,可以使得待写入数据在写入目标数据块时,经过纠删码计算,实现对存储在目标数据块中的数据进行保护。
在一个可选的实施例中,在将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据之前,数据处理方法还包括:将存储地址对应的脏位图标记设置成脏标记;脏位图标记用于表征存储地址中的存储数据是否需要恢复;
在将待写入数据写入存储地址,将第二校验数据替换存储地址对应的第一校验数据之后,数据处理方法还包括:将存储地址对应的脏位图标记设置成非脏标记。
在本实施例中,通过脏位图标记的翻转操作控制,在数据写入系统并发生整体掉电时,只要通过遍历存储单元的脏位图标记,就可以完成掉电修复工作,从而既可以保证掉电不会丢失数据,又可以在数据写入时无需满足条带对齐条件,无需额外的读改写,读、写的数据块的比例固定,延迟稳定,可以提高数据写入速度和读取速度。当条带的成员数(包括数据块和校验块)较多时,优势更加明显。例如,对于某一条带(4个数据块+2个校验块)的情况,按整条带的方式写入数据,需要读取4个数据块的数据,经过数据更新和运算,再写入4个数据块和2个校验块,总共操作10次输入/输出(IO);而本本申请实施例读取1个数据块和2个校验块的数据,经过数据更新和运算,再写入1个数据块和2个校验块,总共操作6次IO+2次位图标记,但是2次位图标记写入的延迟是远低于磁盘(机械盘、固体硬盘、NVMe存储系统盘等)的写入延迟。
在一个可选的实施例中,步骤S103中,根据位图标记从存储地址中读取待读取数据,包括:根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据。
具体实施时,根据位图标记获取存储地址对应的存储数据及存储地址对应的第一校验数据,得到返回数据,包括:在确定位图标记为写入标记的情况下,读取存储地址中的存储数据及存储地址对应的第一校验数据,得到返回数据;在确定位图标记为未写入标记的情况下,确定第一常量作为存储地址对应的存储数据,确定第二常量作为存储地址对应的第一校验数据,基于第一常量及第二常量得到返回数据,其中,第一常量及第二常量均满足:该常量经过纠删码计算得到的纠删码,等于该常量;其中,写入标记用于表征存储地址中存在经过纠删码计算的数据,未写入标记用于表征存储地址中不存在经过纠删码计算的数据。
更具体地,写入标记和未写入标记可以采用符号或数据代替,例如写入标记为1,未写入标记为0。第一常量和第二常量满足的常等式为:EC(a+b+c+d)=e+f,其中a=b=c=d=e=f。在本实施例中,第一常量和第二常量为0时,是满足上述常等式的,因此,在本实施例中,可以设置第一常量和第二常量为0。
在本实施例中,在位图标记为写入标记的情况下,说明存储地址中存在经过纠删码计算的数据,则直接读取存储地址中的存储数据及存储地址对应的第一校验数据,得到返回数据;在位图标记为未写入标记的情况下,直接确定第一常量作为存储地址对应的存储数据,确定第二常量作为存储地址对应的第一校验数据,则可以保证无论存储地址中是否存在经过纠删码计算的数据,返回的数据均能够满足纠删码的要求,可以避免读取到存储地址中的脏数据。
在一个可选的实施例中,数据处理方法还包括:响应于系统启动,对存储单元中各条带的各数据块对应的脏位图标记进行检查;对于任一条带,在确认存在脏位图标记的数据块的情况下,读取条带中脏位图标记为非脏标记的数据块中的数据;将该数据进行纠删码计算,得到修正数据;将修正数据写入脏位图标记为脏标记的数据块中;将脏标记翻转为非脏标记。
具体地,系统启动时,需要检查存储单元的存储位图中的脏标记,当发现有脏标记时,才需要进行条带恢复,表明存储系统经历过不可预期的停止,包括掉电等。条带恢复的方法是将条带中具有非脏标记的数据读出,并通过EC运算,算出修正数据,通过并发或非并发的方式写入到具有脏标记对应的数据块中,并清空该数据块对应的脏标记。查找的方式包括直接遍历查找,和通过布隆过滤器进行优化查找。
在本实施例中,在每次存储系统启动时,通过遍历存储单元中各条带的各数据块对应的脏位图标记,可以及时发现条带中存在脏数据的数据块,并进行修复,保证存储系统掉电不会丢失数据。
下述以在持久内存的条带中通过局部更新的方式写入数据的具体步骤,对本申请的数据处理方法进行进一步的介绍。
数据写入时,首先根据写入位置计算写入数据对应写入的条带及条带的目标数据块。然后按照如下流程进行,如图3所示:
a.读取目标数据块中的数据时,首先检查目标数据块的位图标记,发现没有写入标记,则返回常等式的常量,包括:0,否则读取目标数据块中的现有数据和对应条带的校验块中的校验数据,并将数据返回,得到返回数据。
b.将返回数据中的现有数据或常等式的常量与待写入数据进行增量计算,增量计算可以是:异或操作。
c.通过EC更新运算,输入b计算出的增量数据及校验数据,计算出新的校验数据。
d.将持久内存该位置的脏位图标记设置成脏标记。
e.将写入数据写入该数据所在位置。
f.将新的校验数据写入原来的校验位置,其中步骤f和步骤e可以并发执行,但是并发数小于等于校验块的数量。
g.如果持久内存位图标记中对应目标数据块的标记为未写入标记,则将持久内存位图标记中对应目标数据块的标记翻转为写入标记。
h.将持久内存该位置脏位图标记设置成非脏标记。
本申请实施例提供的数据处理方法,在采用大规模的条带的纠删码保存数据时,每次在存储地址中写入数据时,仅需要对存储地址对应的位图标记进行确认,并基于位图标记的确认结果在存储地址中写入数据,并不需要确保条带中的数据均是经过纠删码计算的,以及对条带中的数据进行重构,也即可以在无需对数据重构的基础上,直接通过局部更新的方式在条带中写入数据,从而节省对条带中的数据重构所花费的时间,提高用户体验。
根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。
图4示出了可以用来实施本申请的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图4所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如数据处理方法。例如,在一些实施例中,数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据处理方法,包括:
响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址;
确定所述存储地址对应的位图标记,所述位图标记用于表征所述存储地址中是否存在经过纠删码计算的数据;
根据所述位图标记在所述存储地址中写入待写入数据,或从所述存储地址中读取待读取数据。
2.根据权利要求1所述的数据处理方法,所述确定所述存储地址对应的位图标记,包括:
确定所述存储地址对应的目标数据块,所述目标数据块为条带中的一个数据块;
确定所述目标数据块的位图标记;
将所述目标数据块的位图标记作为所述存储地址对应的位图标记。
3.根据权利要求1所述的数据处理方法,根据所述位图标记在所述存储地址中写入待写入数据,包括:
根据所述位图标记获取所述存储地址对应的存储数据及所述存储地址对应的第一校验数据,得到返回数据;
将所述返回数据及所述待写入数据进行纠删码计算,得到第二校验数据;
将所述待写入数据写入所述存储地址,将所述第二校验数据替换所述存储地址对应的第一校验数据。
4.根据权利要求3所述的数据处理方法,所述将所述返回数据及所述待写入数据进行纠删码计算,得到第二校验数据,包括:
将所述返回数据中所述存储地址对应的存储数据及所述待写入数据进行增量计算,得到增量数据;
将所述增量数据及所述返回数据中所述存储地址对应的第一校验数据进行纠删码计算,得到第二校验数据。
5.根据权利要求3所述的数据处理方法,
在所述将所述待写入数据写入所述存储地址,将所述第二校验数据替换所述存储地址对应的第一校验数据之前,还包括:
将所述存储地址对应的脏位图标记设置成脏标记;所述脏位图标记用于表征所述存储地址中的存储数据是否需要恢复;
在所述将所述待写入数据写入所述存储地址,将所述第二校验数据替换所述存储地址对应的第一校验数据之后,还包括:
将所述存储地址对应的脏位图标记设置成非脏标记。
6.根据权利要求1所述的数据处理方法,根据所述位图标记从所述存储地址中读取待读取数据,包括:
根据所述位图标记获取所述存储地址对应的存储数据及所述存储地址对应的第一校验数据,得到返回数据。
7.根据权利要求3或6所述的数据处理方法,所述根据所述位图标记获取所述存储地址对应的存储数据及所述存储地址对应的第一校验数据,得到返回数据,包括:
在确定所述位图标记为写入标记的情况下,读取所述存储地址中的存储数据及所述存储地址对应的第一校验数据,得到返回数据;
在确定所述位图标记为未写入标记的情况下,确定第一常量作为所述存储地址对应的存储数据,确定第二常量作为所述存储地址对应的第一校验数据,基于所述第一常量及所述第二常量得到返回数据,其中,所述第一常量及所述第二常量均满足:该常量经过纠删码计算得到的纠删码,等于该常量;
其中,写入标记用于表征所述存储地址中存在经过纠删码计算的数据,未写入标记用于表征所述存储地址中不存在经过纠删码计算的数据。
8.根据权利要求1所述的数据处理方法,在所述响应于写入/读取数据请求,确定待写入/读取数据对应的存储地址之前,还包括:
根据用户请求的数据存储容量,从存储单元中分配多个条带的多个数据块,作为数据存储空间;
对分配的多个条带的多个所述数据块对应的位图标记进行初始化。
9.根据权利要求8所述的数据处理方法,还包括:
响应于系统启动,对存储单元中各条带的各数据块对应的脏位图标记进行检查;
对于任一条带,在确认存在脏位图标记的数据块的情况下,读取所述条带中脏位图标记为非脏标记的数据块中的数据;将该数据进行纠删码计算,得到修正数据;将所述修正数据写入所述脏位图标记为脏标记的数据块中;将所述脏标记翻转为非脏标记。
10.一种电子设备,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-9任意一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210712116.2A CN115202575A (zh) | 2022-06-22 | 2022-06-22 | 一种数据处理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210712116.2A CN115202575A (zh) | 2022-06-22 | 2022-06-22 | 一种数据处理方法及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115202575A true CN115202575A (zh) | 2022-10-18 |
Family
ID=83575595
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210712116.2A Pending CN115202575A (zh) | 2022-06-22 | 2022-06-22 | 一种数据处理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115202575A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719484A (zh) * | 2023-08-09 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 一种磁盘阵列的写数据处理方法、装置、设备和介质 |
CN116795295A (zh) * | 2023-08-16 | 2023-09-22 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
-
2022
- 2022-06-22 CN CN202210712116.2A patent/CN115202575A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116719484A (zh) * | 2023-08-09 | 2023-09-08 | 苏州浪潮智能科技有限公司 | 一种磁盘阵列的写数据处理方法、装置、设备和介质 |
CN116795295A (zh) * | 2023-08-16 | 2023-09-22 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
CN116795295B (zh) * | 2023-08-16 | 2023-11-17 | 苏州浪潮智能科技有限公司 | 磁盘阵列中的数据处理方法及装置、存储介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3726364B1 (en) | Data write-in method and solid-state drive array | |
CN115202575A (zh) | 一种数据处理方法及电子设备 | |
US8356148B2 (en) | Snapshot metadata management in a storage system | |
CN107526535B (zh) | 用于管理存储系统的方法和系统 | |
US10387280B2 (en) | Reporting defects in a flash memory back-up system | |
US10324810B2 (en) | Method and apparatus for redundant array of independent disks with raid metadata and sub-raid metadata stored using different raid algorithms | |
CN108399134A (zh) | 存储装置及存储装置的操作方法 | |
CN111433746A (zh) | 使用故障存储设备的重建助手 | |
US10303560B2 (en) | Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss | |
CN109344094B (zh) | 地址映射关系反馈方法、装置、设备及可读存储介质 | |
CN103534688B (zh) | 数据恢复方法、存储设备和存储系统 | |
KR20170092537A (ko) | 다수의 스토리지 디바이스에 걸친 원자 기입 동작의 수행 | |
CN115495025B (zh) | 一种管理异常存储块的方法和装置 | |
CN113076220B (zh) | 数据处理方法、装置、电子设备及计算机可读介质 | |
CN115098046B (zh) | 磁盘阵列初始化方法、系统、电子设备及存储介质 | |
US11886705B2 (en) | System and method for using free space to improve erasure code locality | |
CN110413454B (zh) | 基于存储阵列的数据重建方法、装置及存储介质 | |
CN113391947B (zh) | Ssd raid条带掉电快速恢复方法、装置、计算机设备及存储介质 | |
US8019953B2 (en) | Method for providing atomicity for host write input/outputs (I/Os) in a continuous data protection (CDP)-enabled volume using intent log | |
US20210349793A1 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
CN111177143A (zh) | 键值数据存储方法、装置、存储介质与电子设备 | |
CN114968668A (zh) | 数据处理方法、装置、数据接入端及存储介质 | |
CN112540731A (zh) | 数据的追加写方法、装置、设备、介质和程序产品 | |
CN106970937B (zh) | 一种基于本地缓存快速建立索引的方法及系统 | |
CN115657960A (zh) | 一种磁盘阵列初始化方法、装置、设备及可读存储介质 |
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 |