CN103718162B - 用于ssd中灵活的raid的方法和设备 - Google Patents
用于ssd中灵活的raid的方法和设备 Download PDFInfo
- Publication number
- CN103718162B CN103718162B CN201280038141.1A CN201280038141A CN103718162B CN 103718162 B CN103718162 B CN 103718162B CN 201280038141 A CN201280038141 A CN 201280038141A CN 103718162 B CN103718162 B CN 103718162B
- Authority
- CN
- China
- Prior art keywords
- raid
- memory pages
- rows
- hash memory
- rows group
- 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
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/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- 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/0629—Configuration or reconfiguration of storage 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- 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/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
-
- 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/0689—Disk arrays, e.g. RAID, JBOD
-
- 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/52—Protection of memory contents; Detection of errors in memory contents
-
- 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/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
-
- 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
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种采用独立磁盘冗余阵列(RAID)方案的固态驱动器(SSD)包括闪存芯片、所述闪存芯片上的可擦除块,以及闪存控制器。所述可擦除块用于存储闪存页。所述闪存控制器以可操作方式耦接到所述闪存芯片。所述闪存控制器还用于将某些所述闪存页组织成RAID行组,并且将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页。
Description
相关申请案的交叉参考
本发明要求2011年8月12日递交的发明名称为“用于SSD中灵活的RAID的方法和设备(Method and Apparatus for Flexible RAID in SSD)”的第61/523,251号美国临时申请案以及2012年4月30日递交的发明名称为“用于SSD中灵活的RAID的方法和设备(Methodand Apparatus for Flexible RAID in SSD)”的第13/460686号美国专利申请案的在先申请优先权,这些在先申请的内容以引入的方式并入本文本中,如全文再现一般。
技术领域
本发明涉及存储器,更确切地说,涉及用于SSD中灵活(flexible)的RAID的方法和设备。
背景技术
非易失性存储器已用作计算机和便携式信息设备中的存储器。近来,作为仅使用硬盘驱动器(HDD)的一个替代方案,使用NAND闪存存储器的固态驱动器(SSD)在计算机中的使用变得更加流行。有人认为SSD很有可能占据传统上被认为限于HDD的使用领域。
近来固态驱动器(SSD)越来越多地用于计算机系统中,要么作为硬盘驱动器(HDD)的高速缓存器,要么直接替代HDD。在这样的新架构中,SDD越来越多地用于:a)提高存储的(缓存的)数据的存取速度;b)减小HDD的功率消耗;c)减小系统的尺寸、重量和功率消耗;以及d)减小存储的(缓存的)数据的存取延迟。
基于NAND闪存存储器的SSD(固态驱动器)已广泛用于需要数据存取速度的各种应用中。传统的RAID(独立磁盘冗余阵列)方案已用于许多SSD设计中。然而,这些传统RAID方案只在RAID组中的所有元件都良好时才起作用。
发明内容
本发明的实施例大体实现了技术优势,它们提供了一种用于SSD中灵活的RAID的系统和方法。
在一个实施例中,采用独立磁盘冗余阵列(RAID)方案的固态驱动器(SSD)包括闪存芯片、所述闪存芯片上的可擦除块,以及闪存控制器。可擦除块用于存储闪存页。闪存控制器以可操作方式耦接到闪存芯片。闪存控制器还用于将某些闪存页组织成RAID行组(RAID line group),并且将RAID行组成员组成信息(membership information)写入RAID行组中的每个闪存页。
在一个实施例中,采用独立磁盘冗余阵列(RAID)方案的固态驱动器(SSD)包括闪存芯片、可擦除块以及闪存控制器。可擦除块位于闪存芯片中并且用于存储一个或多个闪存页。闪存控制器以可操作方式耦接到闪存芯片。闪存控制器用于:将某些闪存页组织成RAID行组;用于从RAID行组中排除坏的闪存页;以及用于将RAID行组成员组成信息以二进制/十六进制数的形式写入RAID行组中的每个闪存页内的RAID行(RAIDL)字段。
在一个实施例中,在固态驱动器(SSD)中使用独立磁盘冗余阵列(RAID)方案的方法包括:将闪存芯片阵列中的闪存页组织成RAID行组以及将RAID行组成员组成信息写入RAID行组中的每个闪存页。在校验计算和损坏(corrupt)的闪存页的重建中的至少一个过程中,RAID行组信息识别出将要被排除的闪存页。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
图1提供了固态驱动器(SSD)的一个实施例;
图2所示为闪存页的实例,所述闪存页被组织在独立磁盘冗余阵列(RAID)行组中并且能够被存储在图1中的SDD中的闪存芯片中的可擦除块中。
图3提供了图2中的闪存页的数据格式的图示,其中数据字段包括RAID行(RAIDL)字段;
图4提供了RAID行组的一个实例,其中一个闪存页是损坏的并且两个闪存页出于重建的目的而从RAID行组中排除;
图5提供了图3中的数据格式中的RAIDL字段的一个实例;
图6提供了一个实例,其中图2中的RAID行组被划分成第一和第二RAID行组;
图7提供了对应于图6中的第一和第二RAID行组的第一和第二RAIDL字段的一个实例;
图8提供了使用图1中的SSD并且可以实施本发明的实施例的实施例系统的方框图;以及
图9提供了在图1中的SSD中使用RAID方案的方法的实施例。
具体实施方式
下文将详细论述对本发明实施例的实施和使用。但应了解,本发明提供的许多适用发明概念可实施在多种具体环境中。所论述的具体实施例仅为说明性的,而不限制本发明的范围。
近来,固态驱动器(SSD),也可以称为固态磁盘或电子磁盘,已经并入到计算机系统中,要么作为硬盘驱动器(HDD)的高速缓存器,要么直接替代HDD。在这样的新架构中,SDD越来越多地用于:提高存储的(缓存的)数据的存取速度;减小HDD的功率消耗;减小系统的尺寸、重量和功率消耗;以及减小存储的(缓存的)数据的存取延迟。
然而,作为NAND闪存或其他非易失性存储器类型的SSD是易于出错的。因此,存储在其中的位会很容易变损坏。此外,随着SSD的程序擦除周期增加,错误率会增加。因此,即使使用了增强型纠错编码(ECC)算法(例如,Bose Ray-Chaudhuri(BCH)ECC算法),某一数据单元也仍然有可能是不可纠正的。
如下文将更详细地说明,本发明的实施例使SSD能够灵活地将闪存页、可擦除块,以及/或者闪存芯片组织成独立磁盘冗余阵列(RAID)组。RAID行组成员可以基于以下条件来选择或拣选(chosen/selected):例如,每个硅裸片的状态、写入到达模式(writearrival pattern),或是在数据实际上写入存储媒介中时会影响RAID行组中的成员组成的某其他因素或多个因素。换句话说,RAID行组中的成员组成是灵活的(flexible)。RAID行组中的成员可以由RAID组成员组成信息识别出来,该信息可以与要存储的数据一起写入。当某个组成员被读取并被ECC算法确定是损坏的时,RAID行组成员所在位置的下一邻居可以被读取回来并且用于使用例如异或(exclusive or,XOR)过程来重建所述损坏的组成员,分析显示,这样的方法可以大大提高SSD的可靠性并且延长驱动器寿命。
现参看图1,示出了利用类似于基于硬盘的传统RAID(廉价(或独立)磁盘的冗余阵列)的冗余数据存储机制或方案的SSD10的实施例。如图所示,SSD10大体包括闪存控制器12和闪存芯片14,其中每一者都可以包括若干内存裸片(memory die)。闪存控制器12(亦称,NAND闪存控制器或SSD控制器)用于例如将闪存芯片14桥接到主控(host)或使用SSD10的计算机。在一个实施例中,闪存控制器12是执行固件级代码的嵌入式处理器。闪存控制器12可以例如执行ECC、耗损均衡(wear leveling)、坏块映射(bad block mapping)、读取清除(read scrubbing)和读取扰动(read disturb)管理、读取和写入缓存(read and writecaching)、垃圾回收(garbage collection),以及加密(encryption)。
仍然参看图1,在一个实施例中,闪存芯片14可以是非易失性NAND闪存芯片。即使如此,也可以使用其他类型的闪存芯片例如动态随机存取存储器(DRAM)。此外,闪存芯片14可以是多层单元(MLC)闪存存储器或单层单元(SLC)闪存存储器。尽管图1中示出了两个闪存芯片14,但是SSD10中可以包含更多或更少的闪存芯片14。
在一个实施例中,闪存芯片14被划分成可擦除块16(亦称,闪存块或RAID块)。闪存擦除块是NAND闪存存储器中可以一次性擦除的最小单元。尽管图1中的每个闪存芯片14中示出了两个可擦除块16,但是每个闪存芯片14中可以包含更多或更少的可擦除块16。可擦除块16大体用于存储数据闪存页18,如图2所示。
为了说明的目的,图2中描绘了十七(17)个数据闪存页18。如图所示,闪存页18被闪存控制器12组织、写入或者布置到RAID行组20中。RAID行组20中所包含的十七个闪存页18被指定为页0至页9、页A至页F,以及页P。页P表示校验页(parity page)。每个RAID行组20具有向该RAID行组提供冗余的至少一个校验页。实际上,在任何成员损坏时,校验页可以用于使用RAID行组中的其他成员页以及例如XOR运算来恢复故障成员页。
由于RAID行组20包括一次性写入的十七个闪存页并且包括一个校验页,因此RAID行组20可以称为16+1RAID组。请注意,RAID行组20中的成员组成是灵活的。换句话说,RAID行组20可以在可擦除块16内或在闪存芯片14上包括更多或更少可用的闪存页18。
仍然参看图2,已知RAID行组20中的某些闪存页18是坏的(例如,损坏,含有错误,具有程序故障状态,由于位错误或页读取超时而不能成功读取,等等)闪存页18被确定为坏的情况可以有若干种。例如,总线故障或闪存芯片14故障,会使可擦除块16(亦称,NAND闪存块)中的闪存页18变坏。
在图2中的实施例中,页9在读取过程中被检测为坏的。由于页9被检测为坏的,因此页9不再参与用于导出页P的校验计算。页9也不再用于重建在后来的读取操作中发现或识别出的损坏的闪存页18。换句话说,页9将留在物理RAID行组20中,但是当进行校验计算时以及当恢复随后发现的故障闪存页中的数据时,它将有效地从RAID行组20中排除。在一个实施例中,页9的内存总线被越过或跳过以排除页9,如本文所述。
在一个实施例中,一个或多个闪存页18发生程序故障,例如上述实例中的页9,如果仍然使用同一可擦除块16,那么一个选项是从RAID行组20中移除故障闪存页并且随后将RAID行组20重新写入下一个RAID行地址中。这样的选项假定了故障闪存页18(例如,页9)有可能在同一可擦除块16中再次发生故障。校验页程序故障的处理与常规的页程序故障相同。尽管在此场景中一个RAID行可能没有得到充分使用,但是由于程序故障所导致的闪存页18中的故障不是经常发生,因此对SSD10的影响非常小。在这种情况下,写入格式器(write formatter)可以在除了校验页以外的所有其他页中使用回写命令(copy backcommand)。
现参看图3,其更详细地示出了图2中的一个闪存页18。如图3所示,闪存页18被划分成逻辑块寻址(LBA)扇区22和RAID行(RAIDL)字段24。LBA扇区22用于存储原始数据或对应于原始数据的元数据。存储在LBA扇区22中的元数据可以关联于原始数据,用于保护原始数据,或者专用于原始数据(例如,指示出原始数据的LBA地址)。
RAIDL字段24用于存储RAID行组成员组成信息26,此信息用于识别出物理RAID行组20中的某一闪存页18,该闪存页将用于校验计算和/或用于重建后来变损坏的闪存页。存储在RAIDL字段24中的RAID行组成员组成信息26也可以用于识别出哪个闪存页18将从RAID行组20中被排除以进行校验计算以及恢复或重建损坏的闪存页。在一个实施例中,RAID行组成员组成信息26作为二进制/十六进制数存储在RAIDL字段24中。在其他实施例中,RAID行组成员组成信息26可以用其他格式存储。
图4至图5示出了存储在RAIDL字段24中的RAID行组成员组成信息26如何在一个实施例中用来识别出用于校验计算和闪存页重建过程的闪存页的一个实例。如图4所示,闪存控制器12将某些闪存页18组织或写入RAID行组20中。如图所示,拣选了闪存芯片14上的可擦除块16中总共十七个闪存页18。关于图4中的RAID行组20中的闪存页18,已知两个闪存页18是坏的,即页9和页E。因此,这些页将从校验计算和闪存页数据重建过程中排除。
为了指示出已知闪存页中页9和页E是坏的,RAID行组成员组成信息26被闪存控制器12写入RAIDL字段24中,如图5所示。在图5中所示的实例中,由于已知闪存页中页9和页E是坏的,因此表示为17'h1bdff的十六进制数被存储在RAIDL字段24中。如图5所示,当十六进制数转换成二进制时,与页9和页E相关联的位未被设置。因此,这些位均为“0”。与此相反,与使用XOR过程的校验计算以及闪存页重建中要使用的闪存页18相关联的位被设置。因此,这些位均为“1”。
仍然参看图4至图5,如果在后来的读取操作过程中发现页5由于例如位错误而变坏或损坏,那么RAID行组20中所包含的闪存页18,除了页5以外,都被读取出来。换句话说,指定为页0、页2、页2、页3、页4、页6、页7、页8、页A、页B、页C、页D、页F的闪存页18被读取。一旦被读取,这些闪存页即与校验页即页P一起在XOR过程中使用,以重建闪存页中的页5。请注意,指定为页9和页E的已知坏闪存页18以及指定为页5的新发现的坏闪存页不用于重建指定为页5的闪存页。此外,如果页5由于某原因而不能使用上述过程来恢复或重建,例如由于不可纠正的错误,那么RAIDL字段24可以被更新,以使得与页5相关联的位被设置为“0”。
在图6至图7中所示的实施例中,RAID行组20可以划分成较小的RAID行组,例如第一较小的RAID行组28和第二较小的RAID行组30。换句话说,灵活的RAID技术可以用于将由固定RAID组(fixed RAID group)大体所需的页数量分解。在这样的实施例中,第一较小RAID行组28中的RAIDL字段24中可以填入表示为17h'000ff的十六进制数;第二较小RAID行组30中的RAIDL字段24中可以填入表示为17'h1bd00的十六进制数。如图7所示,存储在RAIDL字段中的RAID行组成员组成信息26是互补的并且共同识别出RAID行组20中所包含的闪存页18。实际上,前八个闪存页18(页0至页7)被包含在第一较小RAID行组28中(其中可能发现页5是坏的并且随后被排除),而接下来八个闪存页18被包含在第二较小RAID行组30中(其中页9和页E将从校验/重建计算中被排除)。在此实施例中,第一较小RAID行组28中的一个闪存页(例如,页7)可能必须作为校验页来操作,类似于页P。
现参看图8,SSD可以并入计算机系统32中。计算机系统32可以用于实施本发明的方法。在这种情况下,主要处理可以在处理器34中执行,所述处理器可以是微处理器或任何其他合适的处理装置。程序代码(例如,实施上述算法或方法的代码)以及数据可以存储在随机存取存储器36中。所述存储器36可以是诸如DRAM等本地存储器或大容量存储器,例如,硬盘驱动器、光盘驱动器或其他存储器(其可为本地存储器或远程存储器)。虽然使用单个块在功能上说明了存储器36,但应理解,可以使用一个或多个硬件块来实施该功能。
在一个实施例中,处理器34可以用于实施上述各个(或所有)功能。例如,处理器34可以在不同时间用作特定的功能单元,以便实施在执行本发明的技术时所涉及的子任务。或者,可使用不同硬件块(例如,与处理器34相同或不同)来执行不同功能。在其他实施例中,某些子任务由处理器34来执行,而其他子任务则使用独立的电路来执行。
图4还示出了输入/输出(I/O)38,它可以用于向系统32提供信息。该信息可以包括例如将要存储在SSD10中的视频。I/O38可以包括:用于连接到含因特网等网络的端口,或本地接口(例如,USB或LAN接口)。I/O38还可以包括本地用户操作的I/O装置,例如显示器、键盘、鼠标等。换句话说,提供单个框来表示潜在大量的硬件项目。
SSD10和其他存储器40(例如,HDD、光盘驱动器等)在图中示为连接到与I/O38相同的总线。这只是可以适用的架构的一个实例。为了简明的目的,即使实际系统中包含合适的额外电路,控制电路例如内存控制器或桥接器也从图中省略。
现参看图9,示出了方法42的一个实施例。在方框44中,闪存芯片14中拣选的一些闪存页18组织成RAID行组20。在方框46中,RAID行组成员组成信息26被写入RAID行组20中的每个闪存页18中。如上所述,RAID行组成员组成信息26识别出将要在校验计算和/或损坏的闪存页18的重建过程中被排除的闪存页18。在一个实施例中,闪存控制器12或处理器34执行或协调这些步骤。
使用本文所揭示的灵活的RAID方案、算法或过程,可以承受单个或多个闪存页18故障并且允许SSD10继续适当地运作。此外,当灵活的RAID技术应用于SSD10中的可擦除块16或闪存芯片14时,也可以承受故障并且允许SSD10继续适当地运作。
本发明的实施例提供了许多新的有利特征。例如,该方案的一个特征是使用RAID成员组成信息来指示出RAID行组中的成员,从而允许RAID行灵活地分组。该方案能够承受RAID组中一个或多个成员发生故障的情况,而无需抛弃剩余的好的存储媒介。该方案可以应用于最新的基于NAND闪存的SSD。该方案也可以应用于其他存储媒介,例如基于硬盘驱动器的RAID系统。
本发明的实施例可以用于许多产品、过程和服务中。例如,各实施例可以用于下一代外围部件互连高速(PCIE)SSD中以改善SSD的使用,从而延长SSD的寿命。灵活的成员组成比现有的固定RAID算法更为优越。在许多市场上,包括但不限于在企业存储系统中,灵活的RAID技术是有利的。
如上所述,各实施例具有许多优点。通过使用RAID机制将数据存储在SSD中,单个页的数据损失可以恢复。本文本所描述的灵活的RAID算法的各实施例,提供了一种灵活决定RAID组中成员数量的方法。这样使SSD能够承受RAID中一个或多个成员发生故障的情况并且仍然能够恢复数据。
通过用RAID算法中灵活的成员组成,可以达成优点,使该设计能够承受单个或多个页、块或硅裸片在SSD中发生故障的情况并且仍然能够恢复数据损失。
在基于磁盘驱动器的存储系统中,RAID机制可以用于防止单个磁盘发生故障,例如RAID4或RAID5机制,方法是在RAID组中使用一个校验表项。在一个实施例中,本发明计算和存储RAID成员组成信息及数据,这样当RAID组中的一个装置发生故障时,在数据存储到固态驱动器的情况下,在RAID成员组成信息中可以将该装置跳过。这样,当一个成员随时间推移而发生故障时,可以从RAID组中的其他页中读取RAID成员组成信息,并且RAID组中只有这些成员(其他页)才用于确定由RAID算法进行的恢复。
虽然已参考说明性实施例描述了本发明,但此描述并不旨在限制本发明。所属领域的技术人员在参考该描述后,将会明白说明性实施例的各种修改和组合,以及其他实施例。因此,所附权利要求书意图涵盖任何此类修改或实施例。
Claims (19)
1.一种采用独立磁盘冗余阵列(RAID)方案的存储装置,其包括:
闪存芯片;
可擦除块,所述可擦除块位于所述闪存芯片中,所述可擦除块用于存储一个或多个闪存页;以及
闪存控制器,所述闪存控制器以可操作方式耦接到所述闪存芯片,所述闪存控制器用于将至少两个所述闪存页组织成RAID行组并且将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页,其中每个所述闪存页包括用于存储所述RAID行组成员组成信息的RAID行字段,其中所述RAID行字段用于指示出所述RAID行组中用于校验计算的闪存页。
2.根据权利要求1所述的存储装置,其中所述RAID行字段用于指示出所述RAID行组中用于页重建的闪存页。
3.根据权利要求1所述的存储装置,其中所述RAID行字段用于指示出在校验计算和页重建中至少一个过程中从所述RAID行组中排除的闪存页。
4.根据权利要求1所述的存储装置,其中所述RAID行字段用于重建所述RAID行组中后来的坏闪存页。
5.根据权利要求1所述的存储装置,其中所述RAID行字段存储十六进制数,所述十六进制数用于指示出在校验计算和页重建中至少一个过程中所包含的闪存页。
6.根据权利要求1所述的存储装置,其中所述RAID行字段存储十六进制数,所述十六进制数用于指示出在校验计算和页重建中至少一个过程中被排除的闪存页。
7.根据权利要求1所述的存储装置,其中每个所述闪存页包括逻辑块寻址LBA扇区,所述LBA扇区用于存储数据和元数据中的至少一者。
8.根据权利要求1所述的存储装置,其中所述RAID行组中的所述闪存页中的至少一者是校验块。
9.根据权利要求1所述的存储装置,其中所述闪存控制器用于将所述RAID行组划分成具有互补的RAID行组成员组成信息的较小RAID行组,所述互补的RAID行组成员组成信息共同形成所述RAID行组成员组成信息。
10.根据权利要求9所述的存储装置,其中所述闪存控制器用于从所述RAID行组中排除坏的闪存页。
11.根据权利要求10所述的存储装置,其中所述RAID行组成员组成信息包括十六进制数。
12.根据权利要求11所述的存储装置,其中所述RAID行字段中的所述十六进制数识别出在校验计算和页重建中,被包含在所述RAID行组中的闪存页以及被从所述RAID行组中排除的闪存页。
13.根据权利要求12所述的存储装置,其中所述RAID行字段中的所述十六进制数用于重建在所述RAID行组中的所述闪存页的读取操作过程中发现的所述RAID行组中的一个故障的闪存页。
14.根据权利要求10所述的存储装置,其中所述RAID行组中的所述闪存页中的至少一者是校验块。
15.一种在固态驱动器(SSD)中使用独立磁盘冗余阵列(RAID)方案的方法,所述方法包括:
将闪存芯片中的闪存页组织成RAID行组;以及将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页,在校验计算和页重建中的至少一个过程中,所述RAID行组信息识别出将要被排除的闪存页,其中所述RAID行组成员组成信息存储于RAID行字段,所述RAID行字段用于指示出所述RAID行组中用于校验计算的闪存页。
16.根据权利要求15所述的方法,其进一步包括:使用所述RAID行组成员组成信息来重建所述RAID行组中的损坏的闪存页。
17.根据权利要求16所述的方法,其中将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页包括:写入所述RAID行组中的每个所述闪存页中的RAID行字段。
18.根据权利要求16所述的方法,其中将RAID行组成员组成信息写入所述RAID行组中的每个所述闪存页包括:将十六进制数写入所述RAID行组中的每个所述闪存页中的RAID行字段。
19.根据权利要求18所述的方法,其进一步包括使用所述十六进制数来识别出在所述RAID行组中的闪存页以及从所述RAID行组中排除的闪存页。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161523251P | 2011-08-12 | 2011-08-12 | |
USUS61/523,251 | 2011-08-12 | ||
US61/523,251 | 2011-08-12 | ||
US13/460,686 US9424128B2 (en) | 2011-08-12 | 2012-04-30 | Method and apparatus for flexible RAID in SSD |
US13/460,686 | 2012-04-30 | ||
USUS13/460,686 | 2012-04-30 | ||
PCT/CN2012/080038 WO2013023564A1 (en) | 2011-08-12 | 2012-08-13 | Method and apparatus for flexible raid in ssd |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103718162A CN103718162A (zh) | 2014-04-09 |
CN103718162B true CN103718162B (zh) | 2017-09-19 |
Family
ID=47678261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280038141.1A Active CN103718162B (zh) | 2011-08-12 | 2012-08-13 | 用于ssd中灵活的raid的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (5) | US9424128B2 (zh) |
EP (1) | EP2732373B1 (zh) |
CN (1) | CN103718162B (zh) |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101949671B1 (ko) * | 2012-06-28 | 2019-04-25 | 삼성전자 주식회사 | 라이프 싸이클을 증가시킬 수 있는 저장 장치 및 그 동작 방법 |
US9478271B2 (en) * | 2013-03-14 | 2016-10-25 | Seagate Technology Llc | Nonvolatile memory data recovery after power failure |
US9424131B2 (en) | 2013-09-19 | 2016-08-23 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Spatially decoupled redundancy schemes for a solid state drive (SSD) |
US9405480B2 (en) | 2014-01-13 | 2016-08-02 | Seagate Technology Llc | Interleaving codewords over multiple flash planes |
US9933980B2 (en) | 2014-02-24 | 2018-04-03 | Toshiba Memory Corporation | NAND raid controller for connection between an SSD controller and multiple non-volatile storage units |
JP6385077B2 (ja) | 2014-03-05 | 2018-09-05 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
WO2016001962A1 (ja) * | 2014-06-30 | 2016-01-07 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
US9811413B2 (en) * | 2014-07-30 | 2017-11-07 | Apple Inc. | Orphan block management in non-volatile memory devices |
CN105468998B (zh) * | 2014-09-03 | 2019-01-29 | 腾讯科技(深圳)有限公司 | 数据保护方法、数据保护装置以及固态硬盘存储系统 |
US9529672B2 (en) * | 2014-09-25 | 2016-12-27 | Everspin Technologies Inc. | ECC word configuration for system-level ECC compatibility |
CN104268031B (zh) * | 2014-09-28 | 2017-07-21 | 安徽中科大国祯信息科技有限责任公司 | 一种用于磁盘阵列存储系统中固态硬盘的擦除码配置方法 |
TWI556254B (zh) * | 2014-10-14 | 2016-11-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其資料存取方法 |
KR102177421B1 (ko) | 2014-10-15 | 2020-11-11 | 삼성전자주식회사 | 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 |
CN104461383B (zh) * | 2014-11-28 | 2017-10-10 | 华为技术有限公司 | 一种独立磁盘冗余阵列的实现方法及装置 |
US9558065B2 (en) | 2015-02-02 | 2017-01-31 | Kabushiki Kaisha Toshiba | Memory system including cache |
TWI560718B (en) * | 2015-03-27 | 2016-12-01 | Silicon Motion Inc | Data storage device and encoding method thereof |
WO2017095911A1 (en) * | 2015-12-01 | 2017-06-08 | Huang Yiren Ronnie | Method and apparatus for logically removing defective pages in non-volatile memory storage device |
US9880913B2 (en) * | 2015-12-14 | 2018-01-30 | International Business Machines Corporation | Storing data in multi-region storage devices |
US9569306B1 (en) * | 2015-12-18 | 2017-02-14 | International Business Machines Corporation | Recovery of multi-page failures in non-volatile memory system |
US9984771B2 (en) | 2016-01-11 | 2018-05-29 | Sandisk Technologies Llc | Multi-level raid-type encoding with random correction capability |
US9940194B2 (en) | 2016-03-04 | 2018-04-10 | Sandisk Technologies Llc | ECC decoding using raid-type parity |
US10536172B2 (en) | 2016-03-04 | 2020-01-14 | Western Digital Technologies, Inc. | ECC and raid-type decoding |
US9959168B2 (en) | 2016-03-04 | 2018-05-01 | Sandisk Technologies Llc | ECC and RAID-type decoding |
US10198313B2 (en) | 2016-03-11 | 2019-02-05 | Western Digital Technologies, Inc. | Redundancy of error correction encoded data in a storage system |
CN106158032A (zh) * | 2016-06-30 | 2016-11-23 | 深圳市航顺芯片技术研发有限公司 | 用于eeprom存储器的擦除和写入电路及其方法 |
US10346268B2 (en) * | 2016-07-21 | 2019-07-09 | SK Hynix Inc. | Efficient data recovery for write path errors |
JP2018073312A (ja) * | 2016-11-04 | 2018-05-10 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US11221958B2 (en) | 2017-08-29 | 2022-01-11 | Samsung Electronics Co., Ltd. | System and method for LBA-based RAID |
US10776202B1 (en) * | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
CN107678690A (zh) * | 2017-09-29 | 2018-02-09 | 山东超越数控电子有限公司 | 一种固态硬盘及其冗余独立磁盘阵列的实现方法 |
US10817392B1 (en) * | 2017-11-01 | 2020-10-27 | Pure Storage, Inc. | Ensuring resiliency to storage device failures in a storage system that includes a plurality of storage devices |
US10838805B2 (en) * | 2018-02-23 | 2020-11-17 | Micron Technology, Inc. | Generating parity data based on a characteristic of a stream of data |
CN108647152A (zh) * | 2018-04-27 | 2018-10-12 | 江苏华存电子科技有限公司 | 一种提升闪存存储装置中以数据数组保护数据的管理方法 |
US11531590B2 (en) * | 2019-09-17 | 2022-12-20 | Western Digital Technologies, Inc. | Method and system for host-assisted data recovery assurance for data center storage device architectures |
US11561871B2 (en) * | 2019-12-18 | 2023-01-24 | GRAID Technology Inc. | Data transmission and protection system and method thereof |
CN112130762B (zh) * | 2020-09-07 | 2024-01-26 | 上海威固信息技术股份有限公司 | 一种固态硬盘数据存储与操作方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
WO2009067467A2 (en) * | 2007-11-19 | 2009-05-28 | Teknic, Inc. | Method and apparatus for protection of ac-dc power converters |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3893005B2 (ja) * | 2000-01-06 | 2007-03-14 | 富士通株式会社 | 不揮発性半導体記憶装置 |
US6952797B1 (en) * | 2000-10-25 | 2005-10-04 | Andy Kahn | Block-appended checksums |
US20110179219A1 (en) | 2004-04-05 | 2011-07-21 | Super Talent Electronics, Inc. | Hybrid storage device |
US8452929B2 (en) | 2005-04-21 | 2013-05-28 | Violin Memory Inc. | Method and system for storage of data in non-volatile media |
US7721146B2 (en) | 2006-05-04 | 2010-05-18 | Dell Products L.P. | Method and system for bad block management in RAID arrays |
US8122319B2 (en) * | 2007-01-24 | 2012-02-21 | Charles I. Peddle | Page-based failure management for flash memory |
JP2008204041A (ja) * | 2007-02-19 | 2008-09-04 | Hitachi Ltd | ストレージ装置及びデータ配置制御方法 |
JP2008287404A (ja) * | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
JP2009265920A (ja) * | 2008-04-24 | 2009-11-12 | Hitachi Ltd | 情報処理装置、データ書込み方法及びプログラム |
KR20100012468A (ko) | 2008-07-29 | 2010-02-08 | 주식회사 하이닉스반도체 | 고속 동작하는 반도체 스토리지 시스템 |
KR20100012938A (ko) | 2008-07-30 | 2010-02-09 | 주식회사 하이닉스반도체 | 웨어 레벨링을 수행하는 반도체 스토리지 시스템 및 그제어 방법 |
CN201237907Y (zh) | 2008-08-11 | 2009-05-13 | 湖南源科创新科技股份有限公司 | 单盘结构的固态raid系统 |
US8756369B2 (en) | 2008-09-26 | 2014-06-17 | Netapp, Inc. | Priority command queues for low latency solid state drives |
US8645749B2 (en) * | 2009-02-04 | 2014-02-04 | Micron Technology, Inc. | Systems and methods for storing and recovering controller data in non-volatile memory devices |
US7975193B2 (en) | 2009-06-01 | 2011-07-05 | Lsi Corporation | Solid state storage end of life prediction with correction history |
WO2010144587A2 (en) | 2009-06-12 | 2010-12-16 | Violin Memory, Inc. | Memory system having persistent garbage collection |
US8468292B2 (en) | 2009-07-13 | 2013-06-18 | Compellent Technologies | Solid state drive data storage system and method |
US20110047316A1 (en) | 2009-08-19 | 2011-02-24 | Dell Products L.P. | Solid state memory device power optimization |
US8489966B2 (en) | 2010-01-08 | 2013-07-16 | Ocz Technology Group Inc. | Solid-state mass storage device and method for failure anticipation |
US8488377B2 (en) | 2009-11-11 | 2013-07-16 | Ocz Technology Group Inc. | Mass storage device with solid-state memory components capable of increased endurance |
US8495471B2 (en) | 2009-11-30 | 2013-07-23 | International Business Machines Corporation | Solid-state storage system with parallel access of multiple flash/PCM devices |
KR101678868B1 (ko) * | 2010-02-11 | 2016-11-23 | 삼성전자주식회사 | 플래시 주소 변환 장치 및 그 방법 |
JP5521716B2 (ja) * | 2010-04-06 | 2014-06-18 | 富士通株式会社 | ストレージ制御プログラム、ストレージ制御方法およびストレージ制御装置 |
US9244769B2 (en) * | 2010-09-28 | 2016-01-26 | Pure Storage, Inc. | Offset protection data in a RAID array |
US8677167B2 (en) * | 2010-10-18 | 2014-03-18 | Hitachi, Ltd. | Storage apparatus and power control method |
CN103384877B (zh) * | 2011-06-07 | 2016-03-23 | 株式会社日立制作所 | 包括闪存的存储系统和存储控制方法 |
US11474704B2 (en) * | 2012-05-18 | 2022-10-18 | Atto Technology, Inc. | Target path selection for storage controllers |
-
2012
- 2012-04-30 US US13/460,686 patent/US9424128B2/en active Active
- 2012-08-13 CN CN201280038141.1A patent/CN103718162B/zh active Active
- 2012-08-13 EP EP12823604.9A patent/EP2732373B1/en active Active
-
2016
- 2016-07-07 US US15/204,308 patent/US10198197B2/en active Active
-
2019
- 2019-01-09 US US16/243,651 patent/US10795590B2/en active Active
-
2020
- 2020-10-05 US US17/063,385 patent/US11507281B2/en active Active
-
2022
- 2022-11-09 US US17/983,685 patent/US11941257B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
WO2009067467A2 (en) * | 2007-11-19 | 2009-05-28 | Teknic, Inc. | Method and apparatus for protection of ac-dc power converters |
Also Published As
Publication number | Publication date |
---|---|
US11507281B2 (en) | 2022-11-22 |
US20160320991A1 (en) | 2016-11-03 |
US10795590B2 (en) | 2020-10-06 |
US10198197B2 (en) | 2019-02-05 |
EP2732373A1 (en) | 2014-05-21 |
US20130042053A1 (en) | 2013-02-14 |
EP2732373B1 (en) | 2022-04-13 |
CN103718162A (zh) | 2014-04-09 |
US9424128B2 (en) | 2016-08-23 |
US20230064570A1 (en) | 2023-03-02 |
US11941257B2 (en) | 2024-03-26 |
US20190146691A1 (en) | 2019-05-16 |
US20210019060A1 (en) | 2021-01-21 |
EP2732373A4 (en) | 2014-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103718162B (zh) | 用于ssd中灵活的raid的方法和设备 | |
US10210045B1 (en) | Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system | |
US9430329B2 (en) | Data integrity management in a data storage device | |
US8977894B2 (en) | Operating a data storage system | |
CN102708019B (zh) | 一种硬盘数据恢复方法、装置及系统 | |
CN104035830B (zh) | 一种数据恢复方法和装置 | |
KR101405741B1 (ko) | 스트라이프-기반 비-휘발성 멀티레벨 메모리 동작 | |
US8839028B1 (en) | Managing data availability in storage systems | |
US11531590B2 (en) | Method and system for host-assisted data recovery assurance for data center storage device architectures | |
US20110029728A1 (en) | Methods and apparatus for reducing input/output operations in a raid storage system | |
CN101916173B (zh) | 一种基于raid的数据读写方法及其系统 | |
CN103577111B (zh) | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 | |
US20120254694A1 (en) | Redundant storage in non-volatile memory by storing redundancy information in volatile memory | |
CN101840360A (zh) | Raid系统的快速重建方法及装置 | |
CN103336727B (zh) | 对nand闪存存储设备进行数据操作的方法 | |
CN103631670B (zh) | 存储器储存装置、存储器控制器与数据处理方法 | |
CN107885620B (zh) | 一种提高固态盘阵列性能和可靠性的方法及系统 | |
TW201329701A (zh) | 具有自動重映射功能的磁碟陣列及其自動重映射方法 | |
US7174476B2 (en) | Methods and structure for improved fault tolerance during initialization of a RAID logical unit | |
US8214589B2 (en) | Data storage system redundancy scheme verification | |
WO2013023564A9 (en) | Method and apparatus for flexible raid in ssd | |
US11150988B1 (en) | Metadata pattern to detect write loss/inconsistencies of optimized-write-once operations | |
US9471429B2 (en) | Scalable protection scheme for protecting destaged data units | |
JP2018163450A (ja) | データ記憶制御装置、データ記憶システム、データ記憶方法およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |