US9547554B2 - Mass storage device and method of operating the same to store parity data - Google Patents
Mass storage device and method of operating the same to store parity data Download PDFInfo
- Publication number
- US9547554B2 US9547554B2 US14/210,009 US201414210009A US9547554B2 US 9547554 B2 US9547554 B2 US 9547554B2 US 201414210009 A US201414210009 A US 201414210009A US 9547554 B2 US9547554 B2 US 9547554B2
- Authority
- US
- United States
- Prior art keywords
- data
- blades
- parity
- blade
- parity data
- 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, expires
Links
- 238000000034 method Methods 0.000 title claims description 50
- 238000011084 recovery Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 4
- 238000013507 mapping Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
Images
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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1083—Reserve area on a disk of a RAID system
Definitions
- the present invention relates, generally, to mass storage devices and, more particularly, to methods of storing and recovering redundant data, and systems implementing the methods.
- Mass storage systems are used to store large amounts of data. Important parameters of such devices include speed and reliability.
- the systems preferably operate without error for long uninterrupted periods of time. To accomplish this, the systems store system data in addition to user data.
- the system data may be used to recover user data which is lost because of, for example, a power failure or a hardware failure.
- RAID redundant array of independent disks
- RAID technology uses multiple memory components to form a single logical memory storage unit. The stored data is distributed among the memory components, and includes the system data for data recovery. Depending upon what level of RAID technology is used, the system may be able to recover from multiple errors. For example, RAID technology allows for recovery from multiple errors. For example, RAID6 technology allows for recovery from two errors.
- One implementation is a mass storage device, including a plurality of blades, where two of the blades are configured to store parity data and the other blades are configured to store data written to the device.
- the device also includes a controller configured to write data to the blades along stripes extending from the other blades to the two blades, and to write parity data to the two blades, where the parity data within a stripe is based on the data written to the other blades in the stripe, and where the parity data includes two types of parity data.
- the device includes a plurality of blades, where two of the blades are configured to store parity data and the other blades are configured to store data written to the device.
- the device also includes a controller configured to write data to the blades along stripes extending from the other blades to the two blades, and to write parity data to the two blades.
- the parity data within a stripe is based on the data written to the other blades in the stripe, and where the parity data includes two types of parity data.
- Another inventive aspect is a method of writing data to a mass storage device having a plurality of blades, where each blade includes a plurality of pages.
- the method includes receiving data to be stored, writing data corresponding to the received data along a stripe of the mass storage device to a first subset of the blades, and calculating first and second types of parity data, where the parity data is calculated based on the written data.
- the method also includes writing the first and second types of calculated parity data along the stripe to a second subset of the blades.
- Another inventive aspect is a method of operating a mass storage device having a plurality of blades.
- the method includes receiving an indication that one of the blades has failed, receiving an instruction to access data located on the failed blade, recovering data of the failed blade, and executing the instruction using the recovered data.
- Another inventive aspect is a method of operating a mass storage device having a plurality of blades and a controller.
- the method includes the controller operating the device with all of the blades, the controller receiving an indication that one of the blades has failed, and the controller operating the device with the non-failing blades.
- the method also includes the controller receiving an indication that the failed blade has been replaced, and the controller operating the device with all of the blades.
- Another inventive aspect is a method of operating a mass storage device having a plurality of blades.
- the method includes determining an age of the device, and selecting an error recovery method based on the age of the device, where in the selected error recovery method is selected from the group consisting of ECC, RAID, and bad column mapping.
- Another inventive aspect is a method of operating a mass storage device having a plurality of blades.
- the method includes operating the device with all of the blades, receiving an indication that one of the blades is at least partially unavailable, operating the device with the available blades, and recovering data of the unavailable blade based on data stored in the available blades.
- FIG. 1 is a block diagram illustrating a mass storage device.
- FIG. 2 is a schematic diagram illustrating a single die.
- FIG. 3 is a flowchart diagram illustrating an implementation of a method of writing data to a mass storage device.
- FIG. 4 is a flowchart diagram illustrating an implementation of a method of recovering data in a mass storage device.
- FIG. 1 is a block diagram illustrating a mass storage device 100 .
- the mass storage device 100 includes SLC (single level cell) NAND flash memory technology.
- the device 100 may additionally or alternatively include one or more of MLC (multilevel cell), NOR, PCM, Spin-Torque, MRAM, Memsistors, or other technologies.
- the mass storage device 100 includes multiple blades 110 , where each of the blades 110 includes a controller 150 and multiple memory hardware devices 120 .
- memory hardware devices 120 are located on both front and back surfaces of each of the blades 110 .
- the mass storage device 100 may also include a system controller (not shown) configured to cause the mass storage device 100 to perform the operations and actions described herein.
- the mass storage device 100 may include 24 blades 110 , and each of the blades 110 may include 32 memory hardware devices 120 .
- Each of the memory hardware devices 120 may include 64 GB of storage capacity.
- each of the blades 110 has 2 TB of memory storage capacity
- the mass storage device 100 has 48 TB of memory storage capacity.
- the mass storage device 100 also includes a controller 150 , which is configured to control the read, write, and erase operations of the mass storage device 100 .
- the number of blades 110 , the number of memory hardware devices 120 on each blade 110 , and/or the amount of storage capacity included in each of the memory hardware devices 120 may be different.
- each of the memory hardware devices 120 includes multiple die.
- each of the memory hardware devices 120 may include four die.
- FIG. 2 is a schematic diagram illustrating a single die 200 .
- the die 200 includes two planes 210 , where each of the planes includes multiple blocks 220 , and each of the blocks 220 includes multiple pages 230 .
- each of the pages 230 includes multiple memory cell locations.
- each of the pages 230 may include 128K bits (or memory cell locations).
- each of the blocks may include 256 pages 230
- each of the planes 210 may include 2 11 blocks 220 .
- Such a die has a storage capacity of 16 GB.
- the number of planes 210 , the number of blocks 220 in each plane 210 , and/or the number of pages 230 in each block 220 may be different.
- the planes 210 can be separately and simultaneously written, read, and erased. For some memory technologies, each time data is written to or read from the die, an entire page is written or read. For some memory technologies, each time data is erased an entire block of data is erased.
- data written to the mass storage device 100 is written in stripes.
- a stripe includes one or more pages 230 from each of multiple blades 110 .
- each stripe includes one or more pages 230 from all of the blades 110 .
- a stripe may include one page 230 from each plane 210 of one or more die 200 of each memory hardware device 120 on each of the blades 110 .
- data may be written to n ⁇ 2 of the blades along one of the stripes, and parity data based on the data written to the n ⁇ 2 blades may be written along the stripe in the last 2 blades.
- the parity data is written to the last 2 blades such that each bit of each page of the last 2 blades corresponds with the parity data of a set of corresponding bits of corresponding pages of the data written to the n ⁇ 2 blades, where each set of corresponding bits includes one bit per blade.
- one of the last 2 blades receives parity data of a first type and the other of the last 2 blades receives parity data of a second type.
- Various types of parity data may be used. For example, xor of the data written to the n ⁇ 2 blades, and Reed Solomon parity data or square of xor parity data may be used.
- the parity data for a stripe is calculated as each page or other portion of the stripe is written.
- the parity data for the data of the stripe in the n ⁇ 2 blades may be calculated after the data is written to the n ⁇ 2 blades.
- the last 2 blades are not always the same 2 blades. Instead, which two blades are used for parity information changes. For example, a first two blades may be assigned for use as parity data storage for a first stripe, and a second two blades may be assigned for use as a data storage for a second stripe. This may be advantageous at least because the parity information is not read during normal operation, and distributing the parity data among all of the blades balances the read load across the blades.
- the controller 150 on each of the blades 110 is configured to perform an error correction function.
- Each controller 150 is configured to detect, and attempt to correct data errors which have occurred on the blade 110 associated therewith. If an error has occurred which cannot be corrected by a controller 150 , the mass storage device 100 may correct the error using the parity data stored in the last 2 blades 110 of the device 100 . If a single error has occurred, the parity data of one of the 2 types of parity data, for example, the xor parity data, may be used to correct the error. If two errors have occurred, the parity data of both of the 2 types of parity data may be used to correct the errors.
- data may be written to n ⁇ m of the blades along one of the stripes, and parity data based on the data written to the n ⁇ m blades may be written along the stripe in the last m blades, where m is three or more, such as RAID7 or RAID8 technology.
- the parity data is written to the last m blades such that each bit of each page of the last m blades corresponds with the parity data of a set of corresponding bits of corresponding pages of the data written to the n ⁇ m blades, where each set of corresponding bits includes one bit per blade.
- each of the last m blades receives parity data of a different type.
- one or more of the last m blades receives parity data which is the same type as the parity data received by one or more others of the last m blades.
- parity data may be used. For example, xor of the data written to the n ⁇ m blades, and Reed Solomon parity data or square of xor parity data may be used.
- the parity data for a stripe is calculated as each page or other portion of the stripe is written.
- the parity data for the data of the stripe in the n ⁇ m blades may be calculated after the data is written to the n ⁇ m blades.
- the last m blades are not always the same m blades. Instead, which blades are used for parity information changes. For example, a first m blades may be assigned for use as parity data storage for a first stripe, and a second m blades may be assigned for use as a data storage for a second stripe. This may be advantageous at least because the parity information is not read during normal operation, and distributing the parity data among all of the blades balances the read load across the blades.
- the mass storage device 100 may correct the error using the parity data stored in the last m blades 110 of the device 100 . If a single error has occurred, the parity data of one of the m types of parity data, for example, the xor parity data, may be used to correct the error. Likewise, if two or more errors have occurred, the parity data of two or more types of parity data may be used to correct the errors.
- the blade failure may include a failure of the entire blade, or a failure of one or more portions of the blade.
- a blade failure may include a failure of any of a plane, a block, a page, a die, a memory hardware device, a controller, and any other portion of a blade which renders the blade partially or wholly inoperative.
- the blade failure may additionally or alternatively include a circumstance in which any of a blade, a plane, a block, a page, a die, a memory hardware device, a controller, and any other portion of a blade which renders the blade partially or wholly unavailable.
- the blade or a portion of the blade may be occupied by the operation and therefore unavailable or inaccessible for, for example, a data read operation.
- the effect of, for example, “replacing” the blade is achieved by the blade becoming available after the occupying operation has completed.
- the parity information stored in the last 2 blades and is stored by stripe data lost because of the failure of a blade can be recovered stripe by stripe.
- data unavailable because of the failure of a blade may recovered by regenerating or calculating the unavailable data based on the parity bits and the data stored in the other blades of each stripe. For example, for each stripe, there may be 2 parity bits.
- the unavailable data is calculated based on the data in the particular stripe of the remaining available blades and the 2 parity bits for the particular stripe.
- the system may then, in response to the read operation, recover the data of the lost page.
- some pages may be erased before the data stored therein is needed. For such pages, the data is not needed and may not be recovered.
- the allocation of memory capacity to applications being served may be thinly provisioned. Thin provisioning allows for memory capacity which is been allocated, but not used, to be shared by multiple applications. For example, each of the applications using mass storage device 100 may be allocated an amount of storage capacity corresponding to need and type of application, where the total amount of capacity allocated to the applications is greater than the actual physical capacity of the mass storage device 100 . For example, mass storage device 100 may have a total physical capacity of 44 TB, but the total of capacity allocated to the applications may be 100 TB.
- the memory storage capacity for each application is virtually allocated thereto. Accordingly, physical sections of the mass storage device are not assigned to specific applications a priori, but instead, are assigned as they are used. With this allocation scheme, the data within the mass storage device for each application tends to become segmented and unorganized. To minimize this effect, part of the normal operation of a thinly provisioned device may be to move data from location to location in order to have the data stored in a more optimized configuration.
- the impact of a blade failure may be minimal. If such a blade failure occurs, the system may note that the failed blade is unavailable for writing and erasing, and may continue to operate normally. In some embodiments, if data is to be read from the failed blade, the lost data from the failed blade is regenerated using the parity bits as discussed above, and is rewritten elsewhere in the memory to a blade which is operational.
- the system may note that the new blade is available for reading, writing, and erasing. Because the mass storage device 100 is configured to continue to operate despite having a failed blade and to continue to operate despite having a newly replaced blade, utilization time of the mass storage device 100 is maximized and performance is optimized.
- FIG. 3 is a flowchart diagram illustrating an implementation of a method of writing data to a mass storage device, such as the mass storage device 100 .
- the mass storage device implements RAID technology to recover from errors.
- the mass storage device may be, for example, used by multiple applications simultaneously for storing and retrieving data related to the operation of the applications.
- step 310 data is received which is to be written to storage device 100 .
- the data may be received from one of the applications in communication with the mass storage device 100 .
- the data may be modified in preparation for storage. For example, the data may be rearranged or segmented so as to be written along a stripe of the mass storage device 100 .
- preparation for storage includes compressing the data.
- step 320 the data is written along a stripe extending across multiple blades configured for storage of application data.
- step 330 a determination is made as to whether the previously written data was written to the last page of the last blade configured for storage of application data. If the previously written data was not written to the last page of the last blade configured for storage of application data, additional data is written in step 320 . If the previously written data was written to the last blade configured for storage of application data, parity data is calculated and written in steps 340 and 350 .
- parity data of a first type is calculated as discussed above.
- the parity data of the first type is stored along the same stripe as the data written in step 330 in one of two blades configured for storage of parity data.
- the first type of parity data may, for example, be xor data based on the data written in step 330 .
- parity data of a second type is calculated as discussed above.
- the parity data of the second type is stored along the same stripe as the data written in step 330 in the other of the two blades configured for storage of parity data.
- the second type of parity data may, for example, be squared xor or Reed Solomon data based on the data written in step 330 .
- additional parity bits of the same or additional parity types are calculated and stored along the same stripe as the data written in step 330 to additional blades configured for storage of the additional parity bits.
- FIG. 4 is a flowchart diagram illustrating an implementation of a method 400 of recovering data in a mass storage device, such as the mass storage device 100 , where the data in the mass storage device has been previously written using, for example, the method illustrated in FIG. 3 .
- the mass storage device implements RAID technology for recovery of multiple errors.
- the mass storage device may be, for example, used by multiple applications simultaneously for storing and retrieving data related to the operation of the applications.
- a failure of one of the blades of the mass storage device 100 is detected.
- the failure for example, may be caused by a loss of power to the failed blade.
- the data previously written to the blade is inaccessible.
- the blade is noted as being unavailable for writing and erasing.
- step 420 an instruction is received which requires accessing data which was stored on the failed blade.
- the instruction for example, may be instructions to read data which was stored on the failed blade.
- step 430 data which was stored on the failed blade is recovered.
- the data may be regenerated using parity data as discussed above.
- the regenerated data may then be written to one of the operational blades using, for example, one or more aspects of the methods discussed above.
- step 440 the instruction is executed using the recovered data. For example, if the instruction is to read data which was stored on the failed blade, data corresponding to the data on the failed blade is read from the operational blade to which the recovered data was written.
- aspects of the methods and systems described above can be used to implement additionally or alternatively other error recovery schemes.
- ECC, RAID, and bad column mapping may be used, for example, by statically or dynamically changing schemes to optimize capacity and recovery capabilities for example, as a device ages.
- a recovery scheme may be selected based at least in part on an indication of an age of a device.
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)
- Detection And Correction Of Errors (AREA)
Abstract
Description
Claims (20)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/210,009 US9547554B2 (en) | 2013-03-15 | 2014-03-13 | Mass storage device and method of operating the same to store parity data |
US14/728,110 US9642529B1 (en) | 2013-03-17 | 2015-06-02 | Proactive and preventive health care system using remote monitoring and notifications |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361793591P | 2013-03-15 | 2013-03-15 | |
US14/210,009 US9547554B2 (en) | 2013-03-15 | 2014-03-13 | Mass storage device and method of operating the same to store parity data |
Publications (2)
Publication Number | Publication Date |
---|---|
US20140281691A1 US20140281691A1 (en) | 2014-09-18 |
US9547554B2 true US9547554B2 (en) | 2017-01-17 |
Family
ID=51534177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/210,009 Active 2034-06-25 US9547554B2 (en) | 2013-03-15 | 2014-03-13 | Mass storage device and method of operating the same to store parity data |
Country Status (1)
Country | Link |
---|---|
US (1) | US9547554B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929226B1 (en) | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9575844B2 (en) | 2013-03-15 | 2017-02-21 | Skyera, Llc | Mass storage device and method of operating the same to back up data stored in volatile memory |
US10318378B2 (en) | 2016-02-25 | 2019-06-11 | Micron Technology, Inc | Redundant array of independent NAND for a three-dimensional memory array |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086575A1 (en) * | 2003-10-20 | 2005-04-21 | Hassner Martin A. | Generalized parity stripe data storage array |
US20050102557A1 (en) * | 2001-09-28 | 2005-05-12 | Dot Hill Systems Corporation | Apparatus and method for adopting an orphan I/O port in a redundant storage controller |
US20060184731A1 (en) * | 2003-11-24 | 2006-08-17 | Corbett Peter F | Data placement technique for striping data containers across volumes of a storage system cluster |
US20060248378A1 (en) * | 2005-04-29 | 2006-11-02 | Network Appliance, Inc. | Lost writes detection in a redundancy group based on RAID with multiple parity |
US20070094531A1 (en) * | 2005-10-20 | 2007-04-26 | Hsiao-Tsu Ni | Expandable storage apparatus for blade server system |
US20080126715A1 (en) * | 2006-07-26 | 2008-05-29 | Yoshihiro Fujie | Apparatus, system, and method for integrated blade raid controller and storage |
US20120173932A1 (en) * | 2010-12-31 | 2012-07-05 | Microsoft Corporation | Storage codes for data recovery |
US8386838B1 (en) * | 2009-12-01 | 2013-02-26 | Netapp, Inc. | High-availability of a storage system in a hierarchical virtual server environment |
US8578090B1 (en) * | 2005-04-29 | 2013-11-05 | Netapp, Inc. | System and method for restriping data across a plurality of volumes |
US20140281315A1 (en) * | 2013-03-15 | 2014-09-18 | Skyera, Inc. | Mass storage device and method of operating the same to back up data stored in volatile memory |
US9043545B2 (en) * | 2012-01-06 | 2015-05-26 | Netapp, Inc. | Distributing capacity slices across storage system nodes |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US20150212911A1 (en) * | 2010-11-30 | 2015-07-30 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Dynamic use of raid levels responsive to predicted failure of a data storage device |
-
2014
- 2014-03-13 US US14/210,009 patent/US9547554B2/en active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102557A1 (en) * | 2001-09-28 | 2005-05-12 | Dot Hill Systems Corporation | Apparatus and method for adopting an orphan I/O port in a redundant storage controller |
US7134066B2 (en) * | 2003-10-20 | 2006-11-07 | International Business Machines Corporation | Generalized parity stripe data storage array |
US20050086575A1 (en) * | 2003-10-20 | 2005-04-21 | Hassner Martin A. | Generalized parity stripe data storage array |
US20060184731A1 (en) * | 2003-11-24 | 2006-08-17 | Corbett Peter F | Data placement technique for striping data containers across volumes of a storage system cluster |
US8578090B1 (en) * | 2005-04-29 | 2013-11-05 | Netapp, Inc. | System and method for restriping data across a plurality of volumes |
US20060248378A1 (en) * | 2005-04-29 | 2006-11-02 | Network Appliance, Inc. | Lost writes detection in a redundancy group based on RAID with multiple parity |
US20070094531A1 (en) * | 2005-10-20 | 2007-04-26 | Hsiao-Tsu Ni | Expandable storage apparatus for blade server system |
US20080126715A1 (en) * | 2006-07-26 | 2008-05-29 | Yoshihiro Fujie | Apparatus, system, and method for integrated blade raid controller and storage |
US7565488B2 (en) * | 2006-07-26 | 2009-07-21 | International Business Machines Corporation | Apparatus, system, and method for integrated blade raid controller and storage |
US8386838B1 (en) * | 2009-12-01 | 2013-02-26 | Netapp, Inc. | High-availability of a storage system in a hierarchical virtual server environment |
US20150212911A1 (en) * | 2010-11-30 | 2015-07-30 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Dynamic use of raid levels responsive to predicted failure of a data storage device |
US20120173932A1 (en) * | 2010-12-31 | 2012-07-05 | Microsoft Corporation | Storage codes for data recovery |
US9043545B2 (en) * | 2012-01-06 | 2015-05-26 | Netapp, Inc. | Distributing capacity slices across storage system nodes |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
US20140281315A1 (en) * | 2013-03-15 | 2014-09-18 | Skyera, Inc. | Mass storage device and method of operating the same to back up data stored in volatile memory |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10929226B1 (en) | 2017-11-21 | 2021-02-23 | Pure Storage, Inc. | Providing for increased flexibility for large scale parity |
US11500724B1 (en) | 2017-11-21 | 2022-11-15 | Pure Storage, Inc. | Flexible parity information for storage systems |
US11847025B2 (en) | 2017-11-21 | 2023-12-19 | Pure Storage, Inc. | Storage system parity based on system characteristics |
Also Published As
Publication number | Publication date |
---|---|
US20140281691A1 (en) | 2014-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9575844B2 (en) | Mass storage device and method of operating the same to back up data stored in volatile memory | |
EP3800554B1 (en) | Storage system managing metadata, host system controlling storage system, and storage system operating method | |
US10372366B2 (en) | Memory system with multiple striping of RAID groups and method for performing the same | |
US8601311B2 (en) | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory | |
KR101502519B1 (en) | Memory Management System and Method | |
US8555027B2 (en) | Semiconductor memory controlling device | |
CN105009087B (en) | Data reliability scheme for data-storage system | |
KR101405741B1 (en) | Stripe-based non-volatile multilevel memory operation | |
US8886904B2 (en) | Managing a solid-state storage device | |
TWI484334B (en) | Method for region-based management of non-volatile memory | |
US20100169743A1 (en) | Error correction in a solid state disk | |
US20160179403A1 (en) | Storage controller, storage device, storage system, and semiconductor storage device | |
US11960743B2 (en) | Memory system with multiple striping of RAID groups and method for performing the same | |
US10545684B2 (en) | Storage device | |
US20100306466A1 (en) | Method for improving disk availability and disk array controller | |
US20090113235A1 (en) | Raid with redundant parity | |
CN104035830A (en) | Method and device for recovering data | |
JP2019502987A (en) | Multipage failure recovery in non-volatile memory systems | |
CN102483686A (en) | Data storage system and method for operating a data storage system | |
US10795768B2 (en) | Memory reallocation during raid rebuild | |
US20120324148A1 (en) | System and method of protecting metadata from nand flash failures | |
US9424131B2 (en) | Spatially decoupled redundancy schemes for a solid state drive (SSD) | |
US11487609B2 (en) | Separating parity data from host data in a memory sub-system | |
US9547554B2 (en) | Mass storage device and method of operating the same to store parity data | |
US11275651B2 (en) | Memory controller and flash memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SKYERA, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DANILAK, RADOSLAV;DONG, GUIQIANG;STEFFKO, LADISLAV;REEL/FRAME:032434/0300 Effective date: 20140312 |
|
AS | Assignment |
Owner name: DELL PRODUCTS L.P., TEXAS Free format text: SECURITY INTEREST;ASSIGNOR:SKYERA, INC.;REEL/FRAME:033546/0001 Effective date: 20140814 |
|
AS | Assignment |
Owner name: WESTERN DIGITAL CAPITAL, INC., CALIFORNIA Free format text: SECURITY INTEREST;ASSIGNOR:SKYERA, INC.;REEL/FRAME:034204/0849 Effective date: 20141110 |
|
AS | Assignment |
Owner name: SKYERA, LLC, CALIFORNIA Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:DELL PRODUCTS L.P.;REEL/FRAME:034742/0069 Effective date: 20150106 |
|
AS | Assignment |
Owner name: SKYERA, LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:SKYERA, INC.;REEL/FRAME:035759/0587 Effective date: 20141212 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SKYERA, LLC;REEL/FRAME:046726/0328 Effective date: 20180517 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., AS AGENT, ILLINOIS Free format text: SECURITY INTEREST;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:052915/0566 Effective date: 20200113 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
AS | Assignment |
Owner name: WESTERN DIGITAL TECHNOLOGIES, INC., CALIFORNIA Free format text: RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566;ASSIGNOR:JPMORGAN CHASE BANK, N.A.;REEL/FRAME:059127/0001 Effective date: 20220203 |
|
AS | Assignment |
Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:064715/0001 Effective date: 20230818 Owner name: JPMORGAN CHASE BANK, N.A., ILLINOIS Free format text: PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT;ASSIGNOR:WESTERN DIGITAL TECHNOLOGIES, INC.;REEL/FRAME:067045/0156 Effective date: 20230818 |