IP Library Granted Patent US 10,027,984
Granted Patent B2
US 10,027,984 · App. 15/590,438 · Granted Jul 17, 2018

Methods and systems for efficiently reading a data block from a data seglet with compressed data blocks

Inventors: Gurunatha Karaje (Santa Clara, CA); Hy Vu (Milpitas, CA); Rajat Sharma (San Jose, CA); Senthil Kumar Ramamoorthy (Sunnyvale, CA); Srikant Varadan (Fremont, CA)
Assignee: Hewlett Packard Enterprise Development LP
H04N19/66H04N19/119H04N19/14H04N19/42H04N19/68H04N19/865G11C29/40
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,027,984
App. No.
15/590,438
Granted
Jul 17, 2018
Kind
B2
Abstract

When data blocks of a data seglet are compressed using a shared dictionary and when the requested data block (or blocks) do not include the last data block of the data seglet, an optimization in the read path may involve decompressing a certain portion of the data seglet from a starting position of the data seglet to a decompression endpoint of the data seglet, but not including the portion of the data seglet following the decompression endpoint. Such technique may involve the storing of a mapping that maps, for each data block within the data seglet, an identifier of the data block to a decompression endpoint that indicates a portion of the data seglet that includes the data block.

Claims (44)

1. A method, comprising:

receiving a request for a first data block that is stored on one or more storage units;

determining a data seglet that includes a compressed version of the first data block, wherein the data seglet includes a plurality of compressed data blocks, wherein the plurality of compressed data blocks includes the compressed version of the first data block, and wherein the data seglet includes a starting position and an ending position;

retrieving, from a mapping which maps data blocks to hints, a first hint corresponding to the first data block, the first hint indicating a first decompression endpoint within the data seglet, wherein the first decompression endpoint is located at or after an ending position of the compressed version of the first data block and is located at or before the ending position of the data seglet, wherein the mapping maps a second data block of the data seglet to a second hint indicating a second decompression endpoint within the data seglet, and wherein the first decompression endpoint is different than the second decompression endpoint;

reading at least a portion of the data seglet from the one or more storage units;

decompressing a contiguous portion of the data seglet, the contiguous portion spanning only between the starting position of the data seglet and the first decompression endpoint;

determining a region of the decompressed contiguous portion within which the first data block is located; and

returning the first data block from the determined region of the decompressed contiguous portion.

2. The method of claim 1 , wherein the at least portion of the data seglet that is read consists of the contiguous portion.

3. The method of claim 1 , wherein the at least portion of the data seglet that is read includes an entirety of the data seglet.

4. The method of claim 1 , wherein the first decompression endpoint is located at the ending position of the compressed version of the first data block.

5. The method of claim 1 , wherein the first decompression endpoint is located after the ending position of the compressed version of the first data block.

6. The method of claim 1 , wherein the first decompression endpoint is located before the ending position of the data seglet.

7. The method of claim 1 , wherein the starting position of the data seglet is equal to a starting position of a header of the data seglet.

8. A storage system, comprising:

a plurality of storage units;

a processor communicatively coupled to the storage units; and

a processor-readable medium storing instructions that, when executed by the processor, cause the processor to:

receive a request for a first data block that is stored on one or more of the storage units;

determine a data seglet that includes a compressed version of the first data block, wherein the data seglet includes a plurality of compressed data blocks, wherein the plurality of compressed data blocks includes the compressed version of the first data block, and wherein the data seglet includes a starting position and an ending position;

retrieve, from a mapping which maps data blocks to hints, a first hint corresponding to the first data block, the first hint indicating a first decompression endpoint within the data seglet, wherein the first decompression endpoint is located at or after an ending position of the compressed version of the first data block and is located at or before the ending position of the data seglet, wherein the mapping maps a second data block of the data seglet to a second hint indicating a second decompression endpoint within the data seglet, and wherein the first decompression endpoint is different than the second decompression endpoint;

