IP Library Granted Patent US 10,846,024
Granted Patent B2
US 10,846,024 · App. 15/155,838 · Granted Nov 24, 2020

Global de-duplication of virtual disks in a storage platform

Inventors: Avinash Lakshman (Fremont, CA); Gaurav Yadav (Mountain View, CA)
Assignee: Commvault Systems, Inc.
G06F3/0664G06F3/0608G06F3/0641G06F3/0683
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,846,024
App. No.
15/155,838
Granted
Nov 24, 2020
Kind
B2
Abstract

In order to avoid writing duplicates of blocks of data into a storage platform, any virtual disk within the storage platform may have a de-duplication feature enabled. Or, all virtual disks have this feature enabled. For virtual disks with de-duplication enabled, a unique message digest is calculated for every block of data written to that virtual disk. Upon a write, these message digests are consulted in order to determine if a particular block of data has already been written, if so, it is not written again, and if not, it is written. All de-duplication virtual disks are written to a single system virtual disk within the storage platform. De-duplication occurs over the entire storage platform and over all its virtual disks because all message digests are consulted before a write is performed for any virtual disk. A read for a de-duplication virtual desk reads from the system virtual disk.

Claims (54)

1. A method of writing virtual machine data to a storage platform, said method comprising:

at a computer server that hosts a plurality of virtual machines, wherein said plurality of virtual machines comprises a controller virtual machine that intercepts write requests issued by software applications executing within other virtual machines among said plurality of virtual machines:

issuing a write request from a software application executing within a other virtual machine among said plurality of virtual machines at said computer server to write data onto a first virtual disk of said storage platform,

wherein said storage platform comprises a system virtual disk, which is distinct from said first virtual disk, and which stores de-duplicated data in said storage platform, and which is not accessible by said software applications executing within said other virtual machines;

by said controller virtual machine, calculating a hash value for each block within said data in said write request;

by said controller virtual machine, determining whether each hash value is present in a table that includes hash values of blocks that have been written to said storage platform;

when said controller virtual machine determines that a first hash value is present in said table, (i) retrieving from said table a first offset indicating where a first block having said first hash value is stored in said system virtual disk, and (ii) writing said first offset and an indication of said first block corresponding to said first hash value to metadata in said storage platform instead of writing said first block to said first virtual disk; and

when said controller virtual machine determines that a second hash value is not present in said table, (iii) writing a second block corresponding to said second hash value to said system virtual disk at a second offset instead of writing said second block to said first virtual disk, and (iv) writing said second offset and an indication of said second block corresponding to said second hash value to metadata in said storage platform; and

wherein said first virtual disk has a de-duplication feature enabled, and wherein at least one other virtual disk of said storage platform has said de-duplication feature disabled, said de-duplication feature being stored as metadata within said storage platform.

2. A method as recited in claim 1 wherein said controller virtual machine determines whether a hash value is present in said table only if said first virtual disk is administered with de-duplication enabled.

3. A method as recited in claim 1 wherein said table includes hash values of all blocks that have been written to said storage platform.

4. A method as recited in claim 1 wherein said table only includes hash values of those blocks that have been written to virtual disks within said storage platform that have de-duplication enabled, including said first virtual disk.

5. A method as recited in claim 4 wherein said system virtual disk includes all data blocks requested to be written to virtual disks of said storage platform that have a de-duplication feature enabled, including said first virtual disk.

6. A method as recited in claim 5 wherein said table is stored on a computer node of said storage platform and wherein said determining by said controller virtual machine further includes:

sending a request from said computer server to said computer node of said storage platform in order to determine whether each hash value is present in said table.

7. A method as recited in claim 1 wherein said table is stored on a metadata computer node of said storage platform that corresponds to said first virtual disk.

8. A method as recited in claim 1 wherein based on said first virtual disk having said de-duplication feature enabled, said method further comprising:

after receiving said write request, not writing said first block into said first virtual disk; and

when said controller virtual machine determines that said first hash value is present in said table, not writing said first block into said system virtual disk.

9. A method of reading virtual machine data from a storage platform comprising storage nodes, said method comprising:

at a computer server that hosts a plurality of virtual machines, wherein said plurality of virtual machines comprises a controller virtual machine that intercepts read requests issued by software applications executing within other virtual machines among said plurality of virtual machines:

issuing a read request from a software application executing within a other virtual machine among said plurality of virtual machines at said computer server to read data from a virtual disk of said storage platform at a first offset,

wherein said storage platform comprises a system virtual disk, which is distinct from said first virtual disk, and which stores de-duplicated data in said storage platform, and which is not accessible by said software applications executing within said other virtual machines;

by said controller virtual machine, retrieving, using said first offset, from a storage node within said storage platform, metadata indicating a second offset at said system virtual disk within said storage platform, said system virtual disk not including any duplicate blocks of data;

