Many data storage components such as hard disks and solid state drives have certain advertised reliability guarantees that the manufacturers provide to customers. For example, certain solid state drive manufacturers guarantee a drive failure rate of 10−16 or 10−17. To increase data reliability, a data redundancy scheme such as RAID (Redundant Arrays of Independent Disks) is used to increase storage reliability. The redundancy may be provided by combining multiple storage elements within the storage device into groups providing mirroring and/or error checking mechanisms. For example, various memory pages/blocks of a solid state storage device may be combined into data stripes in which user data is stored.
Systems and methods which embody the various features of the invention will now be described with reference to the following drawings, in which:
Overview
A common approach to overcome storage element failure is to use redundant RAID (mirroring, parity, etc.) to allow data recovery should one or more failures (e.g., a read failure) occur. Typically, a target number of storage elements (e.g., pages, blocks, etc.) per stripe is chosen to achieve a desired reliability at a given cost in storage overhead. In a flash-based/solid-state storage system, parity data is usually held in a temporary volatile memory such as RAM (Random Access Memory) and such parity data for a stripe is typically written to the non-volatile flash media when the full stripe's worth of data has been written to the non-volatile flash media. However, there are situations when the yet-to-be written parity may be needed for data recovery.
Various embodiments of the invention determine when it is appropriate to force a write of the yet-to-be written parity data associated with a partial stripe. In one embodiment, upon the detection of a data access error (e.g., a read or program error) on data in the partial stripe, the system triggers a write of the parity data to the flash media and initiates a data recovery procedure using the newly written parity. This approach allows the system to recover from a data access error without having to wait for a full stripe of data to be written to the flash media.
System Overview
The controller 150 in one embodiment in turn includes a RAID module 158 and a volatile memory 164, which may be implemented in, for example, RAM such as a DRAM or SRAM. The controller may alternatively be implemented in-whole or in-part as an ASIC, FPGA, or other device, which may but need not execute firmware. In another embodiment the volatile memory 164 is outside of the controller 150 in the storage subsystem 140. In one embodiment, the RAID module 158 is configured to execute data access commands to maintain a data redundancy scheme in the storage subsystem. For example, the RAID module 158 may maintain data on which storage elements are assigned to which RAID stripes and determine how data are arranged in the data redundancy scheme (e.g., grouped into stripes with parity).
In one embodiment, the controller 150 of the storage subsystem 140 is configured to receive and execute commands from a storage interface 132 in a host system 130. The memory commands from the storage interface 132 may include write and read commands issued by the host system 130. As further shown in
Although this disclosure uses RAID as an example, the systems and methods described herein are not limited to the RAID redundancy schemes and can be used in any data redundancy configuration that utilizes striping and/or grouping of storage elements for mirroring or error checking purposes. In addition, although RAID is an acronym for Redundant Array of Independent Disks, those skilled in art will appreciate that RAID is not limited to storage devices with physical disks and is applicable to a wide variety of storage devices including the non-volatile solid state devices described herein.
Partial Parity Writing Process
Partial Stripe with Forced Parity Write Example
While certain embodiments of the inventions have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms. Furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions. The features and attributes of the specific embodiments disclosed above may be combined in different ways to form additional embodiments, all of which fall within the scope of the present disclosure. Although the present disclosure provides certain preferred embodiments and applications, other embodiments that are apparent to those of ordinary skill in the art, including embodiments which do not provide all of the features and advantages set forth herein, are also within the scope of this disclosure. Accordingly, the scope of the present disclosure is intended to be defined only by reference to the appended claims.
This application is a continuation of U.S. application Ser. No. 13/025,980, filed on Feb. 11, 2011 and titled “SYSTEM AND METHOD FOR DATA ERROR RECOVERY IN A SOLID STATE SUBSYSTEM,” the disclosure of which is hereby incorporated by reference in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5408644 | Schneider et al. | Apr 1995 | A |
5499337 | Gordon | Mar 1996 | A |
6467022 | Buckland et al. | Oct 2002 | B1 |
6523087 | Busser | Feb 2003 | B2 |
6856556 | Hajeck | Feb 2005 | B1 |
6959413 | Humlicek et al. | Oct 2005 | B2 |
7069382 | Horn et al. | Jun 2006 | B2 |
7126857 | Hajeck | Oct 2006 | B2 |
7200715 | Kleiman et al. | Apr 2007 | B2 |
7409492 | Tanaka et al. | Aug 2008 | B2 |
7430136 | Merry, Jr. et al. | Sep 2008 | B2 |
7447807 | Merry et al. | Nov 2008 | B1 |
7502256 | Merry, Jr. et al. | Mar 2009 | B2 |
7509441 | Merry et al. | Mar 2009 | B1 |
7596643 | Merry, Jr. et al. | Sep 2009 | B2 |
7640390 | Iwamura et al. | Dec 2009 | B2 |
7653778 | Merry, Jr. et al. | Jan 2010 | B2 |
7685337 | Merry, Jr. et al. | Mar 2010 | B2 |
7685338 | Merry, Jr. et al. | Mar 2010 | B2 |
7685374 | Diggs et al. | Mar 2010 | B2 |
7733712 | Walston et al. | Jun 2010 | B1 |
7765373 | Merry et al. | Jul 2010 | B1 |
7779294 | Corrado et al. | Aug 2010 | B2 |
7856528 | Frost et al. | Dec 2010 | B1 |
7898855 | Merry, Jr. et al. | Mar 2011 | B2 |
7912991 | Merry et al. | Mar 2011 | B1 |
7936603 | Merry, Jr. et al. | May 2011 | B2 |
7962792 | Diggs et al. | Jun 2011 | B2 |
8078918 | Diggs et al. | Dec 2011 | B2 |
8090899 | Syu | Jan 2012 | B1 |
8095851 | Diggs et al. | Jan 2012 | B2 |
8108692 | Merry et al. | Jan 2012 | B1 |
8122185 | Merry, Jr. et al. | Feb 2012 | B2 |
8127048 | Merry et al. | Feb 2012 | B1 |
8135903 | Kan | Mar 2012 | B1 |
8151020 | Merry, Jr. et al. | Apr 2012 | B2 |
8161227 | Diggs et al. | Apr 2012 | B1 |
8166245 | Diggs et al. | Apr 2012 | B2 |
8243525 | Kan | Aug 2012 | B1 |
8254172 | Kan | Aug 2012 | B1 |
8261012 | Kan | Sep 2012 | B2 |
8296625 | Diggs et al. | Oct 2012 | B2 |
8312207 | Merry, Jr. et al. | Nov 2012 | B2 |
8316176 | Phan et al. | Nov 2012 | B1 |
8321597 | Yu et al. | Nov 2012 | B2 |
8341339 | Boyle et al. | Dec 2012 | B1 |
8375151 | Kan | Feb 2013 | B1 |
8392635 | Booth et al. | Mar 2013 | B2 |
8397107 | Syu et al. | Mar 2013 | B1 |
8402217 | Burd | Mar 2013 | B2 |
8407449 | Colon et al. | Mar 2013 | B1 |
8423722 | Deforest et al. | Apr 2013 | B1 |
8433858 | Diggs et al. | Apr 2013 | B1 |
8443167 | Fallone et al. | May 2013 | B1 |
8447920 | Syu | May 2013 | B1 |
8458435 | Rainey, III et al. | Jun 2013 | B1 |
8478930 | Syu | Jul 2013 | B1 |
8489854 | Colon et al. | Jul 2013 | B1 |
8503237 | Horn | Aug 2013 | B1 |
8521972 | Boyle et al. | Aug 2013 | B1 |
8549236 | Diggs et al. | Oct 2013 | B2 |
8583835 | Kan | Nov 2013 | B1 |
8601311 | Horn | Dec 2013 | B2 |
8601313 | Horn | Dec 2013 | B1 |
8612669 | Syu et al. | Dec 2013 | B1 |
8612804 | Kang et al. | Dec 2013 | B1 |
8615681 | Horn | Dec 2013 | B2 |
8638602 | Horn | Jan 2014 | B1 |
8639872 | Boyle et al. | Jan 2014 | B1 |
8683113 | Abasto et al. | Mar 2014 | B2 |
8700834 | Horn et al. | Apr 2014 | B2 |
8700950 | Syu | Apr 2014 | B1 |
8700951 | Call et al. | Apr 2014 | B1 |
8706985 | Boyle et al. | Apr 2014 | B1 |
8707104 | Jean | Apr 2014 | B1 |
8713066 | Lo et al. | Apr 2014 | B1 |
8713357 | Jean et al. | Apr 2014 | B1 |
8719531 | Strange et al. | May 2014 | B2 |
8724422 | Agness et al. | May 2014 | B1 |
8725931 | Kang | May 2014 | B1 |
8745277 | Kan | Jun 2014 | B2 |
8751728 | Syu et al. | Jun 2014 | B1 |
8769190 | Syu et al. | Jul 2014 | B1 |
8769232 | Suryabudi et al. | Jul 2014 | B2 |
8775720 | Meyer et al. | Jul 2014 | B1 |
8782327 | Kang et al. | Jul 2014 | B1 |
8788778 | Boyle | Jul 2014 | B1 |
8788779 | Horn | Jul 2014 | B1 |
8788880 | Gosla et al. | Jul 2014 | B1 |
8793429 | Call et al. | Jul 2014 | B1 |
20040015657 | Humlicek et al. | Jan 2004 | A1 |
20040123032 | Talagala et al. | Jun 2004 | A1 |
20050066124 | Horn et al. | Mar 2005 | A1 |
20050086429 | Chatterjee et al. | Apr 2005 | A1 |
20050177672 | Rao | Aug 2005 | A1 |
20060004957 | Hand et al. | Jan 2006 | A1 |
20060236029 | Corrado et al. | Oct 2006 | A1 |
20070268905 | Baker et al. | Nov 2007 | A1 |
20070283079 | Iwamura et al. | Dec 2007 | A1 |
20070294565 | Johnston et al. | Dec 2007 | A1 |
20070297265 | Kim et al. | Dec 2007 | A1 |
20080133969 | Manoj | Jun 2008 | A1 |
20080141054 | Danilak | Jun 2008 | A1 |
20080155160 | McDaniel | Jun 2008 | A1 |
20080229148 | Forhan et al. | Sep 2008 | A1 |
20080276124 | Hetzler et al. | Nov 2008 | A1 |
20090073762 | Lee et al. | Mar 2009 | A1 |
20090083504 | Belluomini et al. | Mar 2009 | A1 |
20090150599 | Bennett | Jun 2009 | A1 |
20090172335 | Kulkarni et al. | Jul 2009 | A1 |
20090204852 | Diggs et al. | Aug 2009 | A1 |
20090210744 | Kamalavannan | Aug 2009 | A1 |
20090248998 | Sato et al. | Oct 2009 | A1 |
20090327604 | Sato et al. | Dec 2009 | A1 |
20090327803 | Fukutomi et al. | Dec 2009 | A1 |
20100049914 | Goodwin | Feb 2010 | A1 |
20100064111 | Kunimatsu et al. | Mar 2010 | A1 |
20100088557 | Weingarten et al. | Apr 2010 | A1 |
20100088579 | Hafner et al. | Apr 2010 | A1 |
20100115175 | Zhuang et al. | May 2010 | A9 |
20100122115 | Olster | May 2010 | A1 |
20100169543 | Edgington et al. | Jul 2010 | A1 |
20100174849 | Walston et al. | Jul 2010 | A1 |
20100250793 | Syu | Sep 2010 | A1 |
20100262773 | Borchers et al. | Oct 2010 | A1 |
20100281202 | Abali et al. | Nov 2010 | A1 |
20110035548 | Kimmel et al. | Feb 2011 | A1 |
20110099323 | Syu | Apr 2011 | A1 |
20110126045 | Bennett | May 2011 | A1 |
20110173484 | Schuette et al. | Jul 2011 | A1 |
20110191649 | Lim et al. | Aug 2011 | A1 |
20110202792 | Atzmony | Aug 2011 | A1 |
20110219259 | Frost et al. | Sep 2011 | A1 |
20110264843 | Haines et al. | Oct 2011 | A1 |
20110283049 | Kang et al. | Nov 2011 | A1 |
20110314218 | Bert | Dec 2011 | A1 |
20120079318 | Colgrove et al. | Mar 2012 | A1 |
20120110376 | Dreifus et al. | May 2012 | A1 |
20120151253 | Horn | Jun 2012 | A1 |
20120173790 | Hetzler et al. | Jul 2012 | A1 |
20120233406 | Igashira et al. | Sep 2012 | A1 |
20120246403 | McHale et al. | Sep 2012 | A1 |
20120260020 | Suryabudi et al. | Oct 2012 | A1 |
20120278531 | Horn | Nov 2012 | A1 |
20120284460 | Guda | Nov 2012 | A1 |
20120324191 | Strange et al. | Dec 2012 | A1 |
20130132638 | Horn et al. | May 2013 | A1 |
20130145106 | Kan | Jun 2013 | A1 |
20130290793 | Booth et al. | Oct 2013 | A1 |
20140059405 | Syu et al. | Feb 2014 | A1 |
20140101369 | Tomlin et al. | Apr 2014 | A1 |
20140115427 | Lu | Apr 2014 | A1 |
20140133220 | Danilak et al. | May 2014 | A1 |
20140136753 | Tomlin et al. | May 2014 | A1 |
20140149826 | Lu et al. | May 2014 | A1 |
20140157078 | Danilak et al. | Jun 2014 | A1 |
20140181432 | Horn | Jun 2014 | A1 |
20140223255 | Lu et al. | Aug 2014 | A1 |
Number | Date | Country |
---|---|---|
WO 2010049928 | May 2010 | WO |
Entry |
---|
Notice of Allowance dated Nov. 29, 2013 from U.S. Appl. No. 13/025,980, 7 pages. |
Office Action dated May 21, 2013 from U.S. Appl. No. 13/025,980, 12 pages. |
Interview Summary dated Sep. 26, 2013 from U.S. Appl. No. 13/025,980, 3 pages. |
Number | Date | Country | |
---|---|---|---|
Parent | 13025980 | Feb 2011 | US |
Child | 14216295 | US |