IP Library Granted Patent US 11,354,058
Granted Patent B2
US 11,354,058 · App. 16/389,675 · Granted Jun 7, 2022

Local relocation of data stored at a storage device of a storage system

Inventors: Andrew R. Bernat (Mountain View, CA); Peter E. Kirkpatrick (Mountain View, CA); Gordon James Coleman (Los Altos, CA); Wei Tang (San Jose, CA); Ronald Karr (Palo Alto, CA)
Assignee: Pure Storage, Inc.
G06F3/0647G06F3/0604G06F3/0673G06F11/076G06F11/0727
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,354,058
App. No.
16/389,675
Granted
Jun 7, 2022
Kind
B2
Abstract

A storage system includes solid-state storage devices and a storage controller operatively coupled to the solid-state storage devices, the storage controller including a processing device, the processing device to receive, from a solid-state storage device of the solid-state storage devices, an indication of an occurrence of triggering event associated with data stored at a first data block of the solid-state storage device. In response to receiving the indication of the occurrence of the triggering event, a second data block of the solid-state storage device is identified for storage of the data. A command in transmitted to the solid-state storage device that includes address information associated with the second data block of the solid-state storage device for storage of the data, wherein the command causes the solid-state storage device to program the data to the second data block.

Claims (43)

1. A storage system comprising:

a plurality of solid-state storage devices; and

a storage controller operatively coupled to the plurality of solid-state storage devices, the storage controller comprising a processing device, the processing device to:

receive, from a solid-state storage device of the plurality of solid-state storage devices, an indication of an occurrence of a triggering event associated with data stored at a first data block of the solid-state storage device;

in response to receiving the indication of the occurrence of the triggering event, identify a second data block of the solid-state storage device for storage of the data; and

transmit, to the solid-state storage device, a command comprising address information associated with the second data block of the solid-state storage device for storage of the data, wherein the command causes the solid-state storage device, while bypassing sending the data to the storage controller, to program the data to the second data block in response to the solid-state storage device receiving the command comprising the address information associated with the second data block.

2. The storage system of claim 1 , wherein the command causes the solid-state storage device to program metadata associated with the data to the second data block.

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

receive, from the solid-state storage device, an acknowledgment that the data has been programmed to the second data block; and

in response to receiving the acknowledgment, update a mapping data structure to deallocate the data stored at the first data block and associate the data with the second data block.

4. The storage system of claim 1 , wherein the triggering event comprises a read count associated with the data satisfying a read count threshold.

5. The storage system of claim 1 , wherein the triggering event comprises an error rate associated with the data satisfying an error rate threshold.

6. The storage system of claim 1 , wherein the triggering event comprises an amount of time elapsed since the data was programmed to the solid-state storage device satisfying a time threshold.

7. The storage system of claim 1 , wherein to identify the second data block of the solid-state storage device for storage of the data, the processing device to:

determine whether the data stored at the first data block of the solid-state storage device is active; and

in response to determining that the data stored at the first data block of the solid-state storage device is active, identify the second data block of the solid-state storage device for storage of the data.

8. A method, comprising:

receiving, by a storage controller from a storage device of a plurality of storage devices, an indication that data stored at a first data block of the storage device is to be relocated, wherein the solid-state storage device determines a triggering event for the data to be relocated and sends the indication;

determining, by a processing device of the storage controller, whether to relocate the data from the first data block of the storage device to a second data block of the storage device; and

in response to determining to relocate the data from the first data block to the second data block, transmitting a command comprising address information associated with the second data block, wherein the command causes the storage device, without sending the data to the storage controller, to relocate the data from the first data block to the second data block in response to the storage device receiving the command comprising the address information associated with the second data block.

9. The method of claim 8 , wherein determining whether to relocate the data from the first data block to the second data block comprises:

determining whether the data stored at the first data block is active; and

in response to determining that the data stored at the first data block is active, determining to relocate the data from the first data block of the storage device to the second data block of the storage device.

10. The method of claim 8 , wherein determining whether to relocate the data from the first data block to the second data block comprises:

determining whether the storage device has been marked for removal or evacuation; and

in response to determining that the storage device has not been marked for removal or evacuation, determining to relocate the data from the first data block of the storage device to the second data block of the storage device.

11. The method of claim 8 , wherein determining whether to relocate the data from the first data block to the second data block is based on at least one of wear leveling or load balancing of the plurality of storage devices.

12. The method of claim 8 , wherein the storage device relocates the data from the first data block to the second data block via a host memory buffer.

13. The method of claim 8 , wherein the data stored at the first data block of the storage device is to be relocated based on an occurrence of a triggering event associated with the data.

14. The method of claim 8 , further comprising:

receiving, from the storage device, an acknowledgment that the data has been relocated to the second data block; and

in response to receiving the acknowledgment, updating a mapping data structure to deallocate the data stored at the first data block and associate the data with the second data block.

15. A non-transitory computer readable storage medium storing instructions, which when executed, cause a processing device to:

receive, from a solid-state storage device of a plurality of solid-state storage devices, an indication of an occurrence of a triggering event associated with data stored at a first data block of the solid-state storage device, wherein the solid-state storage device determines the triggering event and sends the indication;

in response to receiving the indication of the occurrence of the triggering event, identify a second data block of the solid-state storage device for storage of the data; and

transmit, to the solid-state storage device, a command comprising address information associated with the second data block of the solid-state storage device for storage of the data, wherein the command causes the solid-state storage device, without sending the data to the storage controller, to program the data to the second data block in response to the solid-state storage device receiving the command comprising the address information associated with the second data block.

16. The non-transitory computer readable storage medium of claim 15 , wherein the command causes the solid-state storage device to program metadata associated with the data to the second data block.

17. The non-transitory computer readable storage medium of claim 15 , wherein the processing device is further to:

receive, from the solid-state storage device, an acknowledgment that the data has been programmed to the second data block; and

in response to receiving the acknowledgment, update a mapping data structure to deallocate the data stored at the first data block and associate the data with the second data block.

18. The non-transitory computer readable storage medium of claim 15 , wherein the triggering event comprises a read count associated with the data satisfying a read count threshold.

19. The non-transitory computer readable storage medium of claim 15 , wherein the triggering event comprises an error rate associated with the data satisfying an error rate threshold.

20. The non-transitory computer readable storage medium of claim 15 , wherein the triggering event comprises an amount of time elapsed since the data was programmed to the solid-state storage device satisfying a time threshold.

Assignments (3)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 19, 2019
From: BERNAT, ANDREW R.; KIRKPATRICK, PETER E.; COLEMAN, GORDON JAMES; TANG, WEI; KARR, RONALD
To: PURE STORAGE, INC.
Reel/Frame 048942/0158 →
Cited By (4)
US 12,229,414 US 12,361,210 US 12,407,562 US 12,647,481