Image level copy or restore, such as image level restore without knowledge of data object metadata

Information

  • Patent Grant
  • 8725688
  • Patent Number
    8,725,688
  • Date Filed
    Thursday, September 3, 2009
    15 years ago
  • Date Issued
    Tuesday, May 13, 2014
    10 years ago
Abstract
A system and method for performing an image level restore of data is described. In some examples, the system receives a request to restore a file and transmits the request to an intermediate component. The intermediate component may then retrieve a directory file from an image of a secondary copy of a data set, identify a location of the file from the directory file, and provide the location to the requestor.
Description
BACKGROUND

A snapshot is a copy of a set of files and/or directories as they were at a particular point in the past. That is, the snapshot is an image, or representation, of a volume of data at a point in time. A snapshot may be as a secondary copy of a primary volume of data, such as data in a file system, an Exchange server, a SQL database, an Oracle database, and so on. The snapshot may be an image of files, folders, directories, and other data objects within a volume, or an image of the blocks of the volume.


Data storage systems utilize snapshots for a variety of reasons. One typical use of snapshots is to copy a volume of data without disabling access to the volume for a long period. After performing the snapshot, the data storage system can then copy the data set by leveraging the snapshot of the data set. Thus, the data storage system performs a full backup of a primary volume when a primary volume is active and generating real-time data. Although performing a snapshot (i.e., taking an image of the data set) is a fast process, the snapshot is typically not an effective or reliable backup copy of a data set, because it does not actually contain the content of the data set. Restoring data from snapshots can be especially cumbersome, because a restoration process cannot restore the data set using snapshots alone. Recovery of individual files or folders can be especially cumbersome, because typical systems often recover an entire snapshot in order to restore an individual file or folder imaged by the snapshot.


Associated information, such as metadata, is often required in order to restore a file or folder via the snapshot, because the snapshot itself does not provide any information about the file or folder other than the image of a data set at a certain time. That is, the snapshot provides information about what was in or is changed in a data set (the image), but does not provide any information about where a particular file (or a copy of a data object) is currently stored or contained.


Therefore, a system that provides the benefits of snapshots while avoiding some of the drawbacks would provide significant utility.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram illustrating components of a data stream utilized by a suitable data storage system.



FIG. 2 is a block diagram illustrating an example of a data storage system.



FIG. 3 is a block diagram illustrating an example of components of a server used in data storage operations.



FIG. 4A is a block diagram illustrating a system for restoring data from a snapshot-based secondary copy of data.



FIG. 4B is a block diagram illustrating computing system components for restoring data from a snapshot-based secondary copy of data.



FIG. 5 is a block diagram illustrating an intermediate component used in restoring data from a snapshot-based secondary copy of data.



FIG. 6 is a flow diagram illustrating a routine for restoring a file using an intermediate component.



FIG. 7 is a flow diagram illustrating a routine for recovering a file via an intermediate component.



FIG. 8 is a table illustrating a directory file used in identifying locations of files imaged by snapshots.



FIG. 9 is a flow diagram illustrating a routine for restoring a file using a cache associated with an intermediate component.





DETAILED DESCRIPTION

Overview


Described in detail herein is a system and method that restores desired data via snapshot images of the data by retrieving a directory file from the snapshots, using the directory file to identify a location of where the data is stored, and providing the location to a requestor of the data (such as a data recovery system, a user, and so on). That is, the system may restore data from an image level copy of the data without generally relying on metadata or other similar information associated with the data.


In some examples, the system includes an intermediate component communicating between a data recovery system and a secondary copy of data to be restored, such as a snapshot copy mounted to the intermediate component. The snapshot copy may be a software-based snapshot (such as a snapshot performed using File System Snapshot, Qsnap, Volume Shadow Services, and so on), or a hardware-based snapshot (such as a snapshot performed using EMC, HP, Hitachi, and/or NetApp or other applications). For example, the snapshot copy may be created during a copy-on-write process, a redirect-on-write process, a split mirror process, using a log structure file architecture, using continuous data protection, and so on. The intermediate component may receive a request from the data recovery system to restore a file, locate a snapshot that contains an image of the file, retrieve, from the snapshot, a directory file imaged by the snapshot, identify a location for the file from the directory file, and indicate the location for the file to the data recovery system. The data recovery system can then retrieve the requested file using the location information.


In some examples, the system includes a cache or other memory component that stores retrieved files, directory files, and other data once the data is requested and/or retrieved during a restoration process. Before identifying a snapshot that images the file, the system may review the cache after receiving a request to restore a file. In some cases, the system may identify a directory file associated with the file, and extract the location information directly from the cached directory file. In some cases, the system may restore the file directly from the cache.


Thus, in some examples, the system utilizes an intermediate component to facilitate the extraction of information from imaged directory files that identify locations of files within imaged data sets. Knowledge or extraction of location information enables a recovery system to avoid relying on metadata and/or other indexed information associated with a data set and/or a snapshot of a data set. Additionally, in some examples the system enables a snapshot-based copy of data to act as a file system for all data imaged by the copy of data.


The system will now be described with respect to various examples. The following description provides specific details for a thorough understanding of, and enabling description for, these examples of the system. However, one skilled in the art will understand that the system may be practiced without these details. In other instances, well-known structures and functions have not been shown or described in detail to avoid unnecessarily obscuring the description of the examples of the system.


The terminology used in the description presented below is intended to be interpreted in its broadest reasonable manner, even though it is being used in conjunction with a detailed description of certain specific examples of the system. Certain terms may even be emphasized below; however, any terminology intended to be interpreted in any restricted manner will be overtly and specifically defined as such in this Detailed Description section.


Suitable System


Referring to FIG. 1, a block diagram illustrating components of a data stream utilized by a suitable data storage and recovery system is shown. The stream 110 may include a client 111, a media agent 112, and a secondary storage device 113. For example, in storage operations, the system may store, receive and/or prepare data to be stored, copied or backed up at a server or client 111. The system may then transfer the data to be stored to media agent 112, which may then refer to storage policies, schedule policies, and/retention policies (and other policies) to choose a secondary storage device 113. The media agent 112 may include or be associated with an intermediate component, to be discussed herein.


