IP Library Granted Patent US 10,732,885
Granted Patent B2
US 10,732,885 · App. 15/981,770 · Granted Aug 4, 2020

Block-level live browsing and private writable snapshots using an ISCSI server

Inventors: Sunil Kumar Gutta (Hyderabad, IN); Vijay H. Agrawal (Pune, IN)
Assignee: Commvault Systems, Inc.
G06F3/065G06F3/064G06F3/067G06F3/0619G06F13/1668G06F13/4221G06F2213/0036
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,732,885
App. No.
15/981,770
Granted
Aug 4, 2020
Kind
B2
Abstract

An illustrative ISCSI server computing device provides user computing devices with “private writable snapshots” of a desired volume of data and/or further provides “private writable backup copies.” The ISCSI service is provided without invoking snapshot limits imposed by storage arrays and further without specialized backup software and pseudo-disk drivers installed on the user computing devices. A user can browse as well as edit personal versions of any number and/or versions of block-level backup copies—the “private writable backup copies.” Likewise, a user can browse and edit personal versions of any number of snapshots of one or more versions of one or more desired data volumes—the “private writable snapshots.” A user can have any number of co-existing private writable snapshots and private writable backup copies. Sparse files, extent-files, software snapshots, and/or media agents co-residing on the ISCSI server are used in the illustrative embodiments.

Claims (71)

1. A system for providing private writable snapshots to user computing devices, the system comprising:

a first computing device comprising an Internet Small Computer Systems Interface (ISCSI) service;

a second computing device in communication with the first computing device via ISCSI protocol; and

wherein the first computing device using the ISCSI service is configured to:

receive from the second computing device a first unique identifier and a first request for a first private writable snapshot of a first volume,

if a first snapshot of the first volume was not previously created, generate a first snapshot of the first volume,

from the first snapshot, generate a sparse file designated a master sparse file which corresponds to the first snapshot,

from the master sparse file, generate a private sparse file having the first unique identifier,

present the private sparse file as a logical unit number (LUN) to the second computing device; and

wherein the second computing device is configured to, by mounting the LUN, access the private sparse file for browsing data blocks obtained from the first volume and further for implementing changes to the data blocks obtained from the first volume without changing the first snapshot.

2. The system of claim 1 wherein the first computing device is further configured to:

generate a master bitmap associated with the master sparse file, wherein the master bitmap tracks which data blocks are present in the master sparse file, and

generate a private bitmap associated with the private sparse file, wherein the private bitmap tracks which data blocks are present in the private sparse file.

3. The system of claim 1 wherein the first computing device is further configured to:

generate a master bitmap associated with the master sparse file, wherein the master bitmap tracks which data blocks are present in the master sparse file, including data blocks copied therein from the first snapshot, and

generate a private bitmap associated with the private sparse file, wherein the private bitmap tracks which data blocks are present in the private sparse file, including data blocks copied therein from the master sparse file and data blocks written therein by the second computing device.

4. The system of claim 1 wherein the first computing device is further configured to store the first snapshot, the master sparse file, and the private sparse file.

5. The system of claim 1 wherein the first computing device is further configured to:

receive from the second computing device a first read request for a first data block in the LUN,

check a private bitmap associated with the private sparse file to determine whether the first data block is present in the private sparse file, and if the private bitmap so indicates, serve the first data block from the private sparse file to the second computing device in response to the first read request,

if the private bitmap indicates that the first data block is not present in the private sparse file, check a master bitmap associated with the master sparse file to determine whether the first data block is present in the master sparse file, and if the master bitmap so indicates, serve the first data block from the master sparse file to the second computing device in response to the first read request, and

if the private bitmap indicates that the first data block is not present in the private sparse file and the master bitmap indicates that the first data block is not present in the master sparse file, copy the first data block from the first snapshot to the master sparse file and update the master bitmap to indicate that the first data block is present in the master sparse file.

6. The system of claim 1 wherein the first computing device is further configured to:

receive from the second computing device a first write request to write a first data block to the LUN,

check a private bitmap associated with the private sparse file to determine whether the private sparse file comprises a corresponding data block, and if the private bitmap so indicates, write the first data block as received from the second computing device to the private sparse file, thereby overwriting the corresponding data block, and

if the private bitmap indicates that the private sparse file lacks the corresponding data block, check a master bitmap associated with the master sparse file to determine whether the master sparse file comprises the corresponding data block, and if the private bitmap so indicates, copy the corresponding data block from the master sparse file to the private sparse file and update the private bitmap to indicate that the private sparse file comprises the corresponding data block.

7. The system of claim 1 wherein the private sparse file is based on the first snapshot and the master sparse file, and incorporates changes generated by the second computing device that are written to the private sparse file without changing the first snapshot, thereby becoming a private writable snapshot.

8. A computer-readable medium, excluding transitory propagating signals, storing instructions that, when executed by at least one computing device comprising one or more processors and computer memory, cause the computing device to perform operations comprising:

receiving from a second computing device via ISCSI protocol, a first unique identifier and a first request for a first private writable snapshot of a first volume;

if a first snapshot of the first volume was not previously created, generating a first snapshot of the first volume;

from the first snapshot, generating a sparse file designated a master sparse file which corresponds to the first snapshot;

from the master sparse file, generating a private sparse file having the first unique identifier received from the second computing device;

presenting by the first computing device the private sparse file as a logical unit number (LUN) to the second computing device, to be mounted thereby as the LUN, thereby granting the first computing access to the private sparse file as the first private writable snapshot.

9. The computer-readable medium of claim 8 , wherein the operations further comprise:

