IP Library Granted Patent US 10,331,561
Granted Patent B1
US 10,331,561 · App. 15/196,150 · Granted Jun 25, 2019

Systems and methods for rebuilding a cache index

Inventors: Philip N. Shilane (Newton, PA); Grant R. Wallace (Pennington, NJ)
Assignee: EMC Corporation
G06F12/0831G06F12/128G06F2212/621G06F2212/69
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 10,331,561
App. No.
15/196,150
Granted
Jun 25, 2019
Kind
B1
Abstract

Systems and methods for rebuilding an index for a flash cache are provided. The index is rebuilt by reading headers of containers stored in the cache and inserting information from the headers into the index. The index is enabled while being rebuild such that lookup operations can be performed using the index even when the index is incomplete. New containers can be inserted into used or unused regions of the cache while the index is being rebuilt.

Claims (35)

1. A method for rebuilding an index for segments stored in a flash memory, the method comprising:

when the index, which is stored in a memory, to the segments stored in the flash memory is lost or corrupted and the index is not backed up in the flash memory, rebuilding the index by:

reading headers of containers stored in the flash memory, wherein the headers contain sufficient information to index the segments stored in the containers without accessing the segments stored in the containers;

updating the index with information extracted from the headers, wherein the information includes identifiers of segments stored in the containers and locations of the segments in the containers; and

performing lookup operations into the flash memory for segments while rebuilding the index, wherein the lookup operations are performed including when the index rebuild is in progress.

2. The method of claim 1 , further comprising reading the headers of the containers with multiple threads.

3. The method of claim 2 , further comprising locking the index or portions of the index as necessary while rebuilding the index with information obtained by the multiple threads.

4. The method of claim 1 , wherein the identifiers comprise cryptographic hashes or keys or fingerprints.

5. The method of claim 1 , further comprising inserting a data segment into the flash memory while rebuilding the index.

6. The method of claim 5 , further comprising inserting the data segment into an unused region of the flash memory and updating the index for the newly inserted segment.

7. The method of claim 5 , further comprising inserting the data segment into a used region of the flash memory that has not been indexed without reading headers of containers in the used region and without removing entries from the index.

8. The method of claim 5 , further comprising inserting the data segment into a used region of the flash memory that has been indexed, wherein a data segment being replaced is evicted and the index updated to reflect the eviction.

9. The method of claim 5 , further comprising inserting a container including the data segment into a used region of the flash memory that has been indexed, wherein a container being replaced is evicted and the index updated to reflect the eviction of all data segments included in the evicted container.

10. A method for inserting data segments into a flash memory while rebuilding an index for the flash memory, the method comprising:

when the index, which is stored in a volatile memory, to the data segments stored in the flash memory is lost or corrupted and the index is not backed up in the flash memory, rebuilding the index of the flash memory in the volatile memory by:

reading headers of containers stored in the flash memory and adding entries to the index based on the headers, wherein each of the entries includes at least an identifier of a segment and a location of the segment in the containers, wherein the headers contain sufficient information to index the segments stored in the containers without accessing the segments stored in the containers;

inserting a segment into the flash memory while rebuilding the index, wherein the segment is inserted into one of an unused region of the flash memory or a used region of the flash memory, wherein the insertion of the segment is performed even if the index rebuild is in progress; and

updating the index to reflect the inserted segment.

11. The method of claim 10 , wherein rebuilding the index includes reading the headers with multiple threads in parallel.

12. The method of claim 11 , further comprising locking the index or a portion of the index as necessary when adding the entries to the index.

13. The method of claim 11 , wherein each thread reads a subset of the containers.

14. The method of claim 10 , further comprising determining a state of the flash memory from a flash memory status header, wherein the flash memory status header identifies a highest container identifier and an unused region of the flash memory.

15. The method of claim 14 , wherein inserting a segment into the flash memory while rebuilding the index includes inserting the segment into the unused region of the flash memory or a used region of the flash memory.

16. The method of claim 15 , further comprising adding the segment to a container and writing the container to the unused region and updating the index when inserting the segment into the unused region.

17. The method of claim 15 , further comprising inserting the container into a portion of the used region that is not indexed without indexing any containers replaced during the insertion and without removing entries from the index.

18. The method of claim 15 , further comprising inserting the container into a portion of the used region that is indexed, wherein any containers replaced by the insertion are selected by a caching strategy.

19. A computing system configured to cache data in a flash memory and configured to rebuild an index, the system comprising:

a flash memory configured to cache data segments, wherein the data segments are stored in containers in the flash memory;

a memory configured to store an index, wherein the index associates identifiers of the data segments with locations of the data segments in the flash memory; and

a processor, the processor configured to execute computer executable instructions for performing a method for rebuilding the index, the method comprising:

when the index, which is stored in the memory, to the data segments stored in the flash memory is lost or corrupted and the index is not backed up in the flash memory, rebuilding the index in the memory by:

reading headers of the containers stored in the flash memory, wherein the header of each container includes metadata sufficient to index all data segments stored in the container without requiring the data segments stored in the containers to be accessed, wherein the metadata includes an identifier and a location;

updating the index using the metadata from the headers; and

operating the flash memory in a normal manner while the index is being rebuilt, wherein operations in the flash memory are performed even when the index rebuild is in progress.

20. The computing system of claim 19 , wherein the method further includes performing lookup operations using the flash memory while rebuilding the flash memory and inserting data segments into the flash memory while rebuilding the flash memory.

Assignments (5)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2016
From: WALLACE, GRANT R.; SHILANE, PHILIP N.
To: EMC CORPORATION
Reel/Frame 039205/0867 →
Cited By (6)
US 12,235,811 US 12,299,303 US 12,339,805 US 12,367,216 US 12,386,678 US 12,639,126