The secondary storage device 113 receives the data from the media agent 112 and stores the data as a secondary copy, such as a backup copy. Secondary storage devices may be magnetic tapes, optical disks, USB and other similar media, disk and tape drives, and so on. Of course, the system may employ other configurations of stream components not shown in the Figure.


Referring to FIG. 2, a block diagram illustrating an example of a data storage and recovery system 200 is shown. Data storage systems may contain some or all of the following components, depending on the needs of the system. FIG. 2 and the following discussion provide a brief, general description of a suitable computing environment in which the system can be implemented. Although not required, aspects of the system are described in the general context of computer-executable instructions, such as routines executed by a general-purpose computer, e.g., a server computer, wireless device or personal computer. Those skilled in the relevant art will appreciate that the system can be practiced with other communications, data processing, or computer system configurations, including: Internet appliances, network PCs, mini-computers, mainframe computers, and the like. Indeed, the terms “computer,” “host,” and “host computer” are generally used interchangeably herein, and refer to any of the above devices and systems, as well as any data processor.


Aspects of the system can be embodied in a special purpose computer or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein. Aspects of the system can also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through a communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), Storage Area Network (SAN), Fibre Channel, or the Internet. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.


Aspects of the system may be stored or distributed on computer-readable media, including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, biological memory, or other tangible or physical data storage media. In some aspects of the system, computer implemented instructions, data structures, screen displays, and other data under aspects of the system may be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they may be provided on any analog or digital network (packet switched, circuit switched, or other scheme). Those skilled in the relevant art will recognize that portions of the system reside on a server computer, while corresponding portions reside on a client computer, and thus, while certain hardware platforms are described herein, aspects of the system are equally applicable to nodes on a network.


The data storage system 200 contains a storage manager 210, one or more clients 111, one or more media agents 112, and one or more storage devices 113. Storage manager 210 controls media agents 112, which may be responsible for transferring data to storage devices 113. Storage manager 210 includes a jobs agent 211, a management agent 212, a database 213, and/or an interface module 214. Storage manager 210 communicates with client(s) 111. One or more clients 111 may access data to be stored by the system from database 222 via a data agent 221. The system uses media agents 112, which contain databases 231, to transfer and store data into storage devices 113. Client databases 222 may contain data files and other information, while media agent databases may contain indices and other data structures that include information associated with the storage of data into secondary storage devices, for example.


The data storage and recovery system may include software and/or hardware components and modules used in data storage operations. The components may be storage resources that function to copy data during storage operations. The components may perform other storage operations (or storage management operations) other that operations used in data stores. For example, some resources may create, store, retrieve, and/or migrate primary or secondary data copies. Additionally, some resources may create indices and other tables relied upon by the data storage system and other data recovery systems. The secondary copies may include snapshot copies and associated indices, but may also include other backup copies such as HSM copies, archive copies, and so on. The resources may also perform storage management functions that may communicate information to higher level components, such as global management resources.


In some examples, the system performs storage operations based on storage policies, as mentioned above. For example, a storage policy includes a set of preferences or other criteria to be considered during storage operations. The storage policy may determine or define a storage location and/or set of preferences about how the system transfers data to the location and what processes the system performs on the data before, during, or after the data transfer. In some cases, a storage policy may define a logical bucket in which to transfer, store or copy data from a source to a data store, such as storage media. Storage policies may be stored in storage manager 210, or may be stored in other resources, such as a global manager, a media agent, and so on. Further details regarding storage management and resources for storage management will now be discussed.


Referring to FIG. 3, a block diagram illustrating an example of components of a server used in data storage operations is shown. A server, such as storage manager 210, may communicate with clients 111 to determine data to be copied to storage media. As described above, the storage manager 210 may contain a jobs agent 211, a management agent 212, a database 213, and/or an interface module. Jobs agent 211 may manage and control the scheduling of jobs (such as copying data files) from clients 111 to media agents 112. Management agent 212 may control the overall functionality and processes of the data storage system, or may communicate with global managers. Database 213 or another data structure may store storage policies, schedule policies, retention policies, or other information, such as historical storage statistics, storage trend statistics, and so on. Interface module 215 may interact with a user interface, enabling the system to present information to administrators and receive feedback or other input from the administrators or with other components of the system (such as via APIs).


Data Recovery Using an Intermediary


In some examples, the system performs some or all the operations described herein using an intermediate component, virtual storage device, virtual device drover, or other intermediary capable of mounting to a file system and communicating with a storage device. That is, an intermediate component may communicatively reside between a component that receives requests for files (such as a restoration component) and a data store (such as a data storage component). The intermediate component enables flexibility during data restoration, enabling a file system to indirectly access a secondary copy of data in order to identify information associated with data stored by the secondary copy, among other benefits.


Referring to FIG. 4A, a block diagram illustrating a system for restoring data 400 from a snapshot-based secondary copy of data is shown. The system 400 includes a restore component 410 that receives data recovery requests from users, such as from system administrators. The restore component 410 may include a file system that receives and sends requests, and a display component that includes a user interface that enables users to visually interact with the restore component. Among other things, the user interface may facilitate the selection of data, such as files, folders, or other self-contained data objects to be restored.


The restore component 410 sends data recovery requests to an intermediate component 420, to be discussed herein. Briefly, the intermediate component 420 acts to receive requests from the restore component 410 and to provide location information for requested data. The intermediate component 420 communicates with a storage component 430, such as storage media containing secondary copies of a data set. The storage component receives requests for files or folders via the intermediate component, and may transfer the files or folders (or information associated with the files or folders) to the intermediate component 420 or to the restore component 410.


