IP Library › Granted Patent US 9,251,066
Granted Patent B2
US 9,251,066 · App. 14/537,709 · Granted Feb 2, 2016

Garbage collection in a storage system

Inventors: John Colgrove (Los Altos, CA); John Hayes (Mountain View, CA); Ethan Miller (Santa Cruz, CA); Cary Sandvig (Palo Alto, CA); Joseph S. Hasbani (Palo Alto, CA); Feng Wang (Sunnyvale, CA)
Assignee: Pure Storage, Inc.
G06F12/0253G06F3/061G06F3/065G06F3/067G06F3/0608G06F3/0641G06F3/0665G06F3/0688G06F17/30156G06F2212/702
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 9,251,066
App. No.
14/537,709
Granted
Feb 2, 2016
Kind
B2
Abstract

A system and method for performing garbage collection. A system includes a storage medium, a first table including entries which map a virtual address to locations in the storage medium, and a second table with entries which include a reverse mapping of a physical address in a data storage medium to one or more virtual addresses. A storage controller is configured to perform garbage collection. During garbage collection, the controller is configured to identify one or more entries in the second table which correspond to a segment to be garbage collected. In response to determining the first table includes a valid mapping for a virtual address included in an entry of the one of the one or more entries, the controller is configured to copy data from a first location identified in the entry to a second location in the data storage medium, and reclaim the first storage location.

Claims (37)

1. A computing system comprising:

a data storage medium;

a data storage controller configured to:

determine that a current segment within the data storage medium is in use by identifying a valid mapping of a location in the current segment to one or more virtual addresses;

copy data from the location in the current segment to a new storage location in the data storage medium; and

reclaim the location in the current segment.

2. The system as recited in claim 1 , wherein the data storage controller is further configured to:

identify one or more entries in a first table comprising a plurality of entries, wherein each of the one or more entries of the first table comprises a reverse mapping of an address of a location in the data storage medium to one or more virtual addresses;

determine that the first table includes a valid mapping for a virtual address; and

determine the mapping is valid responsive to determining the first table includes at least one valid mapping for a virtual address.

3. The system as recited in claim 1 , wherein the data storage controller is further configured to maintain a second table comprising a plurality of entries, wherein each of the plurality of entries of the second table maps a virtual address to a location in the data storage medium.

4. The system as recited in claim 1 , wherein prior to copying the data from the location to the new location, the method further comprises deduplicating the data.

5. The system as recited in claim 4 , wherein the data storage controller is configured to the data from the location to the new location in further response to determining the data has not yet been copied to the new location.

6. The system as recited in claim 1 , wherein the first table is organized as a plurality of time ordered levels, each level comprising a plurality of entries.

7. A method for use in a computing system, the method comprising:

determining that a current segment within a data storage medium is in use by identifying a valid mapping of a location in the current segment to one or more virtual addresses;

copying data from the location in the current segment to a new storage location in the data storage medium; and

reclaiming the location in the current segment.

8. The method as recited in claim 7 , further comprising:

identifying one or more entries in a first table comprising a plurality of entries, wherein each of the one or more entries of the first table comprises a reverse mapping of an address of a location in the data storage medium to one or more virtual addresses;

determining that the first table includes a valid mapping for a virtual address; and

determining the mapping is valid responsive to determining the first table includes at least one valid mapping for a virtual address.

9. The method as recited in claim 8 , further comprising maintaining a second table comprising a plurality of entries, wherein each of the plurality of entries of the second table maps a virtual address to a location in the data storage medium.

10. The method as recited in claim 8 , wherein the first table is organized as a plurality of time ordered levels, each level comprising a plurality of entries.

11. The method as recited in claim 7 , wherein prior to copying the data from the location to the new location, the method further comprises deduplicating the data.

12. The method as recited in claim 11 , further comprising copying the data from the location to the new location in further response to determining the data has not yet been copied to the new location.

13. A non-transitory computer readable storage medium comprising program instructions, wherein said program instructions are executable to:

determine that a current segment within a data storage medium is in use by identifying a valid mapping of a location in the current segment to one or more virtual addresses;

copy data from the location in the current segment to a new storage location in the data storage medium; and

reclaim the location in the current segment.

14. The non-transitory computer readable storage medium as recited in claim 13 , wherein said program instructions are further executable to:

identify one or more entries in a first table comprising a plurality of entries, wherein each of the one or more entries of the first table comprises a reverse mapping of an address of a location in the data storage medium to one or more virtual addresses;

determine that the first table includes a valid mapping for a virtual address; and

determine the mapping is valid responsive to determining the first table includes at least one valid mapping for a virtual address.

15. The non-transitory computer readable storage medium as recited in claim 14 , wherein said program instructions are further executable to maintain a second table comprising a plurality of entries, wherein each of the plurality of entries of the second table maps a virtual address to a location in the data storage medium.

16. The non-transitory computer readable storage medium as recited in claim 14 , wherein said program instructions are further executable to organize the first table as a plurality of time ordered levels, each level comprising a plurality of entries.

17. The non-transitory computer readable storage medium as recited in claim 13 , wherein prior to copying the data from the location to the new location, the program instructions are further executable to deduplicate the data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 25, 2018
From: HAYES, JOHN; MILLER, ETHAN; SANDVIG, CARY; HASBANI, JOSEPH S.; WANG, FENG; COLGROVE, JOHN
To: PURE STORAGE, INC.
Reel/Frame 044724/0431 →
Continuity (8)
Continuation 14015308 · Aug 30, 2013
Continuation 13340119 · Dec 29, 2011
Continuation In Part 13250570 · Sep 30, 2011
Continuation In Part 13208094 · Aug 11, 2011
Continuation In Part 13211288 · Aug 16, 2011
Continuation In Part 13250579 · Sep 30, 2011
Continuation In Part 13273858 · Oct 14, 2011
Related Publication 20150067286A1 · Mar 5, 2015