CN113424262B - 一种存储校验方法及装置 - Google Patents
一种存储校验方法及装置 Download PDFInfo
- Publication number
- CN113424262B CN113424262B CN201980091806.7A CN201980091806A CN113424262B CN 113424262 B CN113424262 B CN 113424262B CN 201980091806 A CN201980091806 A CN 201980091806A CN 113424262 B CN113424262 B CN 113424262B
- Authority
- CN
- China
- Prior art keywords
- data
- chips
- check
- ecc
- ecc check
- 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
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000012795 verification Methods 0.000 title claims abstract description 62
- 239000012634 fragment Substances 0.000 claims abstract description 19
- 238000012937 correction Methods 0.000 claims abstract description 12
- 238000005192 partition Methods 0.000 claims description 51
- 238000011084 recovery Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 230000003321 amplification Effects 0.000 description 5
- 238000003199 nucleic acid amplification method Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储校验方法及装置,用于存储和校验粒度比较小的用户数据。该方法包括:对用户数据进行错误检查和纠正ECC校验,获得ECC校验数据,用户数据包括m个分片数据,m为大于2的整数;对用户数据和ECC校验数据,进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得奇偶校验数据;将m个分片数据、ECC校验数据和奇偶校验数据存储到多个芯片上;其中,该多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据。
Description
技术领域
本申请涉及存储领域,特别涉及一种存储校验方法及装置。
背景技术
随着计算机技术的高速发展,用户数据越来越多,计算机自身携带的单个硬盘已经无法满足用户数据的存储需求,需要使用独立的存储***存储用户数据。用户数据在存储***内部的保存和传输过程中,因存储***的硬件故障、软件故障或硬盘错误等原因可能导致用户数据的损坏。现有技术中,通常会采用一些数据保护技术来提高数据存储的安全性和可靠性。例如,奇偶校验(parity)、独立磁盘冗余阵列(redundant arrays ofindependent drives,RAID)、纠删码(erasure coding,EC)或错误检查和纠正(errorcorrecting code,ECC)。在有些存储***中,会采用多种数据保护技术结合的方式。如,采用ECC和EC结合的技术,或采用ECC和RAID结合的技术。ECC用于纠正比特错误,RAID/EC用于恢复分片数据。
英特尔(intel)和美光(micron)推出了全新主流存储芯片技术3D XPoint。相较于NAND闪存,3D XPoint具有10倍的低延迟、3倍写入耐久、4倍每秒写入、3倍每秒读取的性能提升以及30%的功耗。3D XPoint有助于计算机以更快的速度获取并处理联网设备产生的大量数据。3D XPoint存储器包括多个芯片(die),每一个die包括多个分区(partition),每个分区包括多个数据页(page),数据页为最小的写入读取粒度。图1示出了3D XPoint存储芯片技术中一个die的存储结构。如图1所示,一个die包括16个分区,用P0、P1、......、P15表示。一个die的一行即为一个条带,一个条带的存储空间由多个数据页(page)组成,一个最小的矩形框代表一个数据页。在一个die中的一个条带上承载用户数据和对应的ECC校验数据,同一个die上的ECC校验数据用于校验用户数据。例如,用户数据大小为4kB,一个die的一个条带的存储空间为256字节(byte),每个数据页的存储空间为16byte。可以将4kB的用户数据分散在17个die上,例如die0~die16承载4KB的用户数据。die0~die16中每个die中一个条带的16个数据页用于承载部分用户数据和对应的ECC校验数据,如该部分用户数据占240byte,ECC校验数据占16byte。在die17上承载RAID/EC的奇偶校验数据。
这种存储和校验方式比较适用于粒度较大的用户数据,例如4kB或2kB等。对于如何存储及校验粒度较小(如256byte)的用户数据,是需要解决的技术问题。
发明内容
本申请提供一种存储校验方法及装置,用以存储和校验粒度比较小的用户数据。
一方面,提供一种存储校验方法,该方法通过以下步骤实现:对用户数据进行错误检查和纠正ECC校验,获得ECC校验数据,所述用户数据包括m个分片数据,所述m为大于2的整数;对所述用户数据和所述ECC校验数据,进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得奇偶校验数据;将所述m个分片数据、所述ECC校验数据和所奇偶校验数据存储到多个芯片上;其中,所述多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据,所述n、p为正整数。采用以上方法,将分片数据分散在m个die上,并且在不同于该m个die的n个die上存储ECC校验数据,该ECC校验数据能够校验该多个分片数据,能够实现小粒度的用户数据的存储校验。通过在不同于该m和n个die的p个die上存储奇偶校验数据,进一步保证了数据可靠性。若采用现有的存储校验方法,在同一个die上的ECC校验数据校验同一个die上的用户数据,当存储较小粒度的用户数据时,可能导致用户数据和ECC校验数据占用多个条带,从而引起读取延迟。通过本申请实施例的方法,ECC校验数据能够校验多个die上的分片数据,这样能够避免读取延迟。通过将一组分片数据组成的用户数据和ECC校验数据独立生成奇偶校验数据,不会引入额外的写放大。现有的方法如果将多组数据来生成一组奇偶校验数据,当一组数据变化,需要重新生成奇偶校验数据,导致校验的写入量很大。本申请实施例中,多个分片数据组成的用户数据以及ECC校验数据可以相当于一组数据,通过将一组分片数据组成的用户数据和ECC校验数据独立生成奇偶校验数据,不会引入额外的写放大。
在一个可能的设计中,所述多个芯片中的任意一个芯片包括多个分区;所述m个芯片中的任意一个芯片上的一个或多个分区承载一个分片数据;所述第一芯片上的一个或多个分区承载所述ECC校验数据;所述第二芯片上的一个或多个分区承载所述奇偶校验数据。
在一个可能的设计中,所述多个分区在一个条带上。其中,一个条带即多个die中的一行。
在一个可能的设计中,所述多个芯片中的任意一个芯片包括多个分区,所述多个芯片中的任意一个芯片上的一个分区包括多个数据页;所述m个芯片中的任意一个芯片上的一个或多个数据页承载一个分片数据;所述第一芯片上的一个或多个数据页承载所述ECC校验数据;所述第二芯片上的一个或多个数据页承载所述奇偶校验数据。
在一个可能的设计中,所述多个数据页在一个条带上。其中,一个条带即多个die中的一行。
第二方面,提供一种存储校验方法,该方法可以通过以下步骤实现:对多个芯片进行读取;所述多个芯片用于存储用户数据、ECC校验数据和奇偶校验数据,所述用户数据包括多个分片数据,所述多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据,所述n、p为正整数;若所述多个芯片中的p个第三芯片上存储的数据丢失,则:对所述p个第三芯片进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得所述p个第三芯片上的恢复数据;采用所述ECC校验数据对所述m个芯片的数据进行ECC校验,获得所述用户数据,其中,若p个第三芯片包括m个芯片中的芯片,则所述m个芯片的数据包括所述恢复数据。采用以上方法,通过将粒度比较小的用户数据分片,将分片数据分散在m个die上,并且在不同于该m个die的n个die上存储ECC校验数据,该ECC校验数据能够校验该多个分片数据,能够实现小粒度的用户数据的存储校验。通过在不同于该m和n个die的p个die上存储奇偶校验数据,进一步保证了数据可靠性。若采用现有的存储校验方法,在同一个die上的ECC校验数据校验同一个die上的用户数据,当存储较小粒度的用户数据时,可能导致用户数据和ECC校验数据占用多个条带,从而引起读取延迟。通过本申请实施例的方法,ECC校验数据能够校验多个die上的分片数据,这样能够避免读取延迟。通过将一组分片数据组成的用户数据和ECC校验数据独立生成奇偶校验数据,不会引入额外的写放大。现有的方法如果将多组数据来生成一组奇偶校验数据,当一组数据变化,需要重新生成奇偶校验数据,导致校验的写入量很大。本申请实施例中,多个分片数据组成的用户数据以及ECC校验数据可以相当于一组数据,通过将一组分片数据组成的用户数据和ECC校验数据独立生成奇偶校验数据,不会引入额外的写放大
在一个可能的设计中,所述ECC校验数据可纠错的最大比特数,不小于所述m个芯片的数据存在的比特数。这样能保证die数据丢失情况下的可靠性。
第三方面,提供一种存储校验装置,该装置具有实现上述第一方面、第二方面、第一方面的任一种可能的设计或第二方面的任一种可能的设计的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第四方面,提供一种存储***,该存储***中包括处理设备和存储设备,该存储设备可用于执行上述第一方面、第二方面、第一方面的任一种可能的设计或第二方面的任一种可能的设计的功能。
第五方面,提供一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述各方面和各方面的任一可能的设计中方法的指令。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面和各方面的任一可能的设计中所述的方法。
附图说明
图1为现有技术中3D XPoint存储芯片结构示意图;
图2为本申请实施例中存储***架构示意图;
图3为本申请实施例中存储校验方法流程示意图;
图4为本申请实施例中存储结构示意图;
图5为本申请实施例中校验方式示意图;
图6为本申请实施例中存储校验装置结构示意图之一;
图7为本申请实施例中存储校验装置结构示意图之二;
图8为本申请实施例中存储校验装置结构示意图之三。
具体实施方式
本申请实施例提供一种存储校验方法及装置,用以存储和校验粒度比较小的用户数据。其中,方法和装置是基于同一构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。本申请实施例的描述中,“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请中所涉及的至少一个是指一个或多个;涉及的多个,是指两个或两个以上。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图2示出了本申请实施例提供的存储校验方法适用的一种可能的存储***的架构。如图2所示,存储***200中包括处理设备201和存储设备202。处理设备201例如可以是计算机主机。存储设备202可以包括存储服务器和接口服务器等设备,存储设备202具有自己的接口和协议,通过同轴电缆、网线、光纤等方式与处理设备201连接,作为数据的存储中心为处理设备201提供存储服务。本申请中存储设备202主要用于存储用户数据和校验数据。在使用上述存储***200时,一次I/O操作分为写和读两个方面。对于写方面,处理设备201通过SAN等网络发起写入请求,存储设备202接收来自处理设备201的写入请求,写入请求用于请求将用户数据写入存储设备202。对于读方面,存储设备202接收来自处理设备201的读取请求,存储设备202读取用户数据和校验数据,当用户数据与校验数据相匹配时,存储设备202向处理设备201返回用户数据。
本申请实施例提供的方法可以适用于使用ECC和RAID/EC的校验方法的任何应用场景,本申请中以3D XPoint存储介质为例进行介绍,但并不局限于此,还可以应用在其他存储介质上。本申请实施例提供的方法能够存储和校验粒度比较小的用户数据。其中,粒度比较小的用户数据,例如用户数据的大小为256byte、128byte、512byte等。本申请实施例针对粒度比较小的用户数据,根据die的存储结构,若一个die的一行(即一个条带)的存储大小不足以存储该用户数据和该ECC校验数据,则采用本申请实施例提供的方法进行存储校验。例如,用户数据大小为256byte。如图1所示,一个die可包括16个分区,一个分区中的一个数据页的大小为16byte,一个die的一个条带的存储大小为256byte。因此,若采用现有技术的方法,一个die中的一个条带存储该大小为256byte的用户数据,那么该用户数据的ECC校验数据只能在这个die中的另一个条带上存储,这样增加了读取延迟。通过本申请实施例提供的方法能够有助于解决读取延迟的问题。
如图3所示,下面对本申请的存储校验方法进行详细说明。
S301、对用户数据进行ECC校验,获得ECC校验数据。
其中,用户数据包括多个分片数据。例如,可以先对用户数据进行分片,获得多个分片数据。为了降低读取延迟,一个分片数据可以占用一个die的一个条带中的部分或全部数据页。根据用户数据的大小以及数据页的存储空间,确定分片的数量。例如用户数据大小为256byte,一个数据页的存储空间为16byte,则可以分片成16个分片数据,一个分片数据正好占用一个数据页。当然根据用户数据的大小,可以将用户数据进行分片使得分片数据占用两个或两个以上数据页。
S302、对该用户数据和该ECC校验数据,进行RAID校验或EC校验,获得奇偶校验(parity)数据。
需要说明的是,本申请实施例中的ECC校验、RAID校验和EC校验的具体方法可参见现有技术,在此不再赘述。
S303、将获得的多个分片数据、ECC校验数据和奇偶校验数据存储到多个芯片上。
若将用户数据分成m个分片数据,那么该多个芯片可以包括m个芯片、n个芯片和p个芯片。m个芯片、n个芯片和p个芯片为m个芯片中的不同芯片,其中,m个芯片承载m个分片数据,n个芯片承载ECC校验数据,p个芯片承奇偶校验数据。m是大于1的整数,n、p均为正整数。一般情况下,p的值与恢复的die的数量有关系。本申请实施例中以n=1、且p=1为例进行介绍。可以理解,将该举例的方法应用到n和p为大于1的整数的场景也属于本申请的保护范围。
将用户数据分成m个分片数据,那么可以将用户数据和校验数据存储到(m+2)个die上,其中,校验数据包括ECC校验数据和奇偶校验数据。该(m+2)个die中的m个die中的每个die承载一个分片数据,不同die上承载不同的分片数据。可选的,用户数据分成的m个分片数据按照序号编号,可将m个分片数据依次放置对应序号的die上。在m个die之外的两个die上分别承载ECC校验数据和奇偶校验数据,例如,在m个die之外的第一芯片上承载ECC校验数据,在m个die之外的第二芯片上承载奇偶校验数据。假设(m+2)个die用die0、die1、......、die(m+1)来表示,可以将m个不同分片数据分别承载在die0、die1、......、die(m-1)上,在die m上承载ECC校验数据,在die(m+1)上承载奇偶校验数据。
(m+2)个die中的任意一个die包括多个分区(partition)。其中,m个die中的任意一个die上的一个或多个分区,承载一个分片数据。承载分片数据的分区的数量,根据用户数据的大小和数据页的存储空间决定。类似的,第一芯片上的一个或多个分区,承载ECC校验数据。第二芯片上的第一个或多个分区承载奇偶检验数据。承载ECC校验数据的分区的数量,根据ECC校验数据大小和数据页的存储空间决定。承载奇偶校验数据的分区的数量,根据奇偶校验数据大小和数据页的存储空间决定。一般情况下,ECC校验数据的大小由用户数据的大小决定,奇偶校验数据的大小由用户数据和ECC校验数据的大小决定。进一步的,当多个分区来承载一个分片数据时,该多个分区可以在一个条带上,类似的,当多个分区来承载ECC校验数据,该多个分区可以在一个条带上;当多个分区来承载奇偶校验数据,该多个分区可以在一个条带上,这样能够降低读取时延。
(m+2)个die中的任意一个die包括多个分区(partition),且一个分区包括多个数据页,一个数据页为最小的读写单元。那么,m个die中的任意一个die上的一个或多个数据页,承载一个分片数据。承载分片数据的分区的数量,根据用户数据的大小和数据页的存储空间决定。类似的,第一芯片上的一个或多个数据页,承载ECC校验数据。第二芯片上的一个或多个数据页承载奇偶检验数据。承载ECC校验数据的分区的数量,根据ECC校验数据大小和数据页的存储空间决定。承载奇偶校验数据的数据页的数量,根据奇偶校验数据大小和数据页的存储空间决定。一般情况下,ECC校验数据的大小由用户数据的大小决定,奇偶校验数据的大小由用户数据和ECC校验数据的大小决定。进一步的,当多个数据页来承载一个分片数据时,该多个数据页可以在一个条带上,类似的,当多个数据页来承载ECC校验数据,该多个数据页可以在一个条带上;当多个数据页来承载奇偶校验数据,该多个数据页可以在一个条带上,这样能够降低读取时延。
举例来说,假设用户数据为256byte,die中一个数据页的存储大小为16byte,那么可以将用户数据分为16个分片数据,一个分片数据的大小为16byte。整个用户数据占用16个die。综合用户数据和校验数据,共占用18个die。如图4所示,假设18个die用die0、die1、......、die17来表示。可以在die0~die15上分别存储16个分片数据中的不同分片数据,分片数据用字母d表示。在die17上存储ECC校验数据,并在die18上存储奇偶校验数据。存储位置仅仅是一种举例,本申请实施例还可以有其它存储方式,例如,在一个die上占用一个条带的两个或两个以上数据页来存储分片数据。
如果将多组数据来生成一组奇偶校验数据,当一组数据变化,需要重新生成奇偶校验数据,导致校验的写入量很大。本申请实施例中,多个分片数据组成的用户数据以及ECC校验数据可以相当于一组数据,通过将一组分片数据组成的用户数据和ECC校验数据独立生成奇偶校验数据,不会引入额外的写放大。
S304、对多个芯片进行读取。
通过将较小粒度的用户数据进行分片,将用户数据和校验数据分散在多个die上,每个die上承载的用户数据或校验数据不超过一个条带,这样在读取时可以并发访问,且读取时可以降低读取时延。
若多个芯片中的p个芯片上存储的数据丢失,则执行S305~S306。其中,p个芯片可以是该多个芯片中的任意p个芯片,例如,存储分片数据的芯片上的数据丢失,也可以是存储ECC校验数据的第二芯片上的数据丢失,也可以是存储奇偶校验数据的第三芯片上的数据丢失。丢失数据的p个芯片称为p个第三芯片。
S305、采用奇偶校验数据,进行RAID校验或EC校验,获得p个第三芯片上的恢复数据。
其中,若丢失数据的芯片为存储分片数据和ECC校验数据的芯片,则采用第二芯片上存储的奇偶校验数据进行RAID校验。第二芯片上的奇偶校验数据也丢失了,那么采用分片数据和ECC校验数据先计算出奇偶校验数据,再进行数据恢复。
若在S302对该用户数据和该ECC校验数据,进行RAID校验,则采用第一芯片上存储的奇偶校验数据进行RAID校验,获得第三芯片上的恢复数据。
若在S302对该用户数据和该ECC校验数据,进行EC校验,则采用第一芯片上存储的奇偶校验数据进行EC校验,获得第三芯片上的恢复数据。
S306、采用第一芯片上存储的ECC校验数据,对m个芯片上的数据进行ECC校验,若m个芯片上存在数据丢失,则获得丢失芯片上存储的分片数据,进一步获得整个用户数据。其中m个芯片上的数据包括S305得到的恢复数据。
本申请中,对多个分片数据进行ECC校验,存储在某个die上,例如第一芯片上;并将多个分片数据和ECC校验数据进行RAID/EC校验,获得奇偶校验数据,存储在另一个die上,例如第二芯片上。在读取数据时,若第三芯片上的分片数据丢失,则按照先采用RAID/EC校验后ECC校验的方法进行数据恢复。即,采用RAID/EC校验方法先恢复第三芯片上的数据,得到恢复数据。在用ECC校验方法对第三芯片上的恢复数据和其它存储分片数据的芯片上的分片数据进行联合校验,从而获得正确的用户数据。其中,采用RAID/EC校验方法得到的该恢复数据存在校验比特数最多为其它芯片上的分片数据的错误比特数之和,那么当用ECC校验时,需要ECC校验数据纠错最大比特数不小于m个芯片上数据的错误比特数之和,m个芯片上数据包括第三芯片的恢复数据。
下面通过举例对数据恢复的过程进行详细说明。
如图5所示,仍以上述例子为例,用户数据为256byte,die中一个数据页的存储大小为16byte,对用户数据进行分片,获得16个分片数据,可以在die0~die15上存储16个分片数据,对该16个分片数据组成的用户数据进行ECC校验,获得ECC校验数据,将ECC校验数据存储在die16上。对用户数据和ECC校验数据进行RAID/EC校验,获得parity数据,将parity数据存储在die17上。
在数据存储时,必然会有错误比特。假设用户数据和校验数据均存在错误比特。假设在读取时die2丢失,先用parity校验数据对die1、die3、die4....die15上的分片数据和die16上的ECC校验数据进行RAID/EC校验,获得die2上的恢复数据。由于用户数据存储时存在错误比特,因此通过RAID/EC校验获得的die2的恢复数据也会存在错误比特。假设除die2之外的die上的分片数据共存在x个错误比特,则die2的恢复数据最多会存在x个错误比特。那么整个用户数据存在2x个错误比特。继而,采用die16上的ECC校验数据再对die0、die1、die3~die15上的分片数据和上述得到的die2上的恢复数据进行校验,得到die2上丢失的分片数据。假如用户数据的错误比特为2倍的xbit时,当ECC的纠错能力大于或等于2倍的x比特时,die2上的数据可被正确读取,从而整个用户数据可被正确读出。ECC的纠错能力大于或等于2倍的x比特,也就是说ECC能够纠正的错误比特数能够大于或等于2倍的x比特。这样能保证die数据丢失情况下的可靠性。
假设在读取时共有p个die发生数据丢失,除该p个die之外的die上共存在y个错误比特,则p个die的恢复数据最多会存储p倍的x个错误比特。那么整个用户数据存在(p+1)倍的x个错误比特。类似的,ECC的纠错能力大于或等于((p+1)倍的x比特,也就是说ECC能够纠正的错误比特数能够大于或等于(p+1)倍的x比特。这样能保证die数据丢失情况下的可靠性。
基于上述方法实施例的同一构思,如图6所示,本申请实施例还提供了一种存储校验装置600,该存储校验装置600用于执行上述存储校验方法中对应的写入方面的操作。该存储校验装置600包括校验单元601和存储单元602。其中:
校验单元601,用于对用户数据进行错误检查和纠正ECC校验,获得ECC校验数据,该用户数据包括m个分片数据;以及用于对该用户数据和该ECC校验数据,进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得奇偶校验数据,m为大于2的整数;;
存储单元602,用于将该m个分片数据、该ECC校验数据和所奇偶校验数据存储到(m+2)个芯片上;其中,该(m+2)个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,该(m+2)个芯片中除该m个芯片之外的n个第一芯片承载该ECC校验数据,该(m+2)个芯片中除该m个芯片之外的p个第二芯片用于承载该奇偶校验数据,n、p为正整数。
可选的,该(m+2)个芯片中的任意一个芯片包括多个分区;
该m个芯片中的任意一个芯片上的一个或多个分区承载一个分片数据;
该第一芯片上的一个或多个分区承载该ECC校验数据;
该第二芯片上的一个或多个分区承载该奇偶校验数据。
可选的,该多个分区在一个条带上。
可选的,该(m+2)个芯片中的任意一个芯片包括多个分区,该(m+2)个芯片中的任意一个芯片上的一个分区包括多个数据页;
该m个芯片中的任意一个芯片上的一个或多个数据页承载一个分片数据;
该第一芯片上的一个或多个数据页承载该ECC校验数据;
该第二芯片上的一个或多个数据页承载该奇偶校验数据。
可选的,该多个数据页在一个条带上。
基于上述方法实施例的同一构思,如图7所示,本申请实施例还提供了一种存储校验装置700,该存储校验装置700用于执行上述存储校验方法中对应的读取方面的操作。该存储校验装置700包括读取单元701和校验单元702。其中:
读取单元701,对(m+2)个芯片进行读取;该(m+2)个芯片用于存储用户数据、ECC校验数据和奇偶校验数据,该用户数据包括多个分片数据,该(m+2)个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,该(m+2)个芯片中除该m个芯片之外的第一芯片承载该ECC校验数据,该(m+2)个芯片中除该m个芯片之外的第二芯片用于承载该奇偶校验数据;
校验单元702,用于在该m个芯片中的第三芯片上存储的分片数据丢失时,采用该奇偶校验数据进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得该第三芯片上的恢复数据;采用该ECC校验数据对该m个芯片的数据进行ECC校验,获得该用户数据,其中,该m个芯片的数据包括该恢复数据。
可选的,该ECC校验数据可纠错的最大比特数,不小于该m个芯片的数据存在的比特数。
基于上述方法实施例的同一构思,如图8所示,本申请实施例还提供了一种存储校验装置800,该存储校验装置800用于执行上述存储校验方法。该存储校验装置800包括处理器801和存储器802。其中:
处理器801用于接收将用户数据写入芯片的写入请求,以及用于读取芯片的读取请求,以及上述方法实施例描述的校验方面的操作等,存储器802可以相当于上述方法实施例中的芯片,用于存储用户数据和校验数据。存储校验装置800中的处理器801还可以用于执行上述方法实施例中的其他操作,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
Claims (14)
1.一种存储校验方法,其特征在于,包括:
对用户数据进行错误检查和纠正ECC校验,获得ECC校验数据,所述用户数据包括m个分片数据,所述m为大于2的整数;
对所述用户数据和所述ECC校验数据,进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得奇偶校验数据;
将所述m个分片数据、所述ECC校验数据和所述奇偶校验数据存储到多个芯片上;其中,所述多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据,所述n、p为正整数;
若所述多个芯片中的p个第三芯片上存储的数据丢失,则:
对所述p个第三芯片进行RAID校验或EC校验,获得所述p个第三芯片上的恢复数据;
采用所述ECC校验数据对所述m个芯片的数据进行ECC校验,获得所述用户数据。
2.如权利要求1所述的方法,其特征在于,所述多个芯片中的任意一个芯片包括多个分区;
所述m个芯片中的任意一个芯片上的一个或多个分区承载一个分片数据;
所述第一芯片上的一个或多个分区承载所述ECC校验数据;
所述第二芯片上的一个或多个分区承载所述奇偶校验数据。
3.如权利要求2所述的方法,其特征在于,所述多个分区在一个条带上。
4.如权利要求1所述的方法,其特征在于,所述多个芯片中的任意一个芯片包括多个分区,所述多个芯片中的任意一个芯片上的一个分区包括多个数据页;
所述m个芯片中的任意一个芯片上的一个或多个数据页承载一个分片数据;
所述第一芯片上的一个或多个数据页承载所述ECC校验数据;
所述第二芯片上的一个或多个数据页承载所述奇偶校验数据。
5.如权利要求4所述的方法,其特征在于,所述多个数据页在一个条带上。
6.一种存储校验方法,其特征在于,包括:
对多个芯片进行读取;所述多个芯片用于存储用户数据、ECC校验数据和奇偶校验数据,所述用户数据包括多个分片数据,所述多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据,所述n、p为正整数;
若所述多个芯片中的p个第三芯片上存储的数据丢失,则:
对所述p个第三芯片进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得所述p个第三芯片上的恢复数据;
采用所述ECC校验数据对所述m个芯片的数据进行ECC校验,获得所述用户数据。
7.如权利要求6所述的方法,其特征在于,所述ECC校验数据可纠错的最大比特数,不小于所述m个芯片的数据存在的比特数。
8.一种存储校验装置,其特征在于,包括:
校验单元,用于对用户数据进行错误检查和纠正ECC校验,获得ECC校验数据,所述用户数据包括m个分片数据,所述m为大于2的整数;以及用于对所述用户数据和所述ECC校验数据,进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得奇偶校验数据;
存储单元,用于将所述m个分片数据、所述ECC校验数据和所述奇偶校验数据存储到多个芯片上;其中,所述多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据,所述n、p为正整数;
所述校验单元还用于,在所述多个芯片中的p个第三芯片上存储的数据丢失时,对所述p个第三芯片进行RAID校验或EC校验,获得所述p个第三芯片上的恢复数据;采用所述ECC校验数据对所述m个芯片的数据进行ECC校验,获得所述用户数据。
9.如权利要求8所述的装置,其特征在于,所述多个芯片中的任意一个芯片包括多个分区;
所述m个芯片中的任意一个芯片上的一个或多个分区承载一个分片数据;
所述第一芯片上的一个或多个分区承载所述ECC校验数据;
所述第二芯片上的一个或多个分区承载所述奇偶校验数据。
10.如权利要求9所述的装置,其特征在于,所述多个分区在一个条带上。
11.如权利要求9所述的装置,其特征在于,所述多个芯片中的任意一个芯片包括多个分区,所述多个芯片中的任意一个芯片上的一个分区包括多个数据页;
所述m个芯片中的任意一个芯片上的一个或多个数据页承载一个分片数据;
所述第一芯片上的一个或多个数据页承载所述ECC校验数据;
所述第二芯片上的一个或多个数据页承载所述奇偶校验数据。
12.如权利要求11所述的装置,其特征在于,所述多个数据页在一个条带上。
13.一种存储校验装置,其特征在于,包括:
读取单元,对多个芯片进行读取;所述多个芯片用于存储用户数据、ECC校验数据和奇偶校验数据,所述用户数据包括多个分片数据,所述多个芯片中的m个芯片中的每个芯片承载一个分片数据,不同芯片承载的分片数据不同,所述多个芯片中除所述m个芯片之外的n个第一芯片承载所述ECC校验数据,所述多个芯片中除所述m个芯片之外的p个第二芯片用于承载所述奇偶校验数据,所述n、p为正整数;
校验单元,用于在所述多个芯片中的p个第三芯片上存储的数据丢失时,对所述p个第三芯片进行独立磁盘冗余阵列RAID校验或纠删码EC校验,获得所述p个第三芯片上的恢复数据;以及采用所述ECC校验数据对所述m个芯片的数据进行ECC校验,获得所述用户数据。
14.如权利要求13所述的装置,其特征在于,所述ECC校验数据可纠错的最大比特数,不小于所述m个芯片的数据存在的比特数。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2019/079118 WO2020186524A1 (zh) | 2019-03-21 | 2019-03-21 | 一种存储校验方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113424262A CN113424262A (zh) | 2021-09-21 |
CN113424262B true CN113424262B (zh) | 2024-01-02 |
Family
ID=72519441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980091806.7A Active CN113424262B (zh) | 2019-03-21 | 2019-03-21 | 一种存储校验方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113424262B (zh) |
WO (1) | WO2020186524A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116662063B (zh) * | 2023-05-10 | 2024-02-23 | 珠海妙存科技有限公司 | 一种闪存的纠错配置方法、纠错方法、***、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801103A (zh) * | 2004-11-19 | 2006-07-12 | 国际商业机器公司 | 利用磁盘阵列奇偶校验的增强错误标识***和方法 |
CN103902403A (zh) * | 2012-12-27 | 2014-07-02 | Lsi公司 | 经由冗余阵列的非易失性存储器编程故障恢复 |
CN107943609A (zh) * | 2016-10-12 | 2018-04-20 | 三星电子株式会社 | 存储器模块、存储器控制器和***及其相应操作方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013180714A1 (en) * | 2012-05-31 | 2013-12-05 | Hewlett-Packard Development Company, L.P. | Local error detection and global error correction |
US9026757B2 (en) * | 2013-01-25 | 2015-05-05 | Sandisk Technologies Inc. | Non-volatile memory programming data preservation |
US9830093B2 (en) * | 2015-03-27 | 2017-11-28 | Intel Corporation | Method and apparatus for improving immunity to defects in a non-volatile memory |
-
2019
- 2019-03-21 CN CN201980091806.7A patent/CN113424262B/zh active Active
- 2019-03-21 WO PCT/CN2019/079118 patent/WO2020186524A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801103A (zh) * | 2004-11-19 | 2006-07-12 | 国际商业机器公司 | 利用磁盘阵列奇偶校验的增强错误标识***和方法 |
CN103902403A (zh) * | 2012-12-27 | 2014-07-02 | Lsi公司 | 经由冗余阵列的非易失性存储器编程故障恢复 |
CN107943609A (zh) * | 2016-10-12 | 2018-04-20 | 三星电子株式会社 | 存储器模块、存储器控制器和***及其相应操作方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020186524A1 (zh) | 2020-09-24 |
CN113424262A (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733314B (zh) | 用于独立冗余阵列(raid)重建的方法、设备和计算机可读存储介质 | |
EP2684134B1 (en) | Programmable data storage management | |
US8171379B2 (en) | Methods, systems and media for data recovery using global parity for multiple independent RAID levels | |
US8397023B2 (en) | System and method for handling IO to drives in a memory constrained environment | |
US9195541B2 (en) | Controlling nonvolatile memory device and nonvolatile memory system | |
JP6175684B2 (ja) | Nandフラッシュメモリ上のデータの記憶のためのアーキテクチャ | |
US20160048342A1 (en) | Reducing read/write overhead in a storage array | |
US9710199B2 (en) | Non-volatile memory data storage with low read amplification | |
CN111538676B (zh) | 数据储存装置及其数据存取方法 | |
US10394651B2 (en) | Computing system with circular-shift recovery mechanism and method of operation thereof | |
US11385823B2 (en) | Method, electronic device and computer program product for rebuilding disk array | |
US9547456B2 (en) | Method and apparatus for efficient data copying and data migration | |
US20180150354A1 (en) | Raid system including nonvolatile memory and operating method of the same | |
CN105247488A (zh) | 在硬件中提供对数据帧区段的线速率合并的高性能读取-修改-写入*** | |
CN113424262B (zh) | 一种存储校验方法及装置 | |
US11016689B2 (en) | Data storage system | |
US11561859B2 (en) | Method, device and computer program product for managing data | |
CN105575439B (zh) | 一种存储单元失效纠错的方法及存储器 | |
WO2020028801A1 (en) | Error correction with scatter-gather list data management | |
CN105224261B (zh) | 一种块虚拟化阵列的实现方法及装置 | |
US11650737B2 (en) | Disk offset-distance awareness data placement for storage system data protection | |
EP2908247A1 (en) | Method and apparatus for data restoration | |
US11165440B1 (en) | Systems and methods for geometric partitioning in object storage | |
US9830220B1 (en) | Enhanced error recovery for data storage drives | |
CN114610245B (zh) | 基于ssd的raid实现方法、装置、可读存储介质及电子设备 |
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 |