The system 400 may also include an optional cache 425 associated with the intermediate component 420. The cache, or other memory component, may store files or information retrieved from the storage component 430, such as files or information requested by the restore component 410 via the intermediate component 420. The cache 425 may serve requests for files or information included in the cache, to promptly respond to a request, such as a request for the same file that was recently and/or previously requested. Although the cache 425 is shown as being outside the intermediate component, other configurations are of course possible. For example, the cache may be included within the intermediate component, within the restore component 410, within the storage component 430, and so on. Additionally, some or all of the components may include a cache that stores various files or information retrieved during data recovery.


Referring to FIG. 4B, a block diagram illustrating computing system components for restoring data from a snapshot-based secondary copy of data is shown. As discussed with respect to FIG. 4A, the system components include a restore component 410, an intermediate component 420, and a data storage component 430. The restore component 410 may include a client 415, such as a client that receives requests from users. The client may communicate received requests to a file system 417 that communicates with storage devices, such as a database 418 located at the restore component 410. For example, the database 418 may be a hard drive or hard disk that stores data produced by the file system as primary copies or production copies of the data. The system components may also include an intermediate component 420, such as a virtual device driver. The virtual device driver 420 communicates with a disk driver 435 and mounted disk 437, which together act as the data storage component 430.


Referring to FIG. 5, a block diagram illustrating an intermediate component 420 used in restoring data from a snapshot-based secondary copy of data is shown. The intermediate component 420 may include a restore module 510 containing its own file system 515. The restore module 510 (or component, sub-system, and so on), may communicate with a file system, such as the file system 417 at the restore component 410.


The intermediate component 420 may also include a storage device module 520 that communicates with storage devices, such as disk driver 435 and disk 437 (or other removable media). The storage device module 520 may include a directory module 525 that accesses entries within directory files obtained from snapshot-based secondary copies and extracts information from the directory files, such as location information associated with files indexed by the directory files. In other words, to determine the location of files, the directory module identifies the specific disk or storage device maintaining a desired file and identifies the blocks on the disk that contain the file, such as by retrieving the directory, file allocation table (FAT), master file table (MFT), or other data structures that describe files and file locations on the disk.


The intermediate component 420 may also include a cache 530 (or, a cache module or interface that communicates with an external cache), and/or other agents or components 540, such as components that index files, classify files, manage files or information, and so on.


As discussed above, the system facilitates the recovery of files from snapshot-based secondary copies of data using an intermediary. Referring to FIG. 6, a flow diagram illustrating a routine 600 for restoring a file using an intermediate component is shown. In step 610, the system receives a request to restore a file. For example, the system receives the request via a user interface associated with a restore component 410. The request may present, via a graphical user interface, a list of files stored in secondary storage. For example, the system may present files currently stored on disk along with files no longer on disk but stored on secondary storage. The user or administrator may then select a desired file and/or files.


Alternatively or additionally, the request may include an indication of a snapshot (or group of snapshots) that contain an image of the file. The system may present snapshots (or groups of snapshots) to a user via the user interface, or information associated with the snapshots or groups of snapshots. For example, the system may present information identifying various snapshots taken of a file or of a data store that contained the file. In some cases, the restore component 410 presents, via the user interface, various groups of snapshots to a user for selection.


In step 620, the system recovers the file using an intermediary, such as the intermediate component 420. For example, the intermediary may receive the request, identify a location of the requested file, and provide the location to the requestor. By having previously mapped specific files with particular disks and/or storage devices, and with snapshots of the mapped storage devices, the system of FIG. 5 can readily locate the disk location and block extent of the desired file or files, as described herein. In step 630, the system retrieves the requested file from the identified location. For example, the restore component 410, using provided location information, directly accesses a data storage device and retrieves the file from the data storage device. That is, the system may access a directory file, identify data blocks that correspond to a requested file, and provide the data block identification to a file system. The file system may then directly access the file using the provided data block information.


Thus, the intermediary, in some examples, intercepts requests for files from a file system in order to quickly and efficiently provide location information associated with the file to the file system. The file system, using the provided information, can then directly access and retrieve the file. The intermediary will now be discussed. Referring to FIG. 7, a flow diagram illustrating a routine 620 for recovering a file via the intermediate component 420 is shown.


In step 710, the system mounts the file system, or launches a file system process for accessing a file location data structure, to an intermediate component, such as a component that acts as a virtual storage device. That is, the file system communicates with a component that appears to external systems (such as file system 417) to be the disk driver 435 for reading and writing data from disk 437, but is in fact the intermediate component 420 communicating between the file system and the storage device.


In step 720, the file system requests a directory file from the storage device 430. That is, the file system requests an index or other table that is associated with and identifies the files within the storage device and the secondary copies contained within the storage device and locations of those files. In some cases, the directory file was created when a primary copy of the data was created, or was periodically created and/or updated from a primary volume. For snapshot-based copies, the directory file may be imaged by a snapshot along with the files imaged by the snapshot.


Referring to FIG. 8, a table 800 illustrating a directory file used in identifying locations of files imaged by snapshots is shown. The table 800 includes entries for files imaged by the snapshot, and includes a column storing a name or other similar information 810 for each entry a column storing a location 820 or other similar information for each entry. For example, the entry 830 contains a file named “doc1.doc” and information associated with the file, “blocks 100-200.” In addition, entry 840 contains a file named “doc2.doc” and information associated with the file, “blocks 200-400” and “N:/blocks 120-126” (e.g., the file is stored in multiple locations). Of course, the table 800 may include other information.


Referring back to FIG. 7, in step 730, the virtual storage device obtains data blocks from the storage device. The virtual storage device may intercept or trap the request from step 720 and send a request to the storage device. The virtual storage device may extract some or all of the directory file and provide the necessary data blocks.


In step 740, the virtual storage device presents the obtained data blocks to the file system. Optionally, upon receiving a selection of a file by the file system, the virtual storage device sends a location of the selected file to the file system. That is, the virtual storage device reviews the extracted directory file, obtains location information (such as the blocks on a magnetic disk storing a file, the tape offsets on a tape storing the file, and so on), and provides the location information to the file system. In step 745, the virtual storage device may optionally store the obtained data blocks in an associated cache, to serve future requests for files in the directory, among other things In step 755, the virtual storage device may optionally store the provided location information, the file itself, and/or the directory file in the cache, as described above.


