IP Library Granted Patent US 9,430,377
Granted Patent B2
US 9,430,377 · App. 15/052,531 · Granted Aug 30, 2016

Methods and systems for preserving blocks that are neither obsolete nor cold

Inventor: Umesh Maheshwari (San Jose, CA)
Assignee: Nimble Storage, Inc.
G06F12/0253G06F12/0246G06F12/0802G06F12/0866G06F12/0873G06F12/0891G06F2212/1044G06F2212/222G06F2212/604G06F2212/7205
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,430,377
App. No.
15/052,531
Granted
Aug 30, 2016
Kind
B2
Abstract

A storage device made up of multiple storage media is configured such that one such media serves as a cache for data stored on another of such media. The device includes a controller configured to manage the cache by consolidating information concerning obsolete data stored in the cache with information concerning data no longer desired to be stored in the cache, and erase segments of the cache containing one or more of the blocks of obsolete data and the blocks of data that are no longer desired to be stored in the cache to produce reclaimed segments of the cache.

Claims (24)

1. A method for a flash cache that stores a first group of one or more segments and a second group of one or more segments, each segment storing zero or more blocks, the method comprising:

for the first group of one or more segments, determining which blocks are obsolete, and which blocks are cold, wherein obsolete blocks will no longer be accessed, and cold blocks will not likely be accessed; and

copying, from the first group of one or more segments to the second group of one or more segments, all blocks that are neither obsolete nor cold, wherein at least one block from the first group of one or more segments is neither obsolete nor cold.

2. The method of claim 1 , further comprising, after non-obsolete, non-cold blocks have been copied from the first group of one or more segments, erasing all blocks from the first group of one or more segments.

3. The method of claim 2 , wherein after all blocks have been erased from the first group of one or more segments, the first group of one or more segments is available to store data.

4. The method of claim 1 , wherein the determination of which blocks are obsolete is part of a garbage collection routine.

5. The method of claim 4 , wherein the determination of which blocks are cold is part of a cache management routine.

6. The method of claim 5 , wherein the determination of which blocks are cold is provided from the cache management routine to the garbage collection routine.

7. The method of claim 1 , wherein prior to copying non-obsolete, non-cold blocks from the first group of one or more segments, at least one segment from the second group of one or more segments is available to store one or more blocks.

8. The method of claim 1 , wherein the second group of one or more segments contains a fewer number of segments than the first group of one or more segments.

9. The method of claim 1 , wherein at least two non-obsolete, non-cold blocks are copied from the first group of one or more segments to the second group of one or more segments.

10. The method of claim 9 , wherein the at least two non-obsolete, non-cold blocks are copied from two different segments of the first group of one or more segments to a single segment of the second group of one or more segments.

11. A storage system, comprising (i) a flash cache that stores a first group of one or more segments and a second group of one or more segments, each segment storing zero or more blocks, and (ii) a controller communicatively coupled to the flash cache, wherein the controller is configured to:

for the first group of one or more segments, determine which blocks are obsolete, and which blocks are cold, wherein obsolete blocks will no longer be accessed, and cold blocks will not likely be accessed; and

copy, from the first group of one or more segments to the second group of one or more segments, all blocks that are neither obsolete nor cold, wherein at least one block from the first group of one or more segments is neither obsolete nor cold.

12. The storage system of claim 11 , wherein the controller is further configured to, after non-obsolete, non-cold blocks have been copied from the first group of one or more segments, erase all blocks from the first group of one or more segments.

13. The storage system of claim 12 , wherein after all blocks have been erased from the first group of one or more segments, the first group of one or more segments is available to store data.

14. The storage system of claim 11 , wherein the determination of which blocks are obsolete is part of a garbage collection routine that is performed by the controller.

15. The storage system of claim 14 , wherein the determination of which blocks are cold is part of a cache management routine that is performed by the controller.

16. The storage system of claim 15 , wherein the determination of which blocks are cold is provided from the cache management routine to the garbage collection routine.

17. The storage system of claim 11 , wherein prior to copying non-obsolete, non-cold blocks from the first group of one or more segments, at least one segment from the second group of one or more segments is available to store one or more blocks.

18. The storage system of claim 11 , wherein the second group of one or more segments contains a fewer number of segments than the first group of one or more segments.

19. The storage system of claim 11 , wherein at least two non-obsolete, non-cold blocks are copied from the first group of one or more segments to the second group of one or more segments.

20. The storage system of claim 19 , wherein the at least two non-obsolete, non-cold blocks are copied from two different segments of the first group of one or more segments to a single segment of the second group of one or more segments.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 24, 2016
From: MAHESHWARI, UMESH
To: NIMBLE STORAGE, INC.
Reel/Frame 037818/0091 →
Continuity (7)
Continuation 14873520 · Oct 27, 2015
Continuation 14750734 · Jun 25, 2015
Continuation 14656568 · Mar 12, 2015
Continuation 14221894 · Mar 21, 2014
Continuation 13595211 · Aug 27, 2012
Continuation 12636693 · Dec 11, 2009
Related Publication 20160170874A1 · Jun 16, 2016