receiving from the second computing device a first read request for a first data block in the LUN;

checking a private bitmap associated with the private sparse file to determine whether the first data block is present in the private sparse file, and if the private bitmap so indicates, serving the first data block from the private sparse file to the second computing device in response to the first read request;

if the private bitmap indicates that the first data block is not present in the private sparse file, checking a master bitmap associated with the master sparse file to determine whether the first data block is present in the master sparse file, and if the master bitmap so indicates, serving the first data block from the master sparse file to the second computing device in response to the first read request.

10. The computer-readable medium of claim 9 , wherein the operations further comprise:

if the private bitmap indicates that the first data block is not present in the private sparse file and the master bitmap indicates that the first data block is not present in the master sparse file, copying the first data block from the first snapshot to the master sparse file and updating the master bitmap to indicate that the first data block is present in the master sparse file.

11. The computer-readable medium of claim 8 , wherein the operations further comprise:

receiving from the second computing device a first write request to write a first data block to the LUN;

checking a private bitmap associated with the private sparse file to determine whether the private sparse file comprises a corresponding data block, and if the private bitmap so indicates, writing the first data block as received from the second computing device to the private sparse file, thereby overwriting the corresponding data block, and

if the private bitmap indicates that the private sparse file lacks the corresponding data block, checking a master bitmap associated with the master sparse file to determine whether the master sparse file comprises the corresponding data block, and if the private bitmap so indicates, copying the corresponding data block from the master sparse file to the private sparse file and updating the private bitmap to indicate that the private sparse file comprises the corresponding data block.

12. A method for providing private writable snapshots to user computing devices, the method comprising:

receiving,

by a first computing device that executes an Internet Small Computer Systems Interface (ISCSI) service,

from a second computing device in communication with the first computing device via ISCSI protocol,

a first unique identifier and a first request for a first private writable snapshot of a first volume;

if a first snapshot of the first volume was not previously created, generating by the first computing device a first snapshot of the first volume;

from the first snapshot, generating by the first computing device a sparse file designated a master sparse file which corresponds to the first snapshot;

from the master sparse file, generating by the first computing device a private sparse file having the first unique identifier received from the second computing device;

presenting by the first computing device the private sparse file as a logical unit number (LUN) to the second computing device; and

mounting the LUN by the second computing device, thereby acquiring access to the private sparse file for browsing data blocks obtained from the first volume and further for implementing changes to the data blocks obtained from the first volume without changing the first snapshot, and wherein the private sparse file is based on the first snapshot and the master sparse file, and incorporates changes generated by the second computing device that are written to the private sparse file, thereby becoming a private writable snapshot.

13. The method of claim 12 further comprising:

generating by the first computing device a master bitmap associated with the master sparse file, wherein the master bitmap tracks which data blocks are present in the master sparse file, and

generating by the first computing device a private bitmap associated with the private sparse file, wherein the private bitmap tracks which data blocks are present in the private sparse file.

14. The method of claim 12 further comprising:

generating by the first computing device a master bitmap associated with the master sparse file, wherein the master bitmap tracks which data blocks are present in the master sparse file, including data blocks copied therein from the first snapshot, and

generating by the first computing device a private bitmap associated with the private sparse file, wherein the private bitmap tracks which data blocks are present in the private sparse file, including data blocks copied therein from the master sparse file and data blocks written therein by the second computing device.

15. The method of claim 12 wherein the first computing device stores the first snapshot, the master sparse file, and the private sparse file.

16. The method of claim 12 further comprising:

receiving by the first computing device from the second computing device a first read request for a first data block in the LUN,

checking by the first computing device a private bitmap associated with the private sparse file to determine whether the first data block is present in the private sparse file, and if the private bitmap so indicates, serving the first data block from the private sparse file to the second computing device in response to the first read request, and

if the private bitmap indicates that the first data block is not present in the private sparse file, checking by the first computing device a master bitmap associated with the master sparse file to determine whether the first data block is present in the master sparse file, and if the master bitmap so indicates, serving the first data block from the master sparse file to the second computing device in response to the first read request.

17. The method of claim 16 further comprising:

if the private bitmap indicates that the first data block is not present in the private sparse file and the master bitmap indicates that the first data block is not present in the master sparse file, copying by the first computing device the first data block from the first snapshot to the master sparse file and update the master bitmap to indicate that the first data block is present in the master sparse file.

18. The method of claim 12 further comprising:

receiving by the first computing device from the second computing device a first write request to write a first data block to the LUN; and

checking by the first computing device a private bitmap associated with the private sparse file to determine whether the private sparse file comprises a corresponding data block, and if the private bitmap so indicates, writing the first data block as received from the second computing device to the private sparse file, thereby overwriting the corresponding data block.

19. The method of claim 18 further comprising:

if the private bitmap indicates that the private sparse file lacks the corresponding data block, checking a master bitmap associated with the master sparse file to determine whether the master sparse file comprises the corresponding data block, and if the private bitmap so indicates, copying the corresponding data block from the master sparse file to the private sparse file and updating the private bitmap to indicate that the private sparse file comprises the corresponding data block.

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 →
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 May 18, 2018
From: GUTTA, SUNIL KUMAR; AGRAWAL, VIJAY H.
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 046201/0244 →
Continuity (2)
Provisional Application 62630698 · Feb 14, 2018
Related Publication 20190250827A1 · Aug 15, 2019
Cited By (7)
US 12,235,744 US 12,294,622 US 12,360,942 US 12,367,177 US 12,380,006 US 12,645,541 US 12,681,817