IP Library Granted Patent US 9,804,930
Granted Patent B2
US 9,804,930 · App. 14/152,843 · Granted Oct 31, 2017

Partial file restore in a data storage system

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 9,804,930
App. No.
14/152,843
Granted
Oct 31, 2017
Kind
B2
Abstract

The data storage system according to certain aspects can implement partial file restore, where only a portion of the secondary copy of a file is restored. Such portion may be designated by one or more application offsets for the file. The system may provide an in-chunk index that includes mapping information between the application offsets and the secondary copy offsets. Chunks may refer to logical data units in which secondary copies are stored, and the in-chunk index for a chunk may be stored in secondary storage with the chunk. Because the mapping information may not be provided at a fixed interval, the system can search through application offsets in the in-chunk index to locate the secondary copy offset corresponding to the portion application offset(s). In this manner, the system may restore the designated portion of the secondary copy in a fast and efficient manner by using the in-chunk index.

Claims (43)

1. A method of partially restoring a secondary copy of a first file stored in a data storage system, comprising:

using one or more computing devices comprising computer hardware:

receiving an instruction to restore a portion of a secondary copy of a first file stored in a secondary storage subsystem to a primary storage subsystem for use by a software application that generated the first file, wherein data in the secondary storage subsystem, including the secondary copy of the first file, is stored in one or more chunks, and each chunk is a logical data unit for storing the data in the secondary storage subsystem in one or more secondary storage devices in the secondary storage subsystem,

the instruction comprising a starting application offset corresponding to a beginning of the portion of the first file to be restored, the starting application offset associated with the software application;

identifying a chunk stored in the secondary storage subsystem that includes a part of the secondary copy corresponding to the starting application offset;

accessing an index for the chunk, wherein the index is stored in the chunk and both the index and the chunk are stored in the secondary storage subsystem, the index comprising a plurality of entries, a first entry in the plurality of entries providing a mapping between a first application offset of the first file and a corresponding first secondary storage offset, a second entry in the plurality of entries providing a mapping between a second application offset of a second file and a corresponding second secondary storage offset,

wherein the first application offset is an offset within the first file and is associated with the software application, the first secondary storage offset is an offset within the secondary copy of the first file, and the first secondary storage offset within the secondary copy of the first file corresponds to the first application offset within the first file,

wherein the mapping between the first application offset of the first file and the corresponding first secondary storage offset is stored in the first entry in response to data corresponding to the first application offset being written to a buffer for storage in the secondary storage subsystem during creation of the secondary copy, wherein creation of the secondary copy involves a series of transactions in which data is written to the buffer and then written from the buffer to the secondary storage devices, and wherein an amount of data written to the buffer in each transaction is not predetermined;

iteratively searching application offsets of the plurality of entries in the index to determine that the first entry in the plurality of entries is usable to locate a portion in the chunk that includes data corresponding to the starting application offset; and

using the first secondary storage offset of the first entry to restore the portion in the chunk from the secondary storage subsystem to the primary storage subsystem.

2. The method of claim 1 , wherein the first application offset is the same as the starting application offset or is closer in value to the starting application offset than any other application offset in the plurality of entries.

3. The method of claim 1 , further comprising, in response to determining that the first application offset is closer in value to the starting application offset than any other application offset in the plurality of entries, sending the first application offset that is closer in value to the starting application offset than any other application offset in the plurality of entries to the software application.

4. The method of claim 1 , wherein the index is contained within the chunk.

5. The method of claim 1 , wherein each of the one or more chunks is of equal size.

6. The method of claim 1 , wherein the plurality of entries comprises:

a third entry comprising a third application offset and a third secondary storage offset that corresponds to the third application offset,

wherein a first interval between the first application offset and the second application offset is different from a second interval between the second application offset and the third application offset.

7. The method of claim 6 , wherein a third interval between the first secondary storage offset and the second secondary storage offset is different from a fourth interval between the second secondary storage offset and the third secondary storage offset.

8. The method of claim 1 , wherein the instruction comprises an end application offset indicating an end of the portion of the first file to be restored.

9. The method of claim 1 , wherein a size of the portion in the chunk that is restored to the primary storage subsystem is a predetermined number of bytes from the first secondary storage offset in the first entry.

10. The method of claim 1 , wherein the starting application offset is selected in a graphical user interface of the software application.

11. The method of claim 1 , wherein the secondary copy comprises metadata information relating to the secondary copy.

12. The method of claim 1 , wherein each entry in the plurality of entries comprises physical byte position information that indicates a byte position in the chunk that corresponds to the application offset in the respective entry.

13. The method of claim 12 , wherein said using the first secondary storage offset of the first entry to restore a portion in the chunk comprises restoring a portion of the chunk that begins with a start position that is indicated by the physical byte position information.

14. The method of claim 1 , wherein said determining that the first application offset referenced by the first entry in the plurality of entries corresponds to the starting application offset comprises performing a binary search on the plurality of entries.

15. The method of claim 1 , wherein the secondary copy of the first file is deduplicated or compressed.

16. A data storage system for partially restoring a secondary copy of a first file, comprising:

a storage manager executing on computer hardware and configured to:

receive an instruction to restore a portion of a secondary copy of a file stored in a secondary storage subsystem to a primary storage subsystem for use by a software application that generated the first file, wherein data in the secondary storage subsystem, including the secondary copy of the first file, is stored in one or more chunks, and each chunk is a logical data unit for storing the data in the secondary storage subsystem in one or more secondary storage devices in the secondary storage subsystem,

the instruction comprising a starting application offset corresponding to a beginning of the portion of the first file to be restored, the starting application offset associated with the software application; and

one or more computing devices comprising computer hardware and configured to:

identify a chunk stored in the secondary storage subsystem that includes a part of the secondary copy corresponding to the starting application offset;

access an index for the chunk, wherein the index is stored in the chunk and both the index and the chunk are stored in the secondary storage subsystem, the index comprising a plurality of entries, a first entry in the plurality of entries providing a mapping between a first application offset of the first file and a corresponding first secondary storage offset, a second entry in the plurality of entries providing a mapping between a second application offset of a second file and a corresponding second secondary storage offset,

wherein the first application offset is an offset within the first file and is associated with the software application, the first secondary storage offset is an offset within the secondary copy of the first file, and the first secondary storage offset within the secondary copy of the first file corresponds to the first application offset within the first file,

wherein the mapping between the first application offset of the first file and the corresponding first secondary storage offset is stored in the first entry in response to data corresponding to the first application offset being written to a buffer for storage in the secondary storage subsystem during creation of the secondary copy, wherein creation of the secondary copy involves a series of transactions in which data is written to the buffer and then written from the buffer to the secondary storage devices, and wherein an amount of data written to the buffer in each transaction is not predetermined;

iteratively search application offsets of the plurality of entries in the index to determine that the first entry in the plurality of entries is usable to locate a portion in the chunk that includes data corresponding to the starting application offset; and

use the first secondary storage offset of the first entry to restore the portion in the chunk from the secondary storage subsystem to the primary storage subsystem.

17. The system of claim 16 , wherein the first application offset that is the same as the starting application offset or is closer in value to the starting application offset than any other application offset in the plurality of entries.

18. The system of claim 16 , wherein the plurality of entries comprises:

a third entry comprising a third application offset and a third secondary storage offset that corresponds to the third application offset,

wherein a first interval between the first application offset and the second application offset is different from a second interval between the second application offset and the third application offset.

19. The system of claim 16 , wherein each entry in the plurality of entries comprises physical byte position information that indicates a byte position in the chunk that corresponds to the application offset in the respective entry.

20. The system of claim 16 , wherein the one or more computing devices iteratively search the application offsets of the plurality of entries in the index using a binary search.

Assignments (5)
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 →
RELEASE OF SECURITY INTEREST Recorded Jan 6, 2021
From: BANK OF AMERICA, N.A.
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 054913/0905 →
SECURITY INTEREST Recorded Jul 2, 2014
From: COMMVAULT SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 033266/0678 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2014
From: VIJAYAN, MANOJ KUMAR; ATTARDE, DEEPAK RAGHUNATH
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 032536/0239 →