In step 760, the file system retrieves the file from the storage device using the location information provided by the virtual storage device and responds to the original request. Using the location information, the file system may directly mount to the storage device and retrieve the file at the provided location. Alternatively, the virtual storage device may retrieve the file from the storage device and present the file to the file system.


As an example, a user, via a user interface presented to the user at a client computer 415, selects one or more Microsoft® Exchange® mailboxes to restore. The Exchange mailbox includes one or more files and associated data objects (such as emails) currently stored at the client computer 415 (or in database 418) as well as files that have been stored in snapshot-based secondary copies and moved from the database 418. The system, however, is able to present all the files to the user via the user interface. For example, Windows Explorer, or a similar application, may query the database 418 and obtain files and/or associated data objects associated with the mailbox, and lists them for the user. In addition, Windows Explorer queries the data storage component 430 for files/data objects associated with the mailbox. This query is intercepted by the intermediate component, which retrieves a directory file associated with the data imaged by the snapshot-based secondary copies, and transfers the directory file to the user via the user interface. The user interface presents all retrieved files/data objects to the user, without the user performing any additional or different steps to receive information from the snapshot-based secondary copies.


When the user selects a file/data object stored in database 418, the system looks to a FAT, MFT, or other location table associated with the file system 417, identifies the blocks in the database that contain the file/data object, and retrieves the file/data object. However, when the user selects a file/data object no longer stored in database 418, the system performs one of the routines described herein, such as routine 700, via a restore component or other similar components described herein. For example, the file system 417 sends a request to the data storage component 430 in order to retrieve the file/data object. The request is intercepted by the intermediate component 420, which then locates the file/data object based on information in the directory file that associates the snapshot image of the file with the file's location (e.g., what physical storage media stores the file and where on that physical storage media it resides). The system then transfers the location information to the file system, which then retrieves the file/data object. Thus, the system facilitates the recovery of data for users without required a user or a file system to perform additional tasks or functions when the data is not stored at the file system.


Of course, the routines and examples described herein with some of the steps omitted or modified. For example, a virtual storage device may receive a request for a file and only provide location information for the file (and not the directory file). Additionally, the virtual storage device may first look to the cache before retrieving a directory file, which will now be discussed.


Referring to FIG. 9, a flow diagram illustrating a routine 900 for restoring a file using a cache associated with an intermediate component is shown. In step 910, a file system receives a request to restore a file. In step 920, the file system mounts to an intermediate component, which includes a cache or other memory component. In step 930, the intermediate component reviews the cache to determine if the cache contains the file, information associated with the file (such as location information), or a directory file that indexes the file.


If the cache includes information associated with the file, or the file itself, the system, in step 940, restores the file using the cached information. If the cache does not include any information, routine 900 proceeds to step 720 of FIG. 7, and the intermediate component obtains a directory file from a snapshot to identify the location of the file, as discussed herein.


Therefore, in some cases, utilizing an intermediate component enables the system to use previously recovered information to restore data. This can save time and resources, among other benefits.


Conclusion


From the foregoing, it will be appreciated that specific examples of the data recovery system have been described herein for purposes of illustration, but that various modifications may be made without deviating from the spirit and scope of the system. For example, although files have been described, other types of content such as user settings, application data, emails, and other data objects can be imaged by snapshots. Accordingly, the system is not limited except as by the appended claims.


Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” The word “coupled”, as generally used herein, refers to two or more elements that may be either directly connected, or connected by way of one or more intermediate elements. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or” in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.


The above detailed description of embodiments of the system is not intended to be exhaustive or to limit the system to the precise form disclosed above. While specific embodiments of, and examples for, the system are described above for illustrative purposes, various equivalent modifications are possible within the scope of the system, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and some processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times.


The teachings of the system provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments.


These and other changes can be made to the system in light of the above Detailed Description. While the above description details certain embodiments of the system and describes the best mode contemplated, no matter how detailed the above appears in text, the system can be practiced in many ways. Details of the system may vary considerably in implementation details, while still being encompassed by the system disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the system should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the system with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the system to the specific embodiments disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the system encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the system under the claims.


While certain aspects of the system are presented below in certain claim forms, the inventors contemplate the various aspects of the system in any number of claim forms. For example, while only one aspect of the system is recited as embodied in a computer-readable medium, other aspects may likewise be embodied in a computer-readable medium. Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the system.