read at least a portion of the data seglet from the one or more storage units;

decompress a contiguous portion of the data seglet, the contiguous portion spanning only between the starting position of the data seglet and the first decompression endpoint;

determine a region of the decompressed contiguous portion within which the first data block is located; and

return the first data block from the determined region of the decompressed contiguous portion.

9. The storage system of claim 8 , wherein the at least portion of the data seglet that is read consists of the contiguous portion.

10. The storage system of claim 8 , wherein the at least portion of the data seglet that is read includes an entirety of the data seglet.

11. The storage system of claim 8 , wherein the first decompression endpoint is located at the ending position of the compressed version of the first data block.

12. The storage system of claim 8 , wherein the first decompression endpoint is located after the ending position of the compressed version of the first data block.

13. The storage system of claim 8 , wherein the first decompression endpoint is located before the ending position of the data seglet.

14. The storage system of claim 8 , wherein the starting position of the data seglet is equal to a starting position of a header of the data seglet.

15. A non-transitory machine-readable storage medium comprising software instructions that, when executed by a processor, cause the processor to:

receive a request for a first data block that is stored on one or more of a plurality of storage units of a storage system;

determine a data seglet that includes a compressed version of the first data block, wherein the data seglet includes a plurality of compressed data blocks, wherein the plurality of compressed data blocks includes the compressed version of the first data block, and wherein the data seglet includes a starting position and an ending position;

retrieve, from a mapping which maps data blocks to hints, a first hint corresponding to the first data block, the first hint indicating a first decompression endpoint within the data seglet, wherein the first decompression endpoint is located at or after an ending position of the compressed version of the first data block and is located at or before the ending position of the data seglet, wherein the mapping maps a second data block of the data seglet to a second hint indicating a second decompression endpoint within the data seglet, and wherein the first decompression endpoint is different than the second decompression endpoint;

read at least a portion of the data seglet from the one or more storage units;

decompress a contiguous portion of the data seglet, the contiguous portion spanning only from the starting position of the data seglet to the first decompression endpoint;

determine a region of the decompressed contiguous portion within which the first data block is located; and

return the first data block from the determined region of the decompressed contiguous portion.

16. The non-transitory machine-readable storage medium of claim 15 , wherein the at least portion of the data seglet that is read consists of the contiguous portion.

17. The non-transitory machine-readable storage medium of claim 15 , wherein the at least portion of the data seglet that is read includes an entirety of the data seglet.

18. The non-transitory machine-readable storage medium of claim 15 , wherein the first decompression endpoint is located at the ending position of the compressed version of the first data block.

19. The non-transitory machine-readable storage medium of claim 15 , wherein the first decompression endpoint is located after the ending position of the compressed version of the first data block.

20. The non-transitory machine-readable storage medium of claim 15 , wherein the first decompression endpoint is located before the ending position of the data seglet.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2017
From: NIMBLE STORAGE, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 042810/0906 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY DATA PREVIOUSLY RECORDED AT REEL: 042301 FRAME: 0696. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 10, 2017
From: SHARMA, RAJAT
To: NIMBLE STORAGE, INC.
Reel/Frame 042454/0441 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2017
From: SHERMA, RAJAT
To: NIMBLE STORAGE, INC.
Reel/Frame 042301/0696 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2017
From: KARAJE, GURUNATHA
To: NIMBLE STORAGE, INC.
Reel/Frame 042301/0605 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2017
From: VU, HY
To: NIMBLE STORAGE, INC.
Reel/Frame 042301/0896 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2017
From: VARADAN, SRIKANT
To: NIMBLE STORAGE, INC.
Reel/Frame 042301/0789 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2017
From: RAMAMOORTHY, SENTHIL KUMAR
To: NIMBLE STORAGE, INC.
Reel/Frame 042301/0652 →
Continuity (2)
Provisional Application 62427987 · Nov 30, 2016
Related Publication 20180152733A1 · May 31, 2018