IP Library Granted Patent US 11,243,837
Granted Patent B2
US 11,243,837 · App. 16/863,503 · Granted Feb 8, 2022

Data storage drive rebuild with parity generation offload using peer-to-peer data transfers

Inventors: Vladislav Bolkhovitin (San Jose, CA); Brian W. O'Krafka (Austin, TX); Sanjay Subbarao (Irvine, CA)
Assignee: Western Digital Technologies, Inc.
G06F11/1068G06F11/1092G06F11/2094G11C29/52H04L67/104G06F2201/82
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,243,837
App. No.
16/863,503
Granted
Feb 8, 2022
Kind
B2
Abstract

A system and method improve the performance of non-volatile memory storage by rebuilding, on the fly, “lost data” in response to a read request, which identifies data to be read or recovered, by identifying a parity data storage device in a set of data storage devices that contains parity corresponding to the identified data; sending a reconstruction request to a respective data storage device, which may be the parity data storage device or other data storage device in the system, to reconstruct the identified data, and receiving the identified data from the respective data storage device. The reconstruction request commands the respective data storage device to retrieve, via peer-to-peer read requests, from other data storage devices, data from one or more data blocks, and to reconstruct the identified data based on the retrieved data and parity data locally stored at the parity data storage device.

Claims (61)

1. A method of managing data storage in a non-volatile memory system comprising a plurality of data storage devices, the method comprising:

at a controller system, receiving a read request to read identified data from a failed data storage device in a set of data storage devices comprising three or more of the plurality of data storage devices; and

in response to receiving the read request, the controller system performing a sequence of operations, including:

identifying a parity data storage device in the set of data storage devices that generated parity data using the identified data and contains the parity;

sending a reconstruction request, corresponding to the read request, to a respective data storage device comprising a data storage device other than the failed data storage device in the plurality of data storage devices, to reconstruct the identified data, wherein the reconstruction request commands the respective data storage device to:

retrieve, via peer-to-peer read requests, from other data storage devices in the set of data storage devices, data from one or more data blocks; and

reconstruct the identified data based on the retrieved data from the one or more data blocks and parity data locally stored at the parity data storage device; and

receiving the identified data from the respective data storage device.

2. The method of claim 1 , wherein:

the controller system is a host system external to the non-volatile memory system; and

the read request is received from an application executed by the host system.

3. The method of claim 1 , wherein the controller system receives the read request from a host system external to the non-volatile memory system.

4. The method of claim 1 , wherein the respective data storage device is the identified parity data storage device.

5. The method of claim 1 , wherein the respective data storage device is a data storage device other than the identified parity data storage device.

6. A memory controller, comprising:

a storage interface for coupling the memory controller to a plurality of data storage devices; and

a communication interface for receiving read requests, each read request comprising a request to read identified data from a failed data storage device in a set of data storage devices comprising three or more of the plurality of data storage devices;

wherein the memory controller is configured to process a respective read request by performing a sequence of operations, including:

identifying a parity data storage device in the set of data storage devices that generated parity data using the identified data and contains the parity data;

sending a reconstruction request, corresponding to the read request, to a respective data storage device comprising a data storage device other than the failed data storage device in the plurality of data storage devices, to reconstruct the identified data, wherein the reconstruction request commands the respective data storage device to:

retrieve, via peer-to-peer read requests, from other data storage devices in the set of data storage devices, data from one or more data blocks; and

reconstruct the identified data based on the retrieved data from the one or more data blocks and parity data locally stored at the parity data storage device; and

receiving the identified data from the respective data storage device.

7. The memory controller of claim 6 , wherein each data storage device of the plurality of data storage devices includes:

non-volatile memory for durably storing information;

one or more data buffers for temporarily storing information being written to or read from the non-volatile memory; and

a controller for controlling operation of the data storage device, including execution of compaction commands.

8. The memory controller of claim 7 , wherein:

the non-volatile memory of each data storage device of the plurality of data storage devices comprises flash memory; and

the one or more data buffers of each data storage device of the plurality of data storage devices comprises non-volatile random-access memory (RAM).

9. The memory controller of claim 6 , wherein:

the memory controller is a host system external to a non-volatile memory system comprising the plurality of data storage devices; and

a respective read request is received from an application executed by the host system.

10. The memory controller of claim 6 , wherein each data storage device of the plurality of data storage devices includes:

means for durably storing information;

means for temporarily storing information being written to or read from the means for durably storing information; and

means for controlling operation of the data storage device, including execution of compaction commands.

11. The memory controller of claim 6 , wherein the communication interface includes means for receiving the read request from a host system external to a non-volatile memory system comprising the plurality of data storage devices.

12. The memory controller of claim 6 , wherein the respective data storage device is the identified parity data storage device.

13. The memory controller of claim 6 , wherein the respective data storage device is a data storage device other than the identified parity data storage device.

14. A non-transitory computer readable storage medium storing one or more programs configured for execution by a memory controller configured to be coupled to a plurality of data storage devices, the one or more programs comprising instructions that, when executed by one or more processors of the memory controller, cause the memory controller to:

receive read requests, each read request comprising a request to read identified data from a failed data storage device in a set of data storage devices comprising three or more of the plurality of data storage devices; and

process a respective read request by performing a sequence of operations, including:

identifying a parity data storage device in the set of data storage devices that generated parity data using the identified data and contains the parity data;

sending a reconstruction request, corresponding to the read request, to a respective data storage device comprising a data storage device other than the failed data storage device in the plurality of data storage devices, to reconstruct the identified data, wherein the reconstruction request commands the respective data storage device to:

retrieve, via peer-to-peer read requests, from other data storage devices in the set of data storage devices, data from one or more data blocks; and

reconstruct the identified data based on the retrieved data from the one or more data blocks and parity data locally stored at the parity data storage device; and

receiving the identified data from the respective data storage device.

15. The non-transitory computer readable storage medium of claim 14 , wherein each data storage device of the plurality of data storage devices includes:

non-volatile memory for durably storing information;

one or more data buffers for temporarily storing information being written to or read from the non-volatile memory; and

a controller for controlling operation of the data storage device, including execution of compaction commands.

16. The non-transitory computer readable storage medium of claim 15 , wherein:

the non-volatile memory of each data storage device of the plurality of data storage devices comprises flash memory; and

the one or more data buffers of each data storage device of the plurality of data storage devices comprises non-volatile random-access memory (RAM).

17. The non-transitory computer readable storage medium of claim 14 , wherein:

the memory controller is a host system external to a non-volatile memory system comprising the plurality of data storage devices; and

the read request is received from an application executed by the host system.

18. The non-transitory computer readable storage medium of claim 14 , wherein the memory controller receives the read request from a host system external to a non-volatile memory system comprising the plurality of data storage devices.

19. The non-transitory computer readable storage medium of claim 14 , wherein the respective data storage device is the identified parity data storage device.

20. The non-transitory computer readable storage medium of claim 14 , wherein the respective data storage device is a data storage device other than the identified parity data storage device.

Assignments (10)
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2020
From: BOLKHOVITIN, VLADISLAV; O'KRAFKA, BRIAN W.; SUBBARAO, SANJAY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 052548/0777 →
Continuity (5)
Continuation 15936327 · Mar 26, 2018
Provisional Application 62634738 · Feb 23, 2018
Provisional Application 62634742 · Feb 23, 2018
Provisional Application 62511326 · May 25, 2017
Related Publication 20200257590A1 · Aug 13, 2020
Cited By (1)
US 12,282,686