IP Library Granted Patent US 11,733,930
Granted Patent B2
US 11,733,930 · App. 17/707,077 · Granted Aug 22, 2023

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 11,733,930
App. No.
17/707,077
Granted
Aug 22, 2023
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 (57)

1. A system comprising:

a data storage platform comprising computer nodes, wherein each computer node among the computer nodes comprises a hardware processor and data storage devices; and

a computer server, which comprises a hardware processor and is in communication with at least one of the computer nodes of the data storage platform, wherein the computer server is configured to execute a controller virtual machine, which is configured to intercept write requests issued by a software application hosted by the computer server, and wherein each write request is addressed to one of a plurality of virtual disks configured on the data storage platform;

wherein the data storage platform is configured with a system deduplication virtual disk that: is distinct from the plurality of virtual disks, comprises data storage containers distributed across one or more of the computer nodes of the data storage platform, and is not presented by the data storage platform as an addressable target for the software application hosted by the computer server;

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

intercept a first write request issued by the software application executing at the computer server, wherein the first write request comprises a first data block, and wherein the first write request is addressed to a first virtual disk configured on the data storage platform, and wherein the first virtual disk is configured with deduplication enabled,

based on determining that the first virtual disk is configured with deduplication enabled, calculate a first hash value for the first data block,

determine whether the first hash value is present in a first table stored at a cache of the controller virtual machine,

based on determining that the first hash value is not present in the first table, determine whether the first hash value is present in a second table, which is stored at and maintained by a metadata module at a first computer node among the computer nodes of the data storage platform, wherein at least one of the first table and the second table includes hash values of data blocks that have been written to the system deduplication virtual disk in the data storage platform, and

based on the controller virtual machine determining that the first hash value is not present in either the first table or the second table: cause a second computer node among the computer nodes of the data storage platform to write the first data block at a first offset in a first data storage container of the system deduplication virtual disk, wherein the first data storage container is configured at the second computer node, and wherein the first data block is not written at the first virtual disk addressed by the first write request, and write the first hash value of the first data block and the first offset to one or more of the first table and the second table.

2. The system of claim 1 , wherein the computer server executing the controller virtual machine is further configured to:

based on the controller virtual machine determining that the first hash value is present in the second table: retrieve from the second table a second offset, which indicates where a given data block having the first hash value of the first data block is stored in a container of the system deduplication virtual disk, and update metadata associated with the first virtual disk to associate the first data block with the given data block at the second offset, wherein the first data block is not written into the first virtual disk addressed by the first write request.

3. The system of claim 1 , wherein the computer server executing the controller virtual machine is further configured to: write the first data block into a cache at the controller virtual machine, wherein the first data block is to be read therefrom in response to a subsequent read request for the first data block received by the controller virtual machine.

4. The system of claim 1 , wherein the first computer node executing the metadata module is configured to: store metadata associated with the first data block, wherein the metadata associated with the first data block comprises an identifier for the first data block and an enumeration of a number of computer nodes of the data storage platform where the first data block was physically written thereinto, wherein the enumeration includes the second computer node.

5. The system of claim 4 , wherein the number corresponds to a replication factor configured for the system deduplication virtual disk.

6. The system of claim 1 , wherein the second computer node is configured to:

write the first data block at the first offset in the first data storage container of the system deduplication virtual disk configured at the second computer node; and

transmit the first data block to a number of other computer nodes among the computer nodes of the data storage platform, wherein the number is based on a replication factor configured for the system deduplication virtual disk.

7. The system of claim 6 , wherein the first computer node hosting the metadata module is the same as the second computer node that stores the first data block.

8. The system of claim 6 , wherein the first computer node hosting the metadata module is different from the second computer node that stores the first data block.

9. The system of claim 1 , wherein the system deduplication virtual disk is configured to store data blocks for all virtual disks that are configured with deduplication enabled among the plurality of virtual disks at the data storage platform.

10. The system of claim 1 , wherein data blocks are written sequentially into the system deduplication virtual disk; and wherein the computer server executing the controller virtual machine is further configured to: request information about a next available offset available in the system deduplication virtual disk.

11. The system of claim 1 , wherein the computer server executing the controller virtual machine is further configured to:

receive from the software application, a read request for a third data block from a third offset of the first virtual disk,

query the metadata module about the third data block, wherein metadata at the metadata module indicates that the third data block is stored at a given offset of the system deduplication virtual disk,

determine that the given offset corresponds to the first data storage container of the system deduplication virtual disk, which is configured at the second computer node,

request the third data block from the second computer node, and

return the third data block to the software application, as obtained from the system deduplication virtual disk.

12. A computer-implemented method comprising:

intercepting a first write request at a controller virtual machine, which is hosted by a computer server that also hosts a software application that issued the first write request,

wherein the computer server comprises a hardware processor,

wherein a data storage platform comprises computer nodes, wherein each computer node among the computer nodes comprises a hardware processor and data storage devices, and wherein the controller virtual machine is in communication with at least one of the computer nodes of the data storage platform,

wherein the first write request comprises a first data block and is addressed to a first virtual disk among a plurality of virtual disks that are configured on the data storage platform, and

wherein the data storage platform is configured with a system deduplication virtual disk that: is distinct from the plurality of virtual disks, comprises data storage containers distributed across one or more of the computer nodes of the data storage platform, and is not presented by the data storage platform as an addressable target for the software application hosted by the computer server; and

by the controller virtual machine hosted by the computer server:

based on intercepting the first write request and determining that the first virtual disk is configured with deduplication enabled, calculating a first hash value for the first data block,

determining whether the first hash value is present in a first table stored at the controller virtual machine,

based on determining that the first hash value is not present in the first table, determining whether the first hash value is present in a second table, which is stored at and maintained by a metadata module at a first computer node among the computer nodes of the data storage platform, wherein at least one of the first table and the second table includes hash values of data blocks that have been written at the system deduplication virtual disk in the data storage platform, and

based on determining that the first hash value is not present in either the first table or the second table:

causing a second computer node among the computer nodes of the data storage platform to write the first data block at a first offset in a first data storage container of the system deduplication virtual disk, wherein the first data storage container is configured at the second computer node, and wherein the first data block is not written at the first virtual disk addressed by the first write request, and writing the first hash value of the first data block and the first offset to one or more of the first table and the second table; and

wherein the first computer node hosting the metadata module is one of: the same as the second computer node that stores the first data block, and different from the second computer node that stores the first data block.

13. The computer-implemented method of claim 12 , further comprising:

based on the controller virtual machine determining that the first hash value is present in the second table:

retrieving from the second table a second offset, which indicates where a given data block having the first hash value of the first data block is stored in a container of the system deduplication virtual disk, and

updating metadata associated with the first virtual disk to associate the first data block with the given data block at the second offset, wherein the first data block is not written into the first virtual disk addressed by the first write request.

14. The computer-implemented method of claim 12 , further comprising: by the controller virtual machine hosted by the computer server, writing the first data block into a cache at the controller virtual machine, wherein the first data block is to be read therefrom in response to a subsequent read request for the first data block received by the controller virtual machine.

15. The computer-implemented method of claim 12 , further comprising: by the first computer node executing the metadata module, storing metadata associated with the first data block, wherein the metadata associated with the first data block comprises an identifier for the first data block and an enumeration of a number of computer nodes among the computer nodes of the data storage platform where the first data block was physically written, wherein the enumeration includes the second computer node.

16. The computer-implemented method of claim 15 , wherein the number corresponds to a replication factor configured for the system deduplication virtual disk.

17. The computer-implemented method of claim 12 , further comprising: by the second computer node, writing the first data block into the first offset in the first data storage container of the system deduplication virtual disk configured at the second computer node, and transmitting the first data block to a number of other computer nodes among the computer nodes of the data storage platform, wherein the number is based on a replication factor configured for the system deduplication virtual disk.

18. The computer-implemented method of claim 12 , wherein the system deduplication virtual disk is configured to store data blocks for all virtual disks that are configured with deduplication enabled among the plurality of virtual disks at the data storage platform.

19. The computer-implemented method of claim 12 , wherein data blocks are written sequentially into the system deduplication virtual disk; and further comprising: by the controller virtual machine hosted by the computer server, requesting information about a next available offset available in the system deduplication virtual disk.

20. The computer-implemented method of claim 12 , further comprising: by the controller virtual machine hosted by the computer server:

receiving from the software application, a read request for a third data block from a third offset of the first virtual disk;

querying the metadata module about the third data block, wherein metadata at the metadata module indicates that the third data block is stored at a given offset of the system deduplication virtual disk;

determining that the given offset corresponds to the first data storage container of the system deduplication virtual disk, which is configured at the second computer node;

requesting the third data block from the second computer node; and

returning the third data block to the software application, as obtained from the system deduplication virtual disk.

Assignments (3)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2022
From: HEDVIG, INC.
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 059604/0391 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2022
From: LAKSHMAN, AVINASH; YADAV, GAURAV
To: HEDVIG, INC.
Reel/Frame 059812/0851 →
Continuity (3)
Continuation 17028164 · Sep 22, 2020
Continuation 15155838 · May 16, 2016
Related Publication 20220222017A1 · Jul 14, 2022