CN113419684B - 一种数据处理方法、装置、设备及可读存储介质 - Google Patents
一种数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN113419684B CN113419684B CN202110779968.9A CN202110779968A CN113419684B CN 113419684 B CN113419684 B CN 113419684B CN 202110779968 A CN202110779968 A CN 202110779968A CN 113419684 B CN113419684 B CN 113419684B
- Authority
- CN
- China
- Prior art keywords
- data
- nodes
- check
- memory
- target
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 72
- 239000007787 solid Substances 0.000 claims abstract description 70
- 238000000034 method Methods 0.000 claims abstract description 56
- 238000004590 computer program Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 12
- 238000013507 mapping Methods 0.000 claims description 11
- 239000011159 matrix material Substances 0.000 claims description 7
- 230000009471 action Effects 0.000 claims description 5
- 239000013589 supplement Substances 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims description 4
- 238000012795 verification Methods 0.000 abstract description 9
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 7
- 238000011084 recovery Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 101100072644 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) INO2 gene Proteins 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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
-
- 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
-
- 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
- G06F3/064—Management of blocks
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本申请公开了一种数据处理方法、装置、设备及可读存储介质。本申请针对固态硬盘使用EC算法进行数据可靠性保护,由于EC算法中的校验数据块的个数m可配置,故本申请可容忍盘内更多DIE故障,不易丢失数据,具有足够的灵活度,适用于保护大容量存储盘。同时,本申请按照当前可用的数据块组中的n个用户数据块和m个校验数据块的排列顺序使数据对应落盘,能够保障校验数据在盘内的随机性,也就是:可以使盘内各个DIE中都有可能存储校验数据,从而进一步保护数据不丢失。相应地,本申请提供的一种数据处理装置、设备及可读存储介质,也同样具有上述技术效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种数据处理方法、装置、设备及可读存储介质。
背景技术
目前,常用的数据可靠性保护方法最多只能容忍存储盘内有2个DIE故障,有更多DIE故障时会导致数据无法恢复,容易丢数据。常用的数据可靠性保护方法如:异或算法、RAID(Redundant Arrays of Independent Disks,磁盘阵列)5、RAID6等。其中,异或算法和RAID5仅能容忍盘内有1个DIE故障,RAID6仅能容忍盘内有2个DIE故障。其中,DIE也称为LUN,是nand flash里的技术术语,DIE/LUN是接收和执行闪存命令的基本单元。
而当前随着盘存储容量的增大,盘内DIE的个数越来越多,导致出现故障的DIE的概率也随之增大。一旦出现1个或2个DIE故障,就需要进行数据恢复,会耗费大量的存储算力。可见,现有的数据可靠性保护方法不够灵活,在用于保护大容量存储盘时,容易导致数据丢失,且容易频繁执行的数据恢复流程会耗费大量存储算力。
因此,如何针对大容量存储盘进行数据可靠性保护,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据处理方法、装置、设备及可读存储介质,以针对大容量存储盘进行数据可靠性保护。其具体方案如下:
第一方面,本申请提供了一种数据处理方法,应用于固态硬盘,包括:
接收主机发送的目标数据,并将所述目标数据写入内存;
若所述目标数据在所述内存中占用n个内存节点,则将所述n个内存节点确定为n个数据节点;
利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据后,将所述m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中;
确定当前可用的数据块组,并查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序;
按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表;
基于所述链表,将所述n个数据节点中的数据对应写入所述n个用户数据块,将所述m个校验节点中的数据对应写入所述m个校验数据块,以存储所述目标数据。
优选地,所述利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据,包括:
向所述内存申请所述m个内存节点;
将所述n个数据节点和所述m个内存节点传输至所述EC算法引擎,以使所述EC算法引擎基于所述n个数据节点计算所述校验数据,并将所述校验数据写入所述m个内存节点;
或
将所述n个数据节点传输至所述EC算法引擎,以使所述EC算法引擎基于所述n个数据节点计算所述校验数据,并向所述内存申请所述m个内存节点后,将所述校验数据写入所述m个内存节点。
优选地,所述按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表,包括:
将所述m个校验节点排列在所述n个数据节点的尾部,以得到所述链表。
优选地,所述存储所述目标数据之后,还包括:
更新L2P映射表,并释放所述n个数据节点和所述m个校验节点。
优选地,还包括:
若所述链表中的任一个节点中的数据写入失败,则执行所述确定当前可用的数据块组的步骤。
优选地,所述确定当前可用的数据块组,包括:
若当前没有可用的数据块组,则计算n与m之和,得到目标值;
若所述目标值等于当前固态硬盘中的DIE个数,则在当前固态硬盘的每个DIE中选择一个数据块;或若所述目标值小于当前固态硬盘中的DIE个数,则在当前固态硬盘中选择所述目标值个DIE,并在所选择的每个DIE中选择一个数据块;
在所述目标值个数据块中标记n个用户数据块和m个校验数据块,并确定n个用户数据块和m个校验数据块的排列顺序,以得到当前可用的数据块组。
优选地,所述在所述目标值个数据块中标记n个用户数据块和m个校验数据块,包括:
在所述目标值个数据块中随机选择m个数据块标记为校验数据块,剩余n个数据块标记为用户数据块。
优选地,所述在所述目标值个数据块中标记n个用户数据块和m个校验数据块,包括:
按照各个数据块所属DIE的标识信息随机排列所述目标值个数据块,得到目标序列;
将所述目标序列中连续的m个数据块标记为校验数据块,剩余n个数据块标记为所述用户数据块。
优选地,还包括:
若当前有可用的数据块组,则执行所述查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序的步骤。
优选地,还包括:
若所述目标数据在所述内存中占用小于n个内存节点,则等待接收所述主机发送的新数据,以用所述新数据补充所述目标数据,使所述目标数据在所述内存中占用n个内存节点。
优选地,还包括:
若等待所述新数据超时,则用全零数据补充所述目标数据,以使所述目标数据在所述内存中占用n个内存节点,并执行所述将所述n个内存节点确定为n个数据节点的步骤。
优选地,当前固态硬盘的EC属性的配置过程,包括:
接收主机发送的配置EC属性的命令;
解析所述命令得到目标值和m;所述目标值为:n与m之和;
若所述目标值不大于当前固态硬盘中的DIE个数,则将所述目标值与m的差值记为n;
将n和m传输至所述EC算法引擎,以使所述EC算法引擎根据n和m确定编码矩阵,以配置当前固态硬盘的EC属性。
优选地,还包括:
若所述目标值大于当前固态硬盘中的DIE个数,则返回EC属性配置失败的通知消息。
优选地,还包括:
若首次读取所述目标数据失败,则查询所述数据块组;
从所述数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合;
读取所述可恢复组合包括的各个数据块中的数据,将所读取的数据传输至所述EC算法引擎,以使所述EC算法对所读取的数据进行解码,得到解码结果;
校验所述解码结果,若校验通过,则基于所述解码结果读取所述目标数据;否则,执行从所述数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合的步骤;
若从所述数据块组中无法选择出不发生重复的可恢复组合,则返回所述目标数据读取失败的通知消息。
第二方面,本申请提供了一种数据处理装置,应用于固态硬盘,包括:
缓存模块,用于接收主机发送的目标数据,并将所述目标数据写入内存;
数据节点确定模块,用于若所述目标数据在所述内存中占用n个内存节点,则将所述n个内存节点确定为n个数据节点;
校验节点确定模块,用于利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据后,将所述m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中;
数据块组查询模块,用于确定当前可用的数据块组,并查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序;
排列模块,用于按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表;
存储模块,用于基于所述链表,将所述n个数据节点中的数据对应写入所述n个用户数据块,将所述m个校验节点中的数据对应写入所述m个校验数据块,以存储所述目标数据。
第三方面,本申请提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现前述公开的数据处理方法。
第四方面,本申请提供了一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的数据处理方法。
通过以上方案可知,本申请提供了一种数据处理方法,应用于固态硬盘,包括:接收主机发送的目标数据,并将所述目标数据写入内存;若所述目标数据在所述内存中占用n个内存节点,则将所述n个内存节点确定为n个数据节点;利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据后,将所述m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中;确定当前可用的数据块组,并查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序;按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表;基于所述链表,将所述n个数据节点中的数据对应写入所述n个用户数据块,将所述m个校验节点中的数据对应写入所述m个校验数据块,以存储所述目标数据。
可见,本申请针对固态硬盘使用EC算法进行数据可靠性保护,由于EC算法中的校验数据块个数m可配置,故本申请可容忍盘内1个、2个、3个、甚至更多DIE故障,不易丢数据,具有足够的灵活度,适用于保护大容量存储盘。同时,本申请按照当前可用的数据块组中的n个用户数据块和m个校验数据块的排列顺序使数据对应落盘,能够保障校验数据在盘内的随机性,也就是:可以使盘内各个DIE中都有可能存储校验数据,从而进一步保护数据不丢失。
相应地,本申请提供的一种数据处理装置、设备及可读存储介质,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据处理方法流程图;
图2为本申请公开的一种固态硬盘的组成结构示意图;
图3为本申请公开的一种数据处理装置示意图;
图4为本申请公开的一种电子设备示意图;
图5为本申请公开的一种固态硬盘的EC属性配置流程图;
图6为本申请公开的一种block group示意图;
图7为将图6所示的block group中各个数据块随机打乱后的block group示意图;
图8为本申请公开的一种链表示意图;
图9为本申请公开的一种写流程图;
图10为本申请公开的一种读流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,现有的数据可靠性保护方法不够灵活,在用于保护大容量存储盘时,容易导致数据丢失,且容易频繁执行的数据恢复流程会耗费大量存储算力。为此,本申请提供了一种数据处理方案,能够针对大容量存储盘进行数据可靠性保护.
参见图1所示,本申请实施例公开了一种数据处理方法,应用于固态硬盘,包括:
S101、接收主机发送的目标数据,并将目标数据写入内存。
通常情况下,内存由多个内存节点组成,内存节点的大小是固态硬盘(SolidState Disk,SSD)要求写数据的最小单位。因此将目标数据写入内存时,按照内存节点的大小进行写入。内存节点的大小即一个页(page)的大小,
S102、若目标数据在内存中占用n个内存节点,则将n个内存节点确定为n个数据节点。
S103、利用EC算法引擎计算目标数据的校验数据,利用m个内存节点存储校验数据后,将m个内存节点确定为m个校验节点。
其中,n和m的取值预设于当前固态硬盘的EC属性中。
其中,EC(Erasure Code)算法是一种较为灵活的可配置编解码算法,可以根据不同的业务场景设置校验数据块的个数,并据此配置相应的编码矩阵。在写数据的流程中,编码矩阵乘以数据向量完成编码。在读遇到错误的时候,通过对编码矩阵求逆,乘以有效数据和校验数据组成的向量,即可得到原始数据,完成数据恢复。
在本实施例中,用于存储主机所发送数据的内存节点被称为数据节点,用于存储校验数据的内存节点被称为校验节点。也就是:数据节点和校验节点都是内存中的内存节点,只是将存有主机所发送数据的内存节点称为数据节点,而将存有校验数据的内存节点称为校验节点。
S104、确定当前可用的数据块组,并查询数据块组中的n个用户数据块和m个校验数据块的排列顺序。
需要说明的是,一个数据块组包括n+m个数据块,即:n个用户数据块和m个校验数据块。这n+m个数据块属于固态硬盘中的不同DIE。
固态硬盘的组成结构可参见图2。一个固态硬盘可以包括多个DIE,如图2中的DIE0~DIEp;每个DIE包括多个数据块(block),如:属于DIE0的block0~blockq;每个数据块包括多个page。
结合图2所示,可以选每个DIE中的block0组成一个数据块组,该数据块组包括:DIE0-block0、DIE1-block0、……、DIEp-block0,共p+1个数据块。当然,也可以从p+1个DIE中任选小于p+1个DIE后,再在所选择的每个DIE中选择一个数据块,以组成数据块组。可见,n与m之和不大于盘内DIE的个数,即n+m≤p+1。
至于数据块组中哪几个数据块作为用户数据块,哪几个数据块作为校验数据块,这取决于n和m的取值,以及校验数据块的位置。用户数据块用于存储主机所发送数据,校验数据块用于存储校验数据。
其中,n和m的取值预设于当前固态硬盘的EC属性中,而校验数据块的位置要求尽可能随机,以使各个DIE都有可能存储校验数据。为了使校验数据块的位置尽可能随机,可以在“DIE0-block0、DIE1-block0、……、DIEp-block0”中随机选择m个数据块作为校验数据块,选择后,将校验数据块的位置作为元数据进行记录。
通常情况下,为了保证校验数据块位置的随机性,又便于确定其位置,可以先随机排列一个数据块组中的所有数据块获得相应序列后,规定序列中的后m个数据块、或序列中的前m个数据块,或序列中间连续的m个数据块作为校验数据块。这样可实现:在不同数据块组内,校验数据块的位置总是一样,但实际上不同数据块组内的校验数据块分布于不同DIE中。
S105、按照排列顺序将n个数据节点和m个校验节点排列为链表。
S106、基于链表,将n个数据节点中的数据对应写入n个用户数据块,将m个校验节点中的数据对应写入m个校验数据块,以存储目标数据。
在本实施例中,按照排列顺序将n个数据节点和m个校验节点排列为链表,是为了使n个数据节点和m个校验节点,与当前可用的数据块组中的n个用户数据块和m个校验数据块一一对齐,以便将数据落盘。
例如:在当前可用的数据块组中,m个校验数据块排列在n个用户数据块的尾部,那么在链表中,也使m个校验节点排列在n个数据节点的尾部。这样一来,m个校验节点与m个校验数据块一一对应,而n个数据节点与n个用户数据块一一对应,便于将数据从内存落盘。也即:将链表中各个节点中的数据写入相应数据块中。
在一种具体实施方式中,按照排列顺序将n个数据节点和m个校验节点排列为链表,包括:将m个校验节点排列在n个数据节点的尾部,以得到链表。
可见,本实施例针对固态硬盘使用EC算法进行数据可靠性保护,由于EC算法中的校验数据块个数m可配置,故本申请可容忍盘内1个、2个、3个、甚至更多DIE故障,不易丢失数据,具有足够的灵活度,适用于保护大容量存储盘。同时,本实施例按照当前可用的数据块组中的n个用户数据块和m个校验数据块的排列顺序使数据对应落盘,能够保障校验数据在盘内的随机性,也就是:可以使盘内各个DIE中都有可能存储校验数据,从而进一步保护数据不丢失。
基于上述实施例,需要说明的是,存储校验数据的m个内存节点需要额外向内存申请,该申请动作可由固态硬盘执行,也可由EC算法引擎执行。
因此在一种具体实施方式中,利用EC算法引擎计算目标数据的校验数据,利用m个内存节点存储校验数据,包括:
固态硬盘向内存申请m个内存节点,固态硬盘将n个数据节点和m个内存节点传输至EC算法引擎,以使EC算法引擎基于n个数据节点计算校验数据,EC算法引擎将校验数据写入m个内存节点;
或
固态硬盘将n个数据节点传输至EC算法引擎,以使EC算法引擎基于n个数据节点计算校验数据,EC算法引擎向内存申请m个内存节点后,EC算法引擎将校验数据写入m个内存节点。
基于上述实施例,需要说明的是,存储目标数据之后,还包括:更新L2P映射表,并释放n个数据节点和m个校验节点,以释放固态硬盘的内存空间。
其中,L2P映射表为记录逻辑地址(Logical Block Address)与物理地址(PhysicsBlock Address)映射关系的表。具体可参照现有相关技术。
基于上述实施例,需要说明的是,若链表中的任一个节点(即:n个数据节点和m个校验节点中的任一个节点)中的数据写入失败,则执行确定当前可用的数据块组,并查询数据块组中的n个用户数据块和m个校验数据块的排列顺序;按照排列顺序将n个数据节点和m个校验节点排列为链表;基于链表,将n个数据节点中的数据对应写入n个用户数据块,将m个校验节点中的数据对应写入m个校验数据块,以存储目标数据的步骤。也就是:重新找一个可用的数据块组完成目标数据的写入。原来用于写入目标数据的数据块组中的各个数据块,可利用固态硬盘的垃圾回收机制进行回收。
其中,重新找一个可用的数据块组包括如下两种情况:
情况一:当前已有可用的数据块组可以直接用,此时可直接选择出当前可用的数据块组,并查询数据块组中的n个用户数据块和m个校验数据块的排列顺序;按照排列顺序将n个数据节点和m个校验节点排列为链表;基于链表,将n个数据节点中的数据对应写入n个用户数据块,将m个校验节点中的数据对应写入m个校验数据块,以存储目标数据。
情况二:当前没有可用的数据块组可以直接用,需要构建新的数据块组。那么构建新的数据块组的过程包括:
计算n与m之和,得到目标值;
若目标值等于当前固态硬盘中的DIE个数,则在当前固态硬盘的每个DIE中选择一个数据块;或若目标值小于当前固态硬盘中的DIE个数,则在当前固态硬盘中选择目标值个DIE,并在所选择的每个DIE中选择一个数据块;
在目标值个数据块中标记n个用户数据块和m个校验数据块,并确定n个用户数据块和m个校验数据块的排列顺序,以得到当前可用的数据块组。
在一种具体实施方式中,在目标值个数据块中标记n个用户数据块和m个校验数据块,包括:在目标值个数据块中随机选择m个数据块标记为校验数据块,剩余n个数据块标记为用户数据块。
在一种具体实施方式中,在目标值个数据块中标记n个用户数据块和m个校验数据块,包括:按照各个数据块所属DIE的标识信息随机排列目标值个数据块,得到目标序列;将目标序列中连续的m个数据块标记为校验数据块,剩余n个数据块标记为用户数据块。
基于上述实施例,需要说明的是,若目标数据在内存中占用小于n个内存节点,则等待接收主机发送的新数据,以用新数据补充目标数据,使目标数据在内存中占用n个内存节点。若用新数据补充目标数据后目标数据在内存中占用了超过n个内存节点,则先针对前n个内存节点执行S102-S106,对于剩下的内存节点继续等待主机发送的新数据进行补充。也即:只要凑够n个存有数据的内存节点,就执行S102-S106。
其中,若等待新数据超时,则用全零数据补充目标数据,以使目标数据在内存中占用n个内存节点,并执行将n个内存节点确定为n个数据节点;利用EC算法引擎计算目标数据的校验数据,利用m个内存节点存储校验数据后,将m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中;确定当前可用的数据块组,并查询数据块组中的n个用户数据块和m个校验数据块的排列顺序;按照排列顺序将n个数据节点和m个校验节点排列为链表;基于链表,将n个数据节点中的数据对应写入n个用户数据块,将m个校验节点中的数据对应写入m个校验数据块,以存储目标数据的步骤。
需要说明的是,全零数据即无意义的数据,这些全零数据也参与计算校验数据,但其在实际落盘时L2P映射表中不记录对应的物理地址,故不会有读操作命中。
基于上述实施例,需要说明的是,当前固态硬盘的EC属性的配置过程,包括:
接收主机发送的配置EC属性的命令;
解析命令得到目标值和m;目标值为:n与m之和;
若目标值不大于当前固态硬盘中的DIE个数,则将目标值与m的差值记为n;将n和m传输至EC算法引擎,以使EC算法引擎根据n和m确定编码矩阵,以配置当前固态硬盘的EC属性。
若目标值大于当前固态硬盘中的DIE个数,则返回EC属性配置失败的通知消息。
可见,目标值和m可基于盘内的DIE个数进行灵活配置,也即m可取值1、2、3(优选)、4等,故可容忍盘内1个、2个、3个、甚至更多DIE故障,不易丢失数据,具有足够的灵活度,适用于保护大容量存储盘。
基于上述实施例,需要说明的是,还包括:
若首次读取目标数据失败,则表明存储目标数据的数据块组中有几个数据块故障,则查询该数据块组;从该数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合;读取可恢复组合包括的各个数据块中的数据,将所读取的数据传输至EC算法引擎,以使EC算法对所读取的数据进行解码,得到解码结果;校验解码结果,若校验通过,则基于解码结果读取目标数据,并将恢复所得数据返回给发起读请求的应用;否则,执行从数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合的步骤;若从数据块组中无法选择出不发生重复的可恢复组合,则返回目标数据读取失败的通知消息。
可见,只要一个数据块组中有任意n个能够被正常读取数据的数据块,就可以恢复要读取的数据,从而保护数据不丢失。
下面对本申请实施例提供的一种数据处理装置进行介绍,下文描述的一种数据处理装置与上文描述的一种数据处理方法可以相互参照。
参见图3所示,本申请实施例公开了一种数据处理装置,应用于固态硬盘,包括:
缓存模块301,用于接收主机发送的目标数据,并将目标数据写入内存;
数据节点确定模块302,用于若目标数据在内存中占用n个内存节点,则将n个内存节点确定为n个数据节点;
校验节点确定模块303,用于利用EC算法引擎计算目标数据的校验数据,利用m个内存节点存储校验数据后,将m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中;
数据块组查询模块304,用于确定当前可用的数据块组,并查询数据块组中的n个用户数据块和m个校验数据块的排列顺序;
排列模块305,用于按照排列顺序将n个数据节点和m个校验节点排列为链表;
存储模块306,用于基于链表,将n个数据节点中的数据对应写入n个用户数据块,将m个校验节点中的数据对应写入m个校验数据块,以存储目标数据。
在一种具体实施方式中,校验节点确定模块具体用于:
向内存申请m个内存节点;
将n个数据节点和m个内存节点传输至EC算法引擎,以使EC算法引擎基于n个数据节点计算校验数据,并将校验数据写入m个内存节点;
或
将n个数据节点传输至EC算法引擎,以使EC算法引擎基于n个数据节点计算校验数据,并向内存申请m个内存节点后,将校验数据写入m个内存节点。
在一种具体实施方式中,排列模块具体用于:
将m个校验节点排列在n个数据节点的尾部,以得到链表。
在一种具体实施方式中,还包括:
执行模块,用于更新L2P映射表,并释放n个数据节点和m个校验节点。
在一种具体实施方式中,还包括:
重选模块,用于若链表中的任一个节点中的数据写入失败,则执行确定当前可用的数据块组的步骤。
在一种具体实施方式中,数据块组查询模块包括:构建单元;
构建单元包括:
计算子单元,用于若当前没有可用的数据块组,则计算n与m之和,得到目标值;
选择子单元,用于若目标值等于当前固态硬盘中的DIE个数,则在当前固态硬盘的每个DIE中选择一个数据块;或若目标值小于当前固态硬盘中的DIE个数,则在当前固态硬盘中选择目标值个DIE,并在所选择的每个DIE中选择一个数据块;
标记子单元,用于在目标值个数据块中标记n个用户数据块和m个校验数据块,并确定n个用户数据块和m个校验数据块的排列顺序,以得到当前可用的数据块组。
在一种具体实施方式中,标记子单元具体用于:
在目标值个数据块中随机选择m个数据块标记为校验数据块,剩余n个数据块标记为用户数据块。
在一种具体实施方式中,标记子单元具体用于:
按照各个数据块所属DIE的标识信息随机排列目标值个数据块,得到目标序列;
将目标序列中连续的m个数据块标记为校验数据块,剩余n个数据块标记为用户数据块。
在一种具体实施方式中,数据块组查询模块包括:选择单元;
选择单元具体用于:
若当前有可用的数据块组,则执行查询数据块组中的n个用户数据块和m个校验数据块的排列顺序的步骤。
在一种具体实施方式中,还包括:
等待模块,用于若目标数据在内存中占用小于n个内存节点,则等待接收主机发送的新数据,以用新数据补充目标数据,使目标数据在内存中占用n个内存节点。
在一种具体实施方式中,还包括:
等待超时模块,用于若等待新数据超时,则用全零数据补充目标数据,以使目标数据在内存中占用n个内存节点,并执行将所述n个内存节点确定为n个数据节点的步骤。
在一种具体实施方式中,还包括配置模块,用于配置当前固态硬盘的EC属性,配置模块包括:
接收单元,用于接收主机发送的配置EC属性的命令;
解析单元,用于解析命令得到目标值和m;目标值为:n与m之和;
计算单元,用于若目标值不大于当前固态硬盘中的DIE个数,则将目标值与m的差值记为n;
配置单元,用于将n和m传输至EC算法引擎,以使EC算法引擎根据n和m确定编码矩阵,以配置当前固态硬盘的EC属性。
在一种具体实施方式中,配置模块还包括:
通知单元,用于若目标值大于当前固态硬盘中的DIE个数,则返回EC属性配置失败的通知消息。
在一种具体实施方式中,还包括读取模块,具体用于:
若首次读取目标数据失败,则查询数据块组;
从数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合;
读取可恢复组合包括的各个数据块中的数据,将所读取的数据传输至EC算法引擎,以使EC算法对所读取的数据进行解码,得到解码结果;
校验解码结果,若校验通过,则基于解码结果读取目标数据;否则,执行从数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合的步骤;
若从数据块组中无法选择出不发生重复的可恢复组合,则返回目标数据读取失败的通知消息。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种数据处理装置,该装置可容忍盘内1个、2个、3个、甚至更多DIE故障,不易丢数据,具有足够的灵活度,适用于保护大容量存储盘。同时,能够保障校验数据在盘内的随机性,也就是:可以使盘内各个DIE中都有可能存储校验数据,从而进一步保护数据不丢失。
下面对本申请实施例提供的一种电子设备进行介绍,下文描述的一种电子设备与上文描述的一种数据处理方法及装置可以相互参照。
参见图4所示,本申请实施例公开了一种电子设备,包括:
存储器401,用于保存计算机程序;
处理器402,用于执行所述计算机程序,以实现上述任意实施例公开的方法。
下面对本申请实施例提供的一种可读存储介质进行介绍,下文描述的一种可读存储介质与上文描述的一种数据处理方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的数据处理方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
按照本申请提供的方案,可设计实现如下实施例。
一、配置固态硬盘的EC属性。
基于固态硬盘创建namespace或者在namespace未存有数据的情况下进行EC属性的配置和修改。namespace(中文:名字空间,别名:命名空间、名称空间)是表示着一个标识符可见的存储空间范围。一个固态硬盘可以创建多个namespace。不同namespace的EC属性可不同。
一般地,若设置1个校验块,则EC属性记为EC-1;同理,若设置3个校验块,则EC属性记为EC-3,其他以此类推。分条大小(一个数据块组中的数据块总数目)可配置为32或其他,分条大小只需不大于固态硬盘中的DIE总数即可。
请参见图5,主机通过VU命令配置EC属性。主机通过下VU命令修改或指定一个namespace的EC属性。VU命令一般被认为是:CLI(CLI是linux系统里面标准的一套命令行:Command Line Interface)。
在固态硬盘接收到配置EC属性的命令之后,首先会做参数的合法性检查。即:判断盘内DIE的数量是否大于等于block group大小(即:一个数据块组中的数据块总数目,也就是:命令所指定的n+m之和),如果盘内DIE数量小于block group大小,则返回参数配置失败给主机。如果盘内DIE数量大于等于block group大小,则判断命令所指定的冗余列的数量(即m的取值)是否满足要求(一般情况下m取值优选为3)。可见,参数的合法性检查即:检查命令所指定的m取值(即图5中的EC保护级别),以及block group大小是否符合预设要求。
参数检查失败,则返回参数配置失败给主机,并设置该namespace不能承接IO。参数检查成功之后,则设置EC算法引擎的冗余列数生成编码矩阵,然后根据命令所指定的参数设置block group的大小及组成结构、数据块顺序等,就可以开始进行读写。
其中,如果盘内DIE数量小于block group大小,则不符合block group里面所有的block都分布在不同的DIE上这条规则。在这种场景下,一个block group可能从某一个die上取出两个block,那么这一个DIE失效了就会影响两个block的数据,容易丢失数据,与EC算法的数据保护原则相悖。因此盘内DIE数量需要大于等于block group大小。
二、设置block group。
参见图2所示,假设p≥32,根据block group里面所有的block都分布在不同的DIE上这条规则选取其中32(n+m=32)个DIE上的block组成一个block group。其中,n表示用于存储用户数据的block的数量,m表示用于存储校验数据的block的数量。
如果设置冗余列数量为1(即:m=1),那么n=31,EC属性记为EC-1。如果设置冗余列数量为2(即:m=2),那么n=30,EC属性记为EC-2。m的值设置得越高,一个block group里面能够允许同时坏的block个数就越多,数据就越不容易丢。但是也有一个坏处,就是在一个block group内,存储的校验数据量大于用户数据量,导致硬盘空间利用率降低。硬盘空间利用率=n/(m+n)。
假设从图2所示的DIE0~DIEp中选择DIE0~DIE31共32个DIE,从这32个DIE的每个DIE上都选择一个block。那么可得到如图6所示的block group。在图6中,D0B0表示:DIE0上的block0,D1B1表示:DIE1上的block1,其他以此类推。
为了系统性能和可靠性的考量,使一个block group里面的m个校验block分布在不同的DIE上面,这样做会带来两个好处:
1、每个DIE上都存储用户数据和校验数据,在读场景中各个DIE都有可能被读到,不至于某些DIE一直处于空闲状态;
2、各个DIE被读的次数会趋于一个平均值,那么所有的block的使用寿命会基本一致。
以EC-2为例,取一个block group里面任意两个block存储校验数据,比如取图6中的D0B0和D4B8。此时需要额外的元数据记录这个block group里面哪些block是校验block,这样会导致元数据过多不便管理。
为了更好地管理校验数据块的分布,规定:在一个block group里面最后m个block用于存放校验数据。例如:当采用EC-2时,那么在一个block group里面的最后两个block就是EC-2的校验数据块。
但为了保证不同block group里的校验数据块分布在不同DIE上,将block group里面的所有block的顺序随机打散。经过随机打散之后,不同block group里的最后m个校验数据块就会随机分布在各个DIE,从而提高盘的性能。
将图6所示的block group中的各个block随机打散后,获得如图7所示blockgroup,并规定图7所示block group的后m个block用于存放校验数据。假设针对图7所示block group而言,EC属性为EC-2,n+m=32,那么前30个block存储用户数据,后2个block存储校验数据。
三、写数据过程。
在SSD系统中约定:cache每次下发写请求的size固定为一个wordline大小(即一个内存节点的大小)。将每个写请求所占用的内存节点以链表的形式组织在一起,当此链表的节点个数达到n的时候,不再为此链表添加新的节点。
如果链表的节点个数没有达到n个,则继续等待后续IO的到来;如果超过10s的时间,还没有凑齐n个,则申请一定的全零数据节点凑齐n个。
如图8所示,链表的节点个数达到n之后,在这个链表后面加上m个内存节点,然后将此链表上的所有节点传入EC算法引擎,让EC算法引擎计算得到校验数据,并将校验数据写入m个内存节点。m个内存节点即图8中的P0-Pm-1。在图8中,Date0-Daten-1是从cache接收到的待写入数据占用的内存节点,P0-Pm-1则是Date0-Daten-1中所有数据经过EC算法编码后的校验数据。
获得如图8所示的链表后,将链表中的每个节点上的数据写入当前可用的blockgroup里面的每个block,由此完成写操作。其中,Date0-Daten-1里的数据写入block group里的用户数据块,P0-Pm-1里的数据写入block group里的校验数据块。
若当前没有可用的block group或链表中的任一个节点上的数据写入失败,则构建新的block group,构建方法参照上述“设置block group”的相关介绍。
只有当链表上所有节点的数据都完整的写入之后,更新L2P映射表,然后释放对应的内存节点。即:释放图8所示的链表中的每个节点。其中,用于存储校验数据的内存节点是写流程额外申请的,因此需要增加释放该内存节点的步骤。而用于存储用户数据的内存节点会在回调cache时自动删除其中的脏数据节点,因此无需额外增加释放该内存节点的步骤。
其中,L2P映射表里面对应的物理地址组成如下:
其中,bgId表示block group的Id,dieId和blockId表示这个block group里面包含的block所在的真实的die的Id和block的Id,pageId表示这个数据位于此block的Id上面page号,auOff表示数据落在page里面的哪个au上面。一个page里面有多个au。
每个LBA写完成之后,根据上述的physicalAddr_t更新LBA对应的物理地址,以形成L2P映射表。
根据上述,写IO的流程图请参见图9。在写IO流程中,当接收到cache的数据之后,判断是否需要新分配block group,判断的依据是查询当前是否有用于写用户数据的可用block group。因此当系统的一个block group被写满了之后才需要分配一个新的blockgroup。分配block group的规则参照上述“设置block group”的相关介绍。
若有可用的block group时,即可获知应该写数据到哪个block group上,之后凑好链表,将凑好的链表中的各个节点上的数据依次写到这个block group的各个数据块。
其中,链表中的一个节点上的数据写入一个数据块里的一个page。当该链表的各个节点写入完成后,下一个链表写入该block group的相应数据块的下一个page。例如:block group里有2个数据块,这两个数据块都包括10个page,那么首次使用block group时,写入这两个数据块的第一个page,下一次使用block group时,写入这两个数据块的第二个page,即:page的标识递增一。
四、读数据过程。
由于在一个block group里面只有n个block存储的是用户数据,因此在读的场景中在一个block group里面只有n个block工作(m个校验数据block在没有出现读失败的场景下不需要读)。
请参见图10,读数据是写数据过程的逆过程。查询对应的L2P映射表就能获取到要读的数据属于对应block group里面对应block上面的对应位置,然后对NAND FLASH下发读操作,如果NAND无异常,则读上来的数据直接返回给调用者。
如果在读NAND的过程中读失败,此时需要确定要读数据所属的block group里面的n个block(包括校验列),基于这n个block还原得到正确的用户数据。
若读失败,则将读失败的block标记为坏块,并查询该块所属的block group里的所有block,从该block group里选n个block(不包括读失败的block)。
如果该block group里面不能够选取到n个block,则直接返回前端读失败,EC恢复失败,流程结束。
如果该block group里面能够选取到n个block,则读取这n个block里的数据。如果这n个block全部读成功,则将所有读成功的数据发送到EC算法引擎做解码;否则再次选取另外n个block进行重读。
等待EC算法引擎解码完成之后,将得到的数据做一次数据一致性校验,如果校验成功,则将返回值设置为ok,返回给前端,EC恢复成功,流程结束。如果校验失败,则再次选取另外n个block进行重读。
如果block group里面不再能选取n个block进行重读,则将返回值设置为err,返回给前端,EC恢复失败,流程结束。
可见,本实施例可根据用户的需求配置不同的EC级别,能有效的针对不同用户场景灵活的提供数据可靠性保护级别,具有非常高的灵活性和可配置性;能够允许更多DIE失效,可靠性更高,能够更大程度的提高SSD的性能,以及使用寿命。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (16)
1.一种数据处理方法,其特征在于,应用于固态硬盘,包括:
接收主机发送的目标数据,并将所述目标数据写入内存;
若所述目标数据在所述内存中占用n个内存节点,则将所述n个内存节点确定为n个数据节点;
利用EC算法引擎计算所述目标数据的校验数据,若利用m个内存节点存储所述校验数据后,将所述m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中,m基于盘内的DIE个数配置;
确定当前可用的数据块组,并查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序;
按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表;
基于所述链表,将所述n个数据节点中的数据对应写入所述n个用户数据块,将所述m个校验节点中的数据对应写入所述m个校验数据块,以存储所述目标数据;
其中,所述利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据,包括:
当内存申请动作由所述固态硬盘执行时,向所述内存申请所述m个内存节点;将所述n个数据节点和所述m个内存节点传输至所述EC算法引擎,以使所述EC算法引擎基于所述n个数据节点计算所述校验数据,并将所述校验数据写入所述m个内存节点。
2.根据权利要求1所述的方法,其特征在于,所述利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据,包括:
当内存申请动作由所述EC算法引擎执行时,将所述n个数据节点传输至所述EC算法引擎,以使所述EC算法引擎基于所述n个数据节点计算所述校验数据,并向所述内存申请所述m个内存节点后,将所述校验数据写入所述m个内存节点;
其中,内存申请动作由所述固态硬盘或所述EC算法引擎执行。
3.根据权利要求1所述的方法,其特征在于,所述按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表,包括:
将所述m个校验节点排列在所述n个数据节点的尾部,以得到所述链表。
4.根据权利要求1所述的方法,其特征在于,所述存储所述目标数据之后,还包括:
更新L2P映射表,并释放所述n个数据节点和所述m个校验节点。
5.根据权利要求1至4任一项所述的方法,其特征在于,还包括:
若所述链表中的任一个节点中的数据写入失败,则执行所述确定当前可用的数据块组的步骤。
6.根据权利要求5所述的方法,其特征在于,所述确定当前可用的数据块组的步骤,包括:
若当前没有可用的数据块组,则计算n与m之和,得到目标值;
若所述目标值等于当前固态硬盘中的DIE个数,则在当前固态硬盘的每个DIE中选择一个数据块;或若所述目标值小于当前固态硬盘中的DIE个数,则在当前固态硬盘中选择所述目标值个DIE,并在所选择的每个DIE中选择一个数据块;
在所述目标值个数据块中标记n个用户数据块和m个校验数据块,并确定n个用户数据块和m个校验数据块的排列顺序,以得到当前可用的数据块组。
7.根据权利要求6所述的方法,其特征在于,所述在所述目标值个数据块中标记n个用户数据块和m个校验数据块,包括:
在所述目标值个数据块中随机选择m个数据块标记为校验数据块,剩余的n个数据块则标记为用户数据块;
或者
按照各个数据块所属DIE的标识信息随机排列所述目标值个数据块,得到目标序列;
将所述目标序列中连续的m个数据块标记为校验数据块,剩余n个数据块标记为所述用户数据块。
8.根据权利要求5所述的方法,其特征在于,还包括:
若当前有可用的数据块组,则选择当前可用的数据块组后,执行所述查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序的步骤。
9.根据权利要求1至4任一项所述的方法,其特征在于,还包括:
若所述目标数据在所述内存中占用小于n个内存节点,则等待接收所述主机发送的新数据,以用所述新数据补充所述目标数据,使所述目标数据在所述内存中占用n个内存节点。
10.根据权利要求9所述的方法,其特征在于,还包括:
若等待所述新数据超时,则用全零数据补充所述目标数据,以使所述目标数据在所述内存中占用n个内存节点,并执行所述将所述n个内存节点确定为n个数据节点的步骤。
11.根据权利要求1至4任一项所述的方法,其特征在于,当前固态硬盘的EC属性的配置过程,包括:
接收主机发送的配置EC属性的命令;
解析所述命令得到目标值和m;所述目标值为:n与m之和;
若所述目标值不大于当前固态硬盘中的DIE个数,则将所述目标值与m的差值记为n;
将n和m传输至所述EC算法引擎,以使所述EC算法引擎根据n和m确定编码矩阵,以配置当前固态硬盘的EC属性。
12.根据权利要求11所述的方法,其特征在于,还包括:
若所述目标值大于当前固态硬盘中的DIE个数,则返回EC属性配置失败的通知消息。
13.根据权利要求1至4任一项所述的方法,其特征在于,还包括:
若首次读取所述目标数据失败,则查询所述数据块组;
从所述数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合;
读取所述可恢复组合包括的各个数据块中的数据,将所读取的数据传输至所述EC算法引擎,以使所述EC算法对所读取的数据进行解码,得到解码结果;
校验所述解码结果,若校验通过,则基于所述解码结果读取所述目标数据;否则,执行从所述数据块组中选择n个能够被正常读取数据的数据块,组成不发生重复的可恢复组合的步骤;
若从所述数据块组中无法选择出不发生重复的可恢复组合,则返回所述目标数据读取失败的通知消息。
14.一种数据处理装置,其特征在于,应用于固态硬盘,包括:
缓存模块,用于接收主机发送的目标数据,并将所述目标数据写入内存;
数据节点确定模块,用于若所述目标数据在所述内存中占用n个内存节点,则将所述n个内存节点确定为n个数据节点;
校验节点确定模块,用于利用EC算法引擎计算所述目标数据的校验数据,利用m个内存节点存储所述校验数据后,将所述m个内存节点确定为m个校验节点;n和m的取值预设于当前固态硬盘的EC属性中,m基于盘内的DIE个数配置;
数据块组查询模块,用于确定当前可用的数据块组,并查询所述数据块组中的n个用户数据块和m个校验数据块的排列顺序;
排列模块,用于按照所述排列顺序将所述n个数据节点和所述m个校验节点排列为链表;
存储模块,用于基于所述链表,将所述n个数据节点中的数据对应写入所述n个用户数据块,将所述m个校验节点中的数据对应写入所述m个校验数据块,以存储所述目标数据;
其中,所述校验节点确定模块具体用于:
当内存申请动作由所述固态硬盘执行时,向所述内存申请所述m个内存节点;将所述n个数据节点和所述m个内存节点传输至所述EC算法引擎,以使所述EC算法引擎基于所述n个数据节点计算所述校验数据,并将所述校验数据写入所述m个内存节点。
15.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至13任一项所述的方法。
16.一种可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至13任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110779968.9A CN113419684B (zh) | 2021-07-09 | 2021-07-09 | 一种数据处理方法、装置、设备及可读存储介质 |
PCT/CN2022/097620 WO2023279906A1 (zh) | 2021-07-09 | 2022-06-08 | 一种数据处理方法、装置、设备及可读存储介质 |
US18/407,611 US20240143188A1 (en) | 2021-07-09 | 2024-01-09 | Data processing method and apparatus, device, and readable storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110779968.9A CN113419684B (zh) | 2021-07-09 | 2021-07-09 | 一种数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113419684A CN113419684A (zh) | 2021-09-21 |
CN113419684B true CN113419684B (zh) | 2023-02-24 |
Family
ID=77721682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110779968.9A Active CN113419684B (zh) | 2021-07-09 | 2021-07-09 | 一种数据处理方法、装置、设备及可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240143188A1 (zh) |
CN (1) | CN113419684B (zh) |
WO (1) | WO2023279906A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419684B (zh) * | 2021-07-09 | 2023-02-24 | 深圳大普微电子科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
CN114297737A (zh) * | 2021-12-28 | 2022-04-08 | 深圳大普微电子科技有限公司 | 一种数据保护方法、固态硬盘控制器及固态硬盘 |
CN116644071B (zh) * | 2023-06-08 | 2024-04-05 | 中国长江三峡集团有限公司 | 一种物资编码管理方法、装置、计算机设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
CN104932953A (zh) * | 2015-06-04 | 2015-09-23 | 华为技术有限公司 | 一种数据分发方法、数据存储方法、相关装置以及系统 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN109074227A (zh) * | 2016-11-25 | 2018-12-21 | 华为技术有限公司 | 一种数据校验的方法及存储系统 |
CN110502365A (zh) * | 2019-07-11 | 2019-11-26 | 平安科技(深圳)有限公司 | 数据存储及恢复的方法、装置及计算机设备 |
CN111273862A (zh) * | 2020-01-16 | 2020-06-12 | 上海依图网络科技有限公司 | 数据存储方法及其装置、可读介质和系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9921910B2 (en) * | 2015-02-19 | 2018-03-20 | Netapp, Inc. | Virtual chunk service based data recovery in a distributed data storage system |
CN106254033B (zh) * | 2016-08-07 | 2019-07-19 | 成都信息工程大学 | 一种阵列式存储系统的编码容错方法 |
WO2019028799A1 (zh) * | 2017-08-10 | 2019-02-14 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN107908499B (zh) * | 2017-11-02 | 2021-03-05 | 华为技术有限公司 | 一种数据校验方法及装置 |
JP2021064283A (ja) * | 2019-10-16 | 2021-04-22 | 富士通株式会社 | ストレージ制御装置およびプログラム |
CN111400083B (zh) * | 2020-03-17 | 2024-02-23 | 上海七牛信息技术有限公司 | 数据存储方法及系统、存储介质 |
CN111818124B (zh) * | 2020-05-29 | 2022-09-02 | 平安科技(深圳)有限公司 | 数据存储方法、装置、电子设备及介质 |
CN113419684B (zh) * | 2021-07-09 | 2023-02-24 | 深圳大普微电子科技有限公司 | 一种数据处理方法、装置、设备及可读存储介质 |
-
2021
- 2021-07-09 CN CN202110779968.9A patent/CN113419684B/zh active Active
-
2022
- 2022-06-08 WO PCT/CN2022/097620 patent/WO2023279906A1/zh active Application Filing
-
2024
- 2024-01-09 US US18/407,611 patent/US20240143188A1/en active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984607A (zh) * | 2013-02-08 | 2014-08-13 | 华为技术有限公司 | 分布式存储的方法、装置和系统 |
CN104932953A (zh) * | 2015-06-04 | 2015-09-23 | 华为技术有限公司 | 一种数据分发方法、数据存储方法、相关装置以及系统 |
CN109074227A (zh) * | 2016-11-25 | 2018-12-21 | 华为技术有限公司 | 一种数据校验的方法及存储系统 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
CN110502365A (zh) * | 2019-07-11 | 2019-11-26 | 平安科技(深圳)有限公司 | 数据存储及恢复的方法、装置及计算机设备 |
CN111273862A (zh) * | 2020-01-16 | 2020-06-12 | 上海依图网络科技有限公司 | 数据存储方法及其装置、可读介质和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2023279906A1 (zh) | 2023-01-12 |
CN113419684A (zh) | 2021-09-21 |
US20240143188A1 (en) | 2024-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113419684B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
US11698728B2 (en) | Data updating technology | |
CN101916173B (zh) | 一种基于raid的数据读写方法及其系统 | |
CN102508733B (zh) | 一种基于磁盘阵列的数据处理方法及磁盘阵列管理器 | |
CN104813290A (zh) | Raid调查器 | |
US20220129346A1 (en) | Data processing method and apparatus in storage system, and storage system | |
CN103534688A (zh) | 数据恢复方法、存储设备和存储系统 | |
US20180210784A1 (en) | Metadata Recovery Method and Apparatus | |
CN116339644B (zh) | 一种独立磁盘冗余阵列创建方法、装置、设备及介质 | |
US20220377054A1 (en) | Data storage device data recovery using remote network storage | |
CN115562594A (zh) | 一种raid卡的构建方法、系统及相关装置 | |
CN111459399A (zh) | 一种数据写入方法、数据读取方法及装置 | |
WO2024113685A1 (zh) | 一种raid阵列的数据恢复方法及相关装置 | |
WO2020034695A1 (zh) | 数据存储方法、数据恢复方法、装置、设备及存储介质 | |
CN110442298B (zh) | 存储设备异常检测方法及装置、分布式存储系统 | |
CN115599589B (zh) | 一种数据恢复方法及相关装置 | |
CN108170375B (zh) | 一种分布式存储系统中的超限保护方法和装置 | |
WO2019037587A1 (zh) | 一种数据恢复方法及装置 | |
CN113051428B (zh) | 一种摄像机前端存储备份的方法及装置 | |
CN114610235A (zh) | 分布式存储集群、存储引擎、两副本存储方法及设备 | |
CN113805811A (zh) | 一种优化读写访问文件的方法、系统、设备和存储介质 | |
CN107122261B (zh) | 一种存储设备的数据读写方法及装置 | |
CN107229535B (zh) | 数据块的多副本存储方法、存储设备、数据读取方法 | |
CN111026720A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |