US 9,811,423 B2
Partial file restore in a data storage system
Manoj Kumar Vijayan, Marlboro, NJ (US); and Deepak Raghunath Attarde, Marlboro, NJ (US)
Assigned to Commvault Systems, Inc., Tinton Falls, NJ (US)
Filed by CommVault Systems, Inc., Oceanport, NJ (US)
Filed on Jan. 10, 2014, as Appl. No. 14/152,880.
Claims priority of provisional application 61/751,680, filed on Jan. 11, 2013.
Prior Publication US 2014/0201155 A1, Jul. 17, 2014
Int. Cl. G06F 17/00 (2006.01); G06F 11/14 (2006.01); G06F 11/20 (2006.01)
CPC G06F 11/1456 (2013.01) [G06F 11/1448 (2013.01); G06F 11/1451 (2013.01); G06F 11/1469 (2013.01); G06F 11/2094 (2013.01); G06F 2201/84 (2013.01)] 18 Claims
OG exemplary drawing
 
1. A method of storing files in secondary storage in a data storage system, comprising:
using one or more computing devices comprising computer hardware:
initiating copying of a plurality of files from a primary storage subsystem to a secondary storage subsystem, wherein data stored on the secondary storage subsystem 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 residing in the secondary storage subsystem;
copying a first portion of a first file of the plurality of files from the primary storage subsystem to a buffer for writing to the secondary storage subsystem;
creating a first entry in an index for a first chunk of the one or more chunks, the index stored in association with the first chunk in the secondary storage subsystem, the first entry corresponding to the first portion of the first file and comprising:
a first application offset determined by a software application that accessed the first file and that corresponds to the first portion of the first file, wherein the first application offset designates a starting position within the first file of the first portion of the first file to be restored from a secondary copy of the first file in the first chunk stored in the secondary storage subsystem; and
a first secondary storage offset indicating a location of the first portion of the first file within the secondary copy of the first file in the first chunk in the secondary storage subsystem;
copying a second portion of the first file from the primary storage subsystem to the buffer for writing to the secondary storage subsystem;
creating a second entry in the index for the first chunk, the second entry corresponding to the second portion of the first file and comprising:
a second application offset determined by the software application that accessed the first file and that corresponds to the second portion of the first file, wherein the second application offset designates a starting position within the first file of the second portion of the first file to be restored from the secondary copy of the first file in the first chunk stored in the secondary storage subsystem; and
a second secondary storage offset indicating a location of the second portion of the first file within the secondary copy of the first file in the first chunk in the secondary storage subsystem;
writing the first portion from the buffer to the location indicated by the first secondary storage offset and writing the first entry to the first chunk in response to the first portion being written from the buffer; and
writing the second portion from the buffer to the location indicated by the second secondary storage offset and writing the second entry to the first chunk in response to the second portion being written from the buffer,
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 subsystem, and wherein an amount of data written to the buffer in each transaction is not predetermined.