IP Library Granted Patent US 11,086,519
Granted Patent B2
US 11,086,519 · App. 16/410,514 · Granted Aug 10, 2021

System and method for granular deduplication

Inventors: Amit Garg (Cupertino, CA); Timothy Stoakes (One Tree Hill, AU); Vikas Ratna (Fremont, CA)
Assignee: Violin Systems LLC
G06F3/0608G06F3/065G06F3/067G06F3/0631G06F3/0641G06F3/0665G06F3/0689
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,086,519
App. No.
16/410,514
Granted
Aug 10, 2021
Kind
B2
Abstract

A method of managing a memory system is described, the memory system having a processor with a client interface, a buffer memory, and a storage memory. A LUN (logical unit) is exposed to the client, the LUN having a memory size, and QoS specification. When the processor receives a command from the client to write data to the LUN, determining if the QoS specification includes deduplication and: if the QoS does not include deduplication, processing the command by storing the data in the storage memory and creating metadata uniquely referencing a storage location of the data that is written; or if the QoS includes deduplication, determine if deduplication is possible while meeting a latency value as specified in the QoS specification and performing deduplication.

Claims (70)

1. A method of managing a memory system, comprising:

providing a processor and a storage memory in the memory system;

identifying a quality of service (QoS) specification associated with a client;

determining if the QoS specification includes deduplication;

identifying data associated with the client;

if the QoS includes deduplication, determining if deduplication of the data is possible while meeting the QoS specification;

deduplicating the data and storing the deduplicated data in the storage memory when deduplication is possible; and

storing the data undeduplicated in the storage memory when deduplication is not possible.

2. The method of claim 1 , further comprising:

determining if the QoS specification includes compression; and

compressing the deduplicated data based on the QoS specification.

3. The method of claim 2 , further comprising:

identifying at least one of a read or write latency in the QoS specification; and

compressing the deduplicated data based on the read or write latency.

4. The method of claim 3 , further comprising:

identifying multiple different compression algorithms; and

selecting one of the multiple different compression algorithms for compressing the deduplicated data based on the read or write latency.

5. The method of claim 1 , further comprising:

identifying at least one of a read or write latency in the QoS specification; and

deduplicating the data based on the read or write latency.

6. The method of claim 1 , further comprising:

determining a current free storage capacity available to a LUN; and

deduplicating the data based on the free storage capacity available to the LUN.

7. The method of claim 1 , further comprising:

receiving a write command from the client to write the data to the storage memory;

in response to the write command, determining if deduplication of the data from the write command is possible while meeting the QoS specification;

if deduplication is possible, deduplicating the data from the write command and storing the deduplicated data in the storage memory; and

if deduplication is not possible, storing the data from the write command in the storage memory without deduplication.

8. The method of claim 7 , further comprising:

at a later time after receiving the write command identifying the storage capacity of the storage memory; and

if deduplication is possible and the data is not currently deduplicated, deduplicating the data.

9. The method of claim 8 , further comprising:

in response to the write command, determining if compression of the data is possible while meeting the QoS specification;

if compression is not possible, storing the data without compression;

at a later time after storing the data, determining if the data can be compressed while meeting the QoS specification;

if compression is possible, compressing the data at the later time; and

storing the compressed data in the storage memory.

10. An apparatus for managing a memory system, comprising:

storage memory; and

a processor communicatively coupled with the storage memory, the processor configured to:

receive a storage command from a client;

identify a quality of service (QoS) associated with the client;

in response to the storage command, determine if the QoS associated with the client includes deduplication;

if the QoS includes deduplication, determining if deduplication is possible while meeting the QoS specification;

if deduplication is not possible, store the data without deduplication;

at a later time after receiving the storage command identify a current storage capacity of the storage memory;

based on the current storage capacity, determine if deduplication is possible; and

if deduplication is possible, deduplicate the data at the later time to increase the storage capacity.

11. The apparatus of claim 10 , wherein the processor is further configured to:

compress the data based on the QoS specification and the storage capacity.

12. The apparatus of claim 10 , wherein the processor is further configured to:

identify at least one of a read or write latency in the QoS specification;

identify multiple different compression algorithms; and

select one of the multiple different compression algorithms for compressing the deduplicated data based on a read or write latency in the QoS specification.

13. The apparatus of claim 10 , wherein the processor is further configured to:

identify at least one of a read or write latency in the QoS specification; and

deduplicate the data based on the read or write latency.

14. The apparatus of claim 10 , wherein the processor is further configured to:

determine a current free storage capacity available to a LUN; and

deduplicate the data based on the free storage capacity available to the LUN.

15. The apparatus of claim 10 , wherein the processor is further configured to:

at the time the data is stored, determine if compression is possible while meeting the QoS specification;

if compression is not possible, store the data without compression;

at a later time after storing the data, identify a storage capacity of the storage system;

based on the storage capacity of the storage system, compress the stored data; and

store the compressed data in the storage memory.

16. The apparatus of claim 10 , wherein the processor is further configured to:

if deduplication is possible, perform deduplication of the data and create metadata referencing the location where the deduplicated data is stored; and if deduplication is not possible, store the data in a backing LUN.

17. The apparatus of claim 10 , further comprising:

a stub LUN (SL) storing metadata for the deduplicated stored data and the metadata comprises a logical block address (LBA) mapped to a location of the deduplicated stored data in a single instance repository (SIR).

Assignments (3)
CORRECTIVE ASSIGNMENT TO REMOVE US PATENT NO. 9013874 PREVIOUSLY RECORDED UNDER REEL AND FRAME 064272/0249. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 17, 2024
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 068998/0780 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2023
From: VSIP HOLDINGS LLC (F/K/A VIOLIN SYSTEMS LLC)
To: INNOVATIONS IN MEMORY LLC
Reel/Frame 064272/0249 →
CHANGE OF NAME Recorded May 25, 2021
From: VIOLIN SYSTEMS LLC
To: VSIP HOLDINGS LLC
Reel/Frame 056366/0849 →