by said controller virtual machine, reading, from one of said storage nodes within said storage platform said data from said system virtual disk at said second offset; and

by said controller virtual machine, returning said data read from said system virtual disk to said software application executing within said other virtual machine; and

wherein said virtual disk, distinct from the system virtual disk, has a de-duplication feature enabled, and wherein at least one other virtual disk of said storage platform has said de-duplication feature disabled, said de-duplication feature being stored as metadata within said storage platform.

10. A method as recited in claim 9 wherein based on said virtual disk having said de-duplication feature enabled, no duplicate blocks of data of said virtual disk exist within said storage platform.

11. A method as recited in claim 9 wherein said system virtual disk includes all data blocks written to other virtual disks of said storage platform that have a de-duplication feature enabled and no duplicate blocks of data of said other virtual disks exist within said storage platform.

12. A method as recited in claim 9 wherein one of said storage nodes of said storage platform includes a table that includes hash values of all data blocks that have been written to said storage platform addressed to virtual disks of said storage platform that have a de-duplication feature enabled, each hash value having a corresponding system virtual disk offset in said table indicating where on said system virtual disk that said each data block is written, and wherein a first hash value of said data is present in said table.

13. A method as recited in claim 9 , wherein said controller virtual machine retrieves said metadata indicating said second offset at said system virtual disk only if said first virtual disk is administered with de-duplication enabled.

14. A system comprising:

a storage platform in communication with a computer server, wherein the storage platform comprises computer nodes, each computer node comprising a computer and storage devices, wherein a plurality of virtual disks are configured over the computer nodes, wherein the plurality of virtual disks comprises a system virtual disk that stores deduplicated data in the storage platform and is distinct from other virtual disks among the plurality of virtual disks of the storage platform;

wherein the computer server is configured to host a controller virtual machine that intercepts write requests issued by software applications executing within other virtual machines hosted by the computer server;

wherein the controller virtual machine is configured to:

receive from a software application executing within an other virtual machine at the computer server, a write request to write data onto a first virtual disk of the storage platform wherein the first virtual disk is distinct from the system virtual disk,

calculate a hash value for each block within the data in the write request,

determine whether each hash value is present in a table that includes hash values of blocks that have been written to the system virtual disk in the storage platform;

based on the controller virtual machine determining that a first hash value is present in the table, (i) retrieving from the table a first offset indicating where a first block having the first hash value is stored in the system virtual disk, and (ii) writing the first offset and an identifier of the first block to metadata in the storage platform instead of writing the first block to the first virtual disk indicated in the write request,

based on the controller virtual machine determining that a second hash value is not present in the table, (iii) writing a second block having the second hash value to the system virtual disk at a second offset instead of writing the second block to the first virtual disk indicated in the write request, and (iv) writing the second offset and an identifier of the second block to metadata in the storage platform;

wherein the system virtual disk is not accessible to the software applications executing at the computer server; and

wherein the controller virtual machine executing at the computer server is further configured to:

determine whether the first virtual disk is administered with deduplication enabled, and

determine whether each hash value is present in the table only if the first virtual disk is administered with de-duplication enabled.

15. The system of claim 14 , wherein the controller virtual machine is further configured to:

receive from a software application executing within an other virtual machine at the computer server, a read request to read data from a second virtual disk of the storage platform, wherein the second virtual disk is distinct from the system virtual disk,

retrieve from a storage node in the storage platform metadata indicating that the data is stored at a third offset in the system virtual disk,

read the data from the third offset at the system virtual disk, and

return the data read from the system virtual disk to the application that issued the read request at the computer server.

16. The system of claim 15 , wherein the controller virtual machine is further configured to:

retrieve the metadata from the table that includes hash values of blocks that have been written to the system virtual disk in the storage platform.

17. The system of claim 15 , wherein the controller virtual machine executing at the computer server is further configured to:

determine whether the second virtual disk is administered with deduplication enabled, and

retrieve the metadata from the table that includes hash values of blocks that have been written to the system virtual disk in the storage platform only if the second virtual disk is administered with de-duplication enabled.

Assignments (4)
SUPPLEMENTAL CONFIRMATORY GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Apr 16, 2025
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 070864/0344 →
SECURITY INTEREST Recorded Dec 13, 2021
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058496/0836 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2020
From: HEDVIG, INC.
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 051956/0142 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 7, 2017
From: LAKSHMAN, AVINASH; YADAV, GUARAV
To: HEDVIG, INC.
Reel/Frame 043478/0467 →
Continuity (1)
Related Publication 20170329527A1 · Nov 16, 2017
Cited By (6)
US 12,294,622 US 12,367,177 US 12,380,006 US 12,468,481 US 12,547,350 US 12,566,568