Claims
  • 1. A method in a computing system for restoring an individual file from a snapshot of a primary copy of a data set, the method comprising: receiving at a file system a request to restore files from a snapshot of a primary copy of a data set, wherein the snapshot indicates which files are included in the data set at a certain point in time,wherein at least some of the data set is stored as a secondary copy that differs from the primary copy, andwherein the secondary copy resides in a storage device that differs from another storage device storing the primary copy of the data set;transmitting from the file system to an intermediate component a request for a directory file that contains information associated with files imaged by the snapshot, wherein the directory file includes information identifying the files imaged by the snapshot and information identifying locations of the files imaged by the snapshot in the secondary copy;redirecting the request for the directory file from the intermediate component to the storage device, wherein the redirected request includes location information for the directory file;transmitting the directory file from the storage device to the intermediate component;storing the received directory file in a cache associated with the intermediate component;communicating information associated with files contained within the directory file from the intermediate component to the file system;transmitting a selection of a file to be restored to the intermediate component;transferring location information for the file from the intermediate component to the file system, wherein the location information is obtained from the directory file;transmitting a request for the file using the transferred location information from the file system to the storage device, andserving a subsequent request to restore files using the directory file stored in the cache associated with the intermediate component.
  • 2. The method of claim 1, wherein the transferred location information includes an identification of data blocks on the storage device.
  • 3. The method of claim 1, wherein redirecting the request includes: at the intermediate component, retrieving a location for the directory file.
  • 4. An intermediate component communicatively located between a restore component and a storage device, the intermediate component comprising: a memory storing computer-executable instructions of: a directory request module configured for the intermediate component to: receive a request from the restore component for restoring files from a snapshot of a primary copy of a data set, wherein the snapshot indicates which files are included in the data set at a certain point in time,wherein at least some of the data set corresponding to the snapshot is stored as a secondary copy that differs from the primary copy, andwherein the secondary copy resides in the storage device that differs from another device storing the primary copy of the data set; andtransmit a request to the storage device for a directory that includes information about files imaged by the snapshot;a location information retrieval module configured for the intermediate component to: receive the directory from the storage device;present information regarding files included in the directory to the restore component; andtransfer location information to the restore component for a file selected by the restore component, wherein the location information is contained within the received directory; anda cache module configured for the intermediate component to: store the received directory or the location information for a predetermined time period after the request for restoring files was received; andprovide the received directory or the location information stored in the cache module in response a subsequent request for restoring files; anda processor for executing the computer-executable instructions stored in the memory.
  • 5. An intermediate component communicatively located between a restore component and a removable media for restoring an individual file from an image level copy of a primary copy of a data set, comprising: means for receiving a request to restore files from an image level copy of a primary copy of a data set; wherein the image level COPY indicates which files are included in the data set at a certain point in time,wherein at least some of the data set corresponding to the image level copy is stored as a secondary copy that differs from the primary copy, andwherein the secondary copy resides in the removable media that differs from another storage device storing the primary copy of the data set;means for requesting a directory file from the secondary copy, wherein the directory file contains information identifying locations of the files imaged by the image level copy and included in the secondary copy;means for receiving and redirecting the request for the directory file to the removable media, wherein the redirected request includes location information for the directory file obtained from the image level copy;means for receiving the directory file and storing the received directory file in a cache;means for communicating information associated with files contained within the directory file to the restore component;means for receiving a selection of the file to be restored;means for transferring location information for the file to the restore component receiving a selection of the file, wherein the location information for the file is obtained from the directory file; andmeans for serving at least one subsequent request to restore files using the directory file stored in the cache.
  • 6. The intermediate component of claim 5, wherein the means for displaying files includes: means for displaying files tracked by the directory file; andmeans for displaying files tracked by a file allocation table associated with the primary copy of the data set.
  • 7. A non-transitory computer-readable storage medium containing code, which when executed by a computer causes an intermediate component communicatively located between a restore component and a storage device to perform a method, the method comprising: receiving a request from the restore component for restoring files from a snapshot of a primary copy of a data set, wherein the snapshot indicates which files are included in the data set at a certain point in time,wherein at least some of the data set corresponding to the snapshot is stored as a secondary copy that differs from the primary copy, andwherein the secondary copy resides in the storage device that differs from another device storing the primary copy of the data set;transmitting a request to the storage device for a directory that includes information about files imaged by the snapshot;receiving the directory from the storage device;presenting information regarding files included in the directory to the restore component;transferring location information to the restore component for a file selected by the restore component, wherein the location information is contained within the received directory;storing the received directory or the location information in a cache for a predetermined time period after the request for restoring files was received; andproviding the received directory or the location information stored in the cache module in response a subsequent request for restoring files.
  • 8. A method performed by an intermediate component communicatively located between a restore component and a removable media to restore an individual file from an image level copy of a primary copy of a data set, the method comprising: receiving a request to restore files from an image level copy of a primary copy of a data set, wherein the image level copy indicates which files are included in the data set at a certain point in time,wherein at least some of the data set corresponding to the image level copy is stored as a secondary copy that differs from the primary copy, andwherein the secondary copy resides in the removable media that differs from another storage device storing the primary copy of the data set;requesting a directory file from the secondary copy, wherein the directory file contains information identifying locations of the files imaged by the image level copy and included in the secondary copy;receiving and redirecting the request for the directory file to the removable media, wherein the redirected request includes location information for the directory file obtained from the image level copy;receiving the directory file and storing the received directory file in a cache;communicating information associated with files contained within the directory file to the restore component;receiving a selection of the file to be restored;transferring location information for the file to the restore component receiving a selection of the file, wherein the location information for the file is obtained from the directory file; andserving at least one subsequent request to restore files using the directory file stored in the cache.
CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent Application No. 61/094,763, filed on Sep. 5, 2008, entitled IMAGE LEVEL COPY OR RESTORE, SUCH AS IMAGE LEVEL RESTORE WITHOUT KNOWLEDGE OF DATA OBJECT METADATA, which is incorporated by reference in its entirety.

