IP Library › Granted Patent US 11,846,968
Granted Patent B2
US 11,846,968 · App. 17/981,285 · Granted Dec 19, 2023

Relocation of data for heterogeneous storage systems

Inventors: Andrew R. Bernat (Mountain View, CA); Peter E. Kirkpatrick (Los Altos, CA); Gordon James Coleman (Los Altos, CA); Wei Tang (Sunnyvale, CA); John Roper (Mountain View, CA)
Assignee: PURE STORAGE, INC.
G06F3/0647G06F3/0604G06F3/064G06F3/0608G06F3/0634G06F3/0673G06F3/0688G06F12/06G06F2212/1044
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,846,968
App. No.
17/981,285
Granted
Dec 19, 2023
Kind
B2
Abstract

A command to relocate data is transmitted by a storage controller. The command includes first address information associated with a first set of blocks storing the data at one or more storage devices using a first programming mode and second address information associated with a second set of blocks at the one or more storage devices to store the relocated data using a second programming mode. The command causes the relocation of the data from the first set of blocks to the second set of blocks while bypassing sending the data to the storage controller. An acknowledgement is received that the relocated data has been stored at the second number of blocks.

Claims (30)

1. A storage system comprising:

a plurality of storage devices; and

a storage controller operatively coupled to the plurality of storage devices, the storage controller comprising a processing device, the processing device configured to:

transmit a command to relocate data from a first set of data blocks at the plurality of storage devices to a second set of data blocks at the plurality of storage devices while bypassing the storage controller, the command comprising address information associated with the second set of blocks to store the relocated data; and

receive, from one or more of the plurality of storage devices, an acknowledgement that the relocated data has been stored at the second set of blocks.

2. The storage system of claim 1 , wherein the command further comprises additional address information associated with the first set of blocks.

3. The storage system of claim 1 , wherein the first set of blocks store the data in a first programming mode and wherein the second set of blocks store the data in a second programming mode.

4. The storage system of claim 3 , wherein the first programming mode corresponds to single-level cell (SLC) mode and the second programming mode corresponds to quad-level cell (QLC) mode.

5. The storage system of claim 1 , wherein the first set of blocks and the second set of blocks are located at a same storage device of the plurality of storage devices.

6. The storage system of claim 1 , wherein the first set of blocks and the second set of blocks are located at different storage devices of the plurality of storage devices.

7. The storage system of claim 6 , wherein at least two of the different storage devices have different erase block sizes.

8. The storage system of claim 1 , wherein the processing device is further to:

update a mapping data structure to deallocate the data stored at the first set of blocks and associate the relocated data with the second set of blocks.

9. The storage system of claim 1 , wherein the storage controller is external to the plurality of storage devices.

10. A method, comprising:

transmitting, by a processing device of a storage controller operatively coupled to a plurality of storage devices, a command to relocate data from a first set of data blocks at the plurality of storage devices to a second set of data blocks at the plurality of storage devices while bypassing the storage controller, the command comprising address information associated with the second set of blocks to store the relocated data; and

receiving, from one or more of the plurality of storage devices, an acknowledgement that the relocated data has been stored at the second set of blocks.

11. The method of claim 10 , wherein the command further comprises additional address information associated with the first set of blocks.

12. The method of claim 10 , wherein the first set of blocks store the data in a first programming mode and wherein the second set of blocks store the data in a second programming mode.

13. The method of claim 12 , wherein the first programming mode corresponds to single-level cell (SLC) mode and the second programming mode corresponds to quad-level cell (QLC) mode.

14. The method of claim 10 , wherein the first set of blocks and the second set of blocks are located at a same storage device of the plurality of storage devices.

15. The method of claim 10 , wherein the first set of blocks and the second set of blocks are located at different storage devices of the plurality of storage devices.

16. The method of claim 15 , wherein at least two of the different storage devices have different erase block sizes.

17. The method of claim 10 , further comprising:

updating a mapping data structure to deallocate the data stored at the first set of blocks and associating the relocated data with the second set of blocks.

18. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device of a storage controller operatively coupled to a plurality of storage devices configured to:

transmit a command to relocate data, a command to relocate data from a first set of data blocks at the plurality of storage devices to a second set of data blocks at the plurality of storage devices while bypassing the storage controller, the command comprising address information associated with the second set of blocks to store the relocated data; and

receiving, from one or more of the plurality of storage devices, an acknowledgement that the relocated data has been stored at the second set of blocks.

19. The non-transitory computer readable storage medium of claim 18 , wherein the command further comprises additional address information associated with the first set of blocks.

20. The non-transitory computer readable storage medium of claim 18 , wherein the first set of blocks store the data in a first programming mode and wherein the second set of blocks store the data in a second programming mode.

Continuity (5)
Continuation 17352464 · Jun 21, 2021
Continuation In Part 16389675 · Apr 19, 2019
Provisional Application 62727792 · Sep 6, 2018
Provisional Application 62729597 · Sep 11, 2018
Related Publication 20230061949A1 · Mar 2, 2023