US Referenced Citations (286)
Number Name Date Kind
4464122 Fuller et al. Aug 1984 A
4686620 Ng Aug 1987 A
4995035 Cole et al. Feb 1991 A
5005122 Griffin et al. Apr 1991 A
5093912 Dong et al. Mar 1992 A
5133065 Cheffetz et al. Jul 1992 A
5193154 Kitajima et al. Mar 1993 A
5212772 Masters May 1993 A
5212784 Sparks May 1993 A
5226157 Nakano et al. Jul 1993 A
5239647 Anglin et al. Aug 1993 A
5241668 Eastridge et al. Aug 1993 A
5241670 Eastridge et al. Aug 1993 A
5276860 Fortier et al. Jan 1994 A
5276867 Kenley et al. Jan 1994 A
5287500 Stoppani, Jr. Feb 1994 A
5321816 Rogan et al. Jun 1994 A
5333315 Saether et al. Jul 1994 A
5347653 Flynn et al. Sep 1994 A
5386545 Gombos, Jr. et al. Jan 1995 A
5410700 Fecteau et al. Apr 1995 A
5448718 Cohn et al. Sep 1995 A
5448724 Hayashi Sep 1995 A
5485606 Midgdey et al. Jan 1996 A
5491810 Allen Feb 1996 A
5495607 Pisello et al. Feb 1996 A
5504873 Martin et al. Apr 1996 A
5517405 McAndrew et al. May 1996 A
5537568 Yanai et al. Jul 1996 A
5544345 Carpenter et al. Aug 1996 A
5544347 Yanai et al. Aug 1996 A
5555371 Duyanovich et al. Sep 1996 A
5559957 Balk Sep 1996 A
5564037 Lam Oct 1996 A
5608865 Midgely et al. Mar 1997 A
5613134 Lucus et al. Mar 1997 A
5619644 Crockett et al. Apr 1997 A
5634052 Morris May 1997 A
5638509 Dunphy et al. Jun 1997 A
5659614 Bailey, III Aug 1997 A
5666501 Jones et al. Sep 1997 A
5673381 Huai et al. Sep 1997 A
5673382 Cannon et al. Sep 1997 A
5699361 Ding et al. Dec 1997 A
5729743 Squibb Mar 1998 A
5740405 DeGraaf Apr 1998 A
5751997 Kullick et al. May 1998 A
5758359 Saxon May 1998 A
5758649 Iwashita et al. Jun 1998 A
5761677 Senator et al. Jun 1998 A
5764972 Crouse et al. Jun 1998 A
5778165 Saxon Jul 1998 A
5778395 Whiting et al. Jul 1998 A
5812398 Nielsen Sep 1998 A
5813009 Johnson et al. Sep 1998 A
5813017 Morris Sep 1998 A
5860073 Ferrel et al. Jan 1999 A
5864846 Voorhees et al. Jan 1999 A
5875478 Blumenau Feb 1999 A
5887134 Ebrahim Mar 1999 A
5896531 Curtis et al. Apr 1999 A
5901327 Ofek May 1999 A
5924102 Perks Jul 1999 A
5950205 Aviani, Jr. Sep 1999 A
5974563 Beeler, Jr. Oct 1999 A
5983239 Cannon Nov 1999 A
5991753 Wilde Nov 1999 A
6012053 Pant et al. Jan 2000 A
6021415 Cannon et al. Feb 2000 A
6026414 Anglin Feb 2000 A
6052735 Ulrich et al. Apr 2000 A
6064821 Shough et al. May 2000 A
6073128 Pongracz et al. Jun 2000 A
6076148 Kedem Jun 2000 A
6091518 Anabuki et al. Jul 2000 A
6094416 Ying Jul 2000 A
6131095 Low et al. Oct 2000 A
6131190 Sidwell Oct 2000 A
6148412 Cannon et al. Nov 2000 A
6154787 Urevig et al. Nov 2000 A
6161111 Mutalik et al. Dec 2000 A
6167402 Yeager Dec 2000 A
6182198 Hubis et al. Jan 2001 B1
6212512 Barney et al. Apr 2001 B1
6226759 Miller et al. May 2001 B1
6239800 Mayhew et al. May 2001 B1
6253217 Dourish et al. Jun 2001 B1
6260069 Anglin Jul 2001 B1
6266679 Szalwinski et al. Jul 2001 B1
6266784 Hsiao et al. Jul 2001 B1
6269431 Dunham Jul 2001 B1
6275953 Vahalia et al. Aug 2001 B1
6298439 Beglin Oct 2001 B1
6301592 Aoyama et al. Oct 2001 B1
6308175 Lang et al. Oct 2001 B1
6324581 Xu et al. Nov 2001 B1
6327590 Chidlovskii et al. Dec 2001 B1
6327612 Watanabe et al. Dec 2001 B1
6328766 Long Dec 2001 B1
6330570 Crighton Dec 2001 B1
6330642 Carteau Dec 2001 B1
6341287 Sziklai et al. Jan 2002 B1
6343287 Kumar et al. Jan 2002 B1
6343324 Hubis et al. Jan 2002 B1
6345288 Reed et al. Feb 2002 B1
RE37601 Eastridge et al. Mar 2002 E
6356801 Goodman et al. Mar 2002 B1
6363462 Bergsten Mar 2002 B1
6367073 Elledge Apr 2002 B2
6374363 Wu et al. Apr 2002 B1
6389432 Pothapragada et al. May 2002 B1
6418478 Ignatius et al. Jul 2002 B1
6421678 Smiga et al. Jul 2002 B2
6421711 Blumenau et al. Jul 2002 B1
6442706 Wahl et al. Aug 2002 B1
6470332 Weschler Oct 2002 B1
6484162 Edlund et al. Nov 2002 B1
6487561 Ofek et al. Nov 2002 B1
6487644 Huebsch et al. Nov 2002 B1
6502205 Yanai et al. Dec 2002 B1
6519679 Devireddy et al. Feb 2003 B2
6538669 Lagueux, Jr. et al. Mar 2003 B1
6540623 Jackson Apr 2003 B2
6549918 Probert, Jr. et al. Apr 2003 B1
6557039 Leong et al. Apr 2003 B1
6564228 O'Connor May 2003 B1
6593656 Ahn et al. Jul 2003 B2
6618771 Leja et al. Sep 2003 B1
6629110 Cane et al. Sep 2003 B2
6647399 Zaremba Nov 2003 B2
6658526 Nguyen et al. Dec 2003 B2
6675177 Webb Jan 2004 B1
6691232 Wood et al. Feb 2004 B1
6721767 De Meno et al. Apr 2004 B2
6732088 Glance May 2004 B1
6732231 Don et al. May 2004 B1
6732244 Ashton et al. May 2004 B2
6745178 Emens et al. Jun 2004 B1
6795828 Ricketts Sep 2004 B2
6816941 Carlson et al. Nov 2004 B1
6820070 Goldman et al. Nov 2004 B2
6839741 Tsai Jan 2005 B1
6839803 Loh et al. Jan 2005 B1
6850994 Gabryjelski Feb 2005 B2
6860422 Hull et al. Mar 2005 B2
6865568 Chau Mar 2005 B2
6871182 Winnard et al. Mar 2005 B1
6892221 Ricart et al. May 2005 B2
6948038 Berkowitz et al. Sep 2005 B2
6957186 Guheen et al. Oct 2005 B1
6970997 Shibayama et al. Nov 2005 B2
6976039 Chefalas et al. Dec 2005 B2
6995675 Curkendall et al. Feb 2006 B2
6996616 Leighton et al. Feb 2006 B1
7003641 Prahlad et al. Feb 2006 B2
7028079 Mastrianni et al. Apr 2006 B2
7035880 Crescenti et al. Apr 2006 B1
7039860 Gautestad et al. May 2006 B1
7058661 Ciaramitaro et al. Jun 2006 B2
7099901 Sutoh et al. Aug 2006 B2
7107298 Prahlad et al. Sep 2006 B2
7107416 Stuart et al. Sep 2006 B2
7133870 Tripp et al. Nov 2006 B1
7139826 Watanabe et al. Nov 2006 B2
7139846 Rossi Nov 2006 B1
7146387 Russo et al. Dec 2006 B1
7155421 Haldar Dec 2006 B1
7155481 Prahlad et al. Dec 2006 B2
7159081 Suzuki Jan 2007 B2
7171468 Yeung et al. Jan 2007 B2
7171585 Gail et al. Jan 2007 B2
7188141 Novaes Mar 2007 B2
7240100 Wein et al. Jul 2007 B1
7246207 Kottomtharayil et al. Jul 2007 B2
7269664 Hutsch et al. Sep 2007 B2
7284033 Jhanji Oct 2007 B2
7287047 Kavuri Oct 2007 B2
7290017 Wang et al. Oct 2007 B1
7313659 Suzuki Dec 2007 B2
7328325 Solis et al. Feb 2008 B1
7346623 Prahlad et al. Mar 2008 B2
7346676 Swildens et al. Mar 2008 B1
7346751 Prahlad et al. Mar 2008 B2
7376947 Evers May 2008 B2
7379978 Anderson et al. May 2008 B2
7386535 Kalucha et al. Jun 2008 B1
7395282 Crescenti et al. Jul 2008 B1
7421460 Chigusa et al. Sep 2008 B2
7424543 Rice, III Sep 2008 B2
7434219 De Meno et al. Oct 2008 B2
7457790 Kochunni et al. Nov 2008 B2
7472142 Prahlad et al. Dec 2008 B2
7496841 Hadfield et al. Feb 2009 B2
7565484 Ghosal et al. Jul 2009 B2
7577689 Masinter et al. Aug 2009 B1
7577694 Nakano et al. Aug 2009 B2
7584469 Mitekura et al. Sep 2009 B2
7587715 Barrett et al. Sep 2009 B1
7593935 Sullivan Sep 2009 B2
7603626 Williams et al. Oct 2009 B2
7606844 Kottomtharayil Oct 2009 B2
7610285 Zoellner et al. Oct 2009 B1
7668884 Prahlad et al. Feb 2010 B2
7673175 Mora et al. Mar 2010 B2
7676542 Moser et al. Mar 2010 B2
7689899 Leymaster et al. Mar 2010 B2
7730031 Forster Jun 2010 B2
7734593 Prahlad et al. Jun 2010 B2
7734669 Kottomtharayil et al. Jun 2010 B2
7751628 Reisman Jul 2010 B1
7761409 Stefik et al. Jul 2010 B2
7792789 Prahlad et al. Sep 2010 B2
7801871 Gosnell Sep 2010 B2
7814118 Kottomtharayil et al. Oct 2010 B2
7827266 Gupta Nov 2010 B2
7831793 Chakravarty et al. Nov 2010 B2
7840537 Gokhale et al. Nov 2010 B2
7844676 Prahlad et al. Nov 2010 B2
7865517 Prahlad et al. Jan 2011 B2
7882077 Gokhale et al. Feb 2011 B2
7882093 Kottomtharayil et al. Feb 2011 B2
7937393 Prahlad et al. May 2011 B2
7937420 Tabellion et al. May 2011 B2
7937702 De Meno et al. May 2011 B2
7984063 Kottomtharayil et al. Jul 2011 B2
8037028 Prahlad et al. Oct 2011 B2
8055627 Prahlad et al. Nov 2011 B2
8060514 Arrouye et al. Nov 2011 B2
8099428 Kottomtharayil et al. Jan 2012 B2
8108427 Prahlad et al. Jan 2012 B2
8140786 Bunte et al. Mar 2012 B2
8161003 Kavuri Apr 2012 B2
8229954 Kottomtharayil et al. Jul 2012 B2
20020032878 Karpf Mar 2002 A1
20020049883 Schneider et al. Apr 2002 A1
20020120858 Porter et al. Aug 2002 A1
20030046313 Leung et al. Mar 2003 A1
20030050979 Takahashi Mar 2003 A1
20030101086 San Miguel May 2003 A1
20040039689 Penney et al. Feb 2004 A1
20040267815 De Mes Dec 2004 A1
20050039069 Prahlad et al. Feb 2005 A1
20050097070 Enis et al. May 2005 A1
20050216788 Mani-Meitav et al. Sep 2005 A1
20050251786 Citron et al. Nov 2005 A1
20050278207 Ronnewinkel Dec 2005 A1
20060036619 Fuerst et al. Feb 2006 A1
20060070061 Cox et al. Mar 2006 A1
20060115802 Reynolds Jun 2006 A1
20060116999 Dettinger et al. Jun 2006 A1
20060149604 Miller Jul 2006 A1
20060149724 Ritter et al. Jul 2006 A1
20060224846 Amarendran et al. Oct 2006 A1
20060282900 Johnson et al. Dec 2006 A1
20070022145 Kavuri Jan 2007 A1
20070028229 Knatcher Feb 2007 A1
20070043715 Kaushik et al. Feb 2007 A1
20070061266 Moore et al. Mar 2007 A1
20070061298 Wilson et al. Mar 2007 A1
20070136541 Herz et al. Jun 2007 A1
20070166674 Kochunni et al. Jul 2007 A1
20070214330 Minami et al. Sep 2007 A1
20070226320 Hager et al. Sep 2007 A1
20070250810 Tittizer et al. Oct 2007 A1
20070296258 Calvert et al. Dec 2007 A1
20080282048 Miura Nov 2008 A1
20080288947 Gokhale et al. Nov 2008 A1
20080288948 Attarde et al. Nov 2008 A1
20080320319 Muller et al. Dec 2008 A1
20090171883 Kochunni et al. Jul 2009 A1
20090319534 Gokhale Dec 2009 A1
20090319585 Gokhale Dec 2009 A1
20090320029 Kottomtharayil Dec 2009 A1
20090320033 Gokhale et al. Dec 2009 A1
20090320037 Gokhale et al. Dec 2009 A1
20100031017 Gokhale et al. Feb 2010 A1
20100070466 Prahlad et al. Mar 2010 A1
20100070474 Lad Mar 2010 A1
20100070725 Prahlad et al. Mar 2010 A1
20100070726 Ngo et al. Mar 2010 A1
20100114837 Prahlad et al. May 2010 A1
20110093471 Brockway et al. Apr 2011 A1
20110138225 Gunabalasubramaniam et al. Jun 2011 A1
20110173171 De Meno et al. Jul 2011 A1
20120036108 Prahlad et al. Feb 2012 A1
20130145376 Gokhale et al. Jun 2013 A1
Foreign Referenced Citations (22)
Number Date Country
0259912 Mar 1988 EP
0405926 Jan 1991 EP
0467546 Jan 1992 EP
0774715 May 1997 EP
0809184 Nov 1997 EP
0899662 Mar 1999 EP
0910019 Apr 1999 EP
0981090 Feb 2000 EP
0986011 Mar 2000 EP
1035690 Sep 2000 EP
2216368 Oct 1989 GB
07-046271 Feb 1995 JP
7073080 Mar 1995 JP
8044598 Feb 1996 JP
2000035969 Feb 2000 JP
2003531435 Oct 2003 JP
WO-9513580 May 1995 WO
WO-9912098 Mar 1999 WO
WO-0058865 Oct 2000 WO
WO-0106368 Jan 2001 WO
WO-0116693 Mar 2001 WO
WO-0180005 Oct 2001 WO
Non-Patent Literature Citations (23)
Entry
Quinlan, Sean. “A cached worm file system.” Software: Practice and Experience 21.12 (1991): 1289-1299.
Hutchinson, Norman C., et al. “Logical vs. physical file system backup.” OSDI. vol. 99. 1999.
Wu, Chin-Hsien, Tei-Wei Kuo, and Li-Pin Chang. “Efficient initialization and crash recovery for log-based file systems over flash memory.” Proceedings of the 2006 ACM symposium on Applied computing. ACM, 2006.
Matthews, Jeanna, et al. “Data protection and rapid recovery from attack with a virtual private file server and virtual machine appliances.” Proceedings of the IASTED International Conference on Communication, Network and Information Security (CNIS 2005). 2005.
Armstead et al., “Implementation of a Campus-wide Distributed Mass Storage Service: The Dream vs. Reality,” IEEE, 1995, pp. 190-199.
Arneson, “Mass Storage Archiving in Network Environments,” Digest of Papers, Ninth IEEE Symposium on Mass Storage Systems, Oct. 31, 1988-Nov. 3, 1988, pp. 45-50, Monterey, CA.
Cabrera et al., “ADSM: A Multi-Platform, Scalable, Backup and Archive Mass Storage System,” Digest of Papers, Compcon '95, Proceedings of the 40th IEEE Computer Society International Conference, Mar. 5, 1995-Mar. 9, 1995, pp. 420-427, San Francisco, CA.
Eitel, “Backup and Storage Management in Distributed Heterogeneous Environments,” IEEE, 1994, pp. 124-126.
Jander, M., “Launching Storage-Area Net,” Data Communications, US, McGraw Hill, NY, vol. 27, No. 4 (Mar. 21, 1998), pp. 64-72.
Jason Gait, “The Optical File Cabinet: A Random-Access File System for Write-Once Optical Disks,” IEEE Computer, vol. 21, No. 6, pp. 11-22 (1988) (see in particular figure 5 in p. 15 and recitation in claim 5).
Rosenblum et al., “The Design and Implementation of a Log-Structured File System,” Operating Systems Review SIGOPS, vol. 25, No. 5, New York, US, pp. 1-15 (May 1991).
U.S. Appl. No. 13/538,290, filed Jun. 29, 2012, Kottomtharayil.
PCT International Search Report for International Application No. PCT/US09/32325, date of mailing Mar. 17, 2009, 11 pages.
Hennessy et al., “Computer Architecture—A Quantitative Approach”, 2nd Edition, 1996, pp. 246-250.
Microsoft Press Computer Dictionary Third Edition, “Data Compression,” Microsoft Press, 1997, p. 130.
Pitoura et al., “Locating Objects in Mobile Computing”, IEEE Transactions on Knowledge amd Data Engineering, vol. 13, No. 4, Jul./Aug. 2001, pp. 571-592.
Rowe et al., “Indexes for User Access to Large Video Databases”, Storage and Retrieval for Image and Video Databases II, IS,& T/SPIE Symp. on Elec. Imaging Sci. & Tech., Feb. 1994, pp. 1-12.
U.S. Appl. No. 09/609,977, filed Jul. 5, 2000, Inventor(s) A. Prahlad et al., 55 pages.
U.S. Appl. No. 13/076,792, filed Mar. 31, 2011, Inventor(s) P. Kumarasamy et al., 37 pages.
U.S. Appl. No. 13/538,290, filed Jun. 29, 2012, Inventor(s) R. Kottomtharayil., 39 pages.
Veeravalli, B., “Network Caching Strategies for a Shared Data Distribution for a Predefined Service Demand Sequence,” IEEE Transactions on Knowledge and Data Engineering, vol. 15, No. 6, Nov./Dec. 2003, pp. 1487-1497.
U.S. Appl. No. 13/801,625, filed Mar. 13, 2013, Yongtao et al.
Extended European Search Report for Application No. EP 09767119, Mail date Feb. 11, 2013, 12 pages.
Related Publications (1)
Number Date Country
20100076932 A1 Mar 2010 US
Provisional Applications (1)
Number Date Country
61094763 Sep 2008 US