Methods for generating a unified virtual snapshot and systems thereof

Information

  • Patent Grant
  • 8352785
  • Patent Number
    8,352,785
  • Date Filed
    Friday, December 12, 2008
    16 years ago
  • Date Issued
    Tuesday, January 8, 2013
    12 years ago
Abstract
A method, computer readable medium, and system for generating a unified virtual snapshot in accordance with embodiments of the present invention includes invoking with a file virtualization system a capture of a plurality of physical snapshots. Each of the physical snapshots comprises content at a given point in time in one of the plurality of data storage systems. A unified virtual snapshot is generated with the file virtualization system based on the captured plurality of the physical snapshots.
Description
FIELD OF THE INVENTION

This invention relates generally to methods and systems for capturing snapshots of file systems and, more particularly, to methods for generating a unified virtual snapshot from a plurality of physical snapshots of a heterogeneous network storage system and systems thereof.


BACKGROUND

Often files and associated data in computer systems are remotely stored on one or more network storage devices. In anticipation of a possible restore request from a user computer system coupled to a network storage device, a physical snapshot of the content in the network storage device may be captured at a recorded time. If the user computer system has a need for and requests a restore, the captured physical snapshot can be used to recover contents from the network storage device as of the recorded time.


File virtualization systems provide methods for managing and presenting a plurality of network storage devices as a single, unified file system. Basically, file virtualization decouples the presentation of a file system from its' physical composition. Unfortunately, when file virtualization is implemented, there is no method or system for generating and providing a unified virtual snapshot in a heterogeneous storage network system.


SUMMARY

A method for generating a unified virtual snapshot in accordance with embodiments of the present invention includes invoking with a file virtualization system a capture of a plurality of physical snapshots. Each of the physical snapshots comprises content at a given point in time in one of the plurality of data storage systems. A unified virtual snapshot is generated with the file virtualization system based on the captured plurality of the physical snapshots.


A computer readable medium having stored thereon instructions for methods for generating a unified virtual snapshot in accordance with other embodiments of the present invention comprising machine executable code which when executed by at least one processor, causes the processor to perform steps including invoking with a file virtualization system a capture of a plurality of physical snapshots. Each of the physical snapshots comprises content at a given point in time in one of the plurality of data storage systems. A unified virtual snapshot is generated with the file virtualization system based on the captured plurality of the physical snapshots.


A system that generates a unified virtual snapshot in accordance with other embodiments of the present invention includes an invocation system and a virtual snapshot system in a file virtualization system. The invocation system invokes a capture of a plurality of physical snapshots. Each of the physical snapshots comprises content in one of the plurality of data storage systems at a given point in time. The virtual snapshot system generates a unified virtual snapshot based on the captured plurality of the physical snapshots.


The present invention provides a number of advantages including providing a unified virtual snapshot from a plurality of physical snapshots of contents of file systems distributed across several independent, network storage devices. Additionally, the present invention provides a method and system which enables the use of snapshots in environments that implement file virtualization. Further, the present invention captures and generates snapshots which can be utilized to re-assemble contents of file systems with or without the file virtualization system.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of an example of a system that generates and uses a virtual snapshot from a plurality of physical snapshots of a heterogeneous network storage system;



FIG. 2A is a functional block diagram of an example of a method for processing requests with file virtualization;



FIG. 2B is a flow chart of the example of the method for processing requests with file virtualization illustrated in FIG. 2A;



FIG. 3A is a functional block diagram of an example of a method for generating one or more unified virtual snapshots;



FIG. 3B is a flow chart of the example of the method for generating one or more unified virtual snapshots illustrated in FIG. 3A;



FIG. 4A is a functional block diagram of a method for processing requests with file virtualization after the creation of one or more unified virtual snapshots;



FIG. 4B is a flow chart of the example of the method for processing requests with file virtualization after the creation of one or more unified virtual snapshots illustrated in FIG. 4A;



FIG. 5A is a functional block diagram of the hierarchy of unified virtual snapshots and physical snapshots;



FIG. 5B is a flow chart of the example of the method for recovering content in a heterogeneous storage system;



FIG. 6 is a diagram of an example of a virtual snapshot configuration record; and



FIG. 7 is a diagram of an example of a snapshot command on a network storage device.





DETAILED DESCRIPTION

An example of a system 10 that generates and uses a virtual snapshot of a heterogeneous network storage system is illustrated in FIG. 1, although the present invention can be utilized in homogeneous network storage systems with one or more storage devices. This system 10 includes a client system 12, a file virtualization system 14, data storage systems 16(1) and 16(2), and metadata storage system 18, although this system 10 can include other numbers and types of systems, devices, equipment, parts, components, and/or elements in other configurations. The present invention provides a number of advantages including providing a unified virtual snapshot from a plurality of physical snapshots of contents of file systems distributed across several independent, network storage devices.


Referring more specifically to FIG. 1, the client system 12 utilizes the file virtualization system 14 to conduct one or more operations with one or more of the data storage systems 16(1), 16(2), and 18, such as to store a file, delete a file, create a file, and restore a file by way of example only, although other numbers and types of network systems could be utilizing these resources and other types and numbers of functions could be performed. The client system 12 includes a central processing unit (CPU) or processor, a memory, user input device, a display, and an interface system, and which are coupled together by a bus or other link, although the client system 12 can include other numbers and types of components, parts, devices, systems, and elements in other configurations. The processor in the client system 12 executes a program of stored instructions as described and illustrated herein, although the processor could execute other numbers and types of programmed instructions.


The memory in the client system 12 stores these programmed instructions for one or more aspects of the present invention as described and illustrated herein, although some or all of the programmed instructions could be stored and/or executed elsewhere. A variety of different types of memory storage devices, such as a random access memory (RAM) or a read only memory (ROM) in the system or a floppy disk, hard disk, CD ROM, or other computer readable medium which is read from and/or written to by a magnetic, optical, or other reading and/or writing system that is coupled to one or more processors, can be used for the memory in the client system 12.


The user input device in the client system 12 is used to input selections, such as to store a file, delete a file, create a file, and restore a file, although the user input device could be used to input other types of data and interact with other elements. The user input device can include a computer keyboard and a computer mouse, although other types and numbers of user input devices can be used. The display in the client system 12 is used to display information, such as a file or directory, although other types and amounts of information can be displayed in other manners. The display can include a computer display screen, such as a CRT or LCD screen, although other types and numbers of displays could be used.


The interface system in the client system 12 is used to operatively couple and communicate between the client system 12 and the file virtualization system 14 via a communications network 20, although other types and numbers of communication networks or systems with other types and numbers of configurations and connections to other systems and devices can be used.


The file virtualization system 14 manages file virtualization and the generation of unified virtual snapshots, although other numbers and types of systems can be used and other numbers and types of functions can be performed. The file virtualization system 14 includes a central processing unit (CPU) or processor, a memory, and an interface system which are coupled together by a bus or other link, although other numbers and types of components, parts, devices, systems, and elements in other configurations and locations can be used. The processor in the file virtualization system 14 executes a program of stored instructions for one or more aspects of the present invention as described and illustrated by way of the embodiments herein, such as managing file virtualization and the generation of unified virtual snapshots, although the processor in file virtualization system 14 could execute other numbers and types of programmed instructions.


The memory in the file virtualization system 14 stores these programmed instructions for one or more aspects of the present invention as described and illustrated herein, although some or all of the programmed instructions could be stored and/or executed elsewhere. A variety of different types of memory storage devices, such as a random access memory (RAM) or a read only memory (ROM) in the system or a floppy disk, hard disk, CD ROM, DVD ROM, or other computer readable medium which is read from and/or written to by a magnetic, optical, or other reading and/or writing system that is coupled to one or more processors, can be used for the memory in the file virtualization system 14.


The interface system in the file virtualization system 14 is used to operatively couple and communicate between the file virtualization system 14 and the client system 12, the data storage system 16(1), the data storage system 16(2), and the metadata storage system 18 via the communications networks 20, although other types and numbers of communication networks or systems with other types and numbers of connections and configurations can be used.


Each of the data storage systems 16(1) and 16(2) is a network storage device for files, directories, and other data, although other numbers and types of storage systems which could have other numbers and types of functions and store other data could be used. In this example, data storage system 16(1) is a different type of storage device, e.g. different make and/or model, from the data storage system 16(2) to form a heterogeneous network storage system, although the present invention can work with other numbers and types of storage systems, such as a homogeneous system.


Each of the data storage systems 16(1) and 16(2) include a central processing unit (CPU) or processor, a memory, and an interface system which are coupled together by a bus or other link, although other numbers and types of components, parts, devices, systems, and elements in other configurations can be used. By way of example only, the storage systems may not have their own separate processing capabilities. In this example, the specialized processor in each of the data storage systems 16(1) and 16(2) executes a program of stored instructions for one or more aspects of the present invention as described and illustrated by way of the embodiments herein, such as to capture a physical snapshot by way of example only, although the processor in each of the data storage system could execute other numbers and types of programmed instructions.


The memory in each of the data storage systems 16(1) and 16(2) store these programmed instructions for one or more aspects of the present invention as described and illustrated herein, although some or all of the programmed instructions could be stored and/or executed elsewhere. A variety of different types of memory storage devices, such as a random access memory (RAM) or a read only memory (ROM) in the system or a floppy disk, hard disk, CD ROM, DVD ROM, or other computer readable medium which is read from and/or written to by a magnetic, optical, or other reading and/or writing system that is coupled to one or more processors, can be used for the memory in each of the data storage systems 16(1) and 16(2).


The interface system in the data storage system 16(1) and the interface in the data storage system 16(2) are each used to operatively couple and communicate between the data storage system 16(1) and the file virtualization system 14 and between the data storage system 16(2) and the file virtualization system 14 via communication network 20, although other types and numbers of communication networks or systems with other types and numbers of configurations and connections to other systems and devices can be used.


The metadata storage system 18 is another type of network storage device to store and manage global file virtualization metadata from data storage systems 16(1) and 16(2), although other numbers and types of storage systems which could have other numbers and types of functions, which is connected in other manners, and which could store other types of data and information could be used. In this particular example, the metadata storage system 18 is external to the file virtualization system 14, although the metadata storage 18 could be located in the file virtualization system 14. The metadata storage system 18 includes a central processing unit (CPU) or processor, a memory, and an interface system which are coupled together by a bus or other link, although other numbers and types of components, parts, devices, systems, and elements in other configurations can be used for the storage system. By way of example only, the storage system may not have its own separate processing capabilities. In this example, the specialized processor in the metadata storage system 18 executes a program of stored instructions for one or more aspects of the present invention as described and illustrated by way of the embodiments herein, although the processor in metadata storage system 18 could execute other numbers and types of programmed instructions.


The memory in the metadata storage system 18 stores these programmed instructions for one or more aspects of the present invention as described and illustrated herein, although some or all of the programmed instructions could be stored and/or executed elsewhere. A variety of different types of memory storage devices, such as a random access memory (RAM) or a read only memory (ROM) in the system or a floppy disk, hard disk, CD ROM, DVD ROM, or other computer readable medium which is read from and/or written to by a magnetic, optical, or other reading and/or writing system that is coupled to the processor in the metadata storage system 18.


The interface system in the metadata storage system 18 is used to operatively couple and communicate between the metadata storage system 18 and the file virtualization system 14 via the communications network 20, although other types and numbers of communication networks or systems with other types and numbers of configurations and connections to other systems and devices can be used.


Although embodiments of the client system 12, the file virtualization system 14, the data storage systems 16(1) and 16(2), and the metadata storage system 18 are described herein, each of these systems can be implemented on any suitable computer system or computing device. It is to be understood that the devices and systems of the embodiments described herein are for exemplary purposes, as many variations of the specific hardware and software used to implement the embodiments are possible, as will be appreciated by those skilled in the relevant art(s).


Furthermore, each of the systems of the embodiments may be conveniently implemented using one or more general purpose computer systems, microprocessors, digital signal processors, and micro-controllers, programmed according to the teachings of the embodiments, as described and illustrated herein, and as will be appreciated by those ordinary skill in the art.


In addition, two or more computing systems or devices can be substituted for any one of the systems in any embodiment of the embodiments. Accordingly, principles and advantages of distributed processing, such as redundancy and replication also can be implemented, as desired, to increase the robustness and performance of the devices and systems of the embodiments. The embodiments may also be implemented on computer system or systems that extend across any suitable network using any suitable interface mechanisms and communications technologies, including by way of example only telecommunications in any suitable form (e.g., voice and modem), wireless communications media, wireless communications networks, cellular communications networks, G3 communications networks, Public Switched Telephone Network (PSTNs), Packet Data Networks (PDNs), the Internet, intranets, and combinations thereof.


The embodiments may also be embodied as a computer readable medium having instructions stored thereon for one or more aspects of the present invention as described and illustrated by way of the embodiments herein, as described herein, which when executed by a processor, cause the processor to carry out the steps necessary to implement the methods of the embodiments, as described and illustrated herein.


An overview of the present invention is set forth below. With this example of the present invention, a file virtualization layer (FV1) provided by file virtualization system 14 exists between the application in client system 12 or CL1 and the data storage systems 16(1) and 16(2) (also referred to as DS1 and DS2), although other numbers and types of client systems and storage systems could be used. This file virtualization layer provided by file virtualization system 14 manages metadata in data storage 18 that tracks the location of files and directories that are distributed across data storage systems 16(1) and 16(2) in this particular example.


To generate or create a unified virtual snapshot, file virtualization system 14 erects an I/O barrier to substantially suspend data storage communications between client system 12 and data storage systems 16(1) and 16(2) and metadata storage system 18. This suspension permits either an administrator or application at client system 12 or file virtualization system 14 to request or invoke a capture of physical snapshots of content on data storage systems 16(1) and 16(2) and metadata storage system 18 using an application programming interface (API) or command line interface (CLI), although other manners for invoking a capture of physical snapshots, such as a periodic automated invocation could be used. Once all of the physical snapshots have been captured or otherwise completed by file virtualization system 14, the unified virtual snapshot is generated by file virtualization system 14 and the I/O barrier is removed to allow storage data communications to resume. The unified virtual snapshot comprises the captured physical snapshots which are mapped together by file virtualization system 14 to form the virtual snapshot.


In this example, the I/O barrier is implemented by the file virtualization system 14 at the application protocol level, such as NFS or CIFS by way of example, although the I/O barrier could be implemented in other manners. Packets are accepted at a transport level, such as UDP or TCP by way of example, but are not proxied by file virtualization system 14 to the data storage systems 16(1) and 16(2) and traffic to the metadata storage system 18 is halted while the I/O barrier is asserted. As implemented, the barrier operation is substantially transparent to the operator at the client system 12 and at most the file system seems momentarily slow, although system can be arranged in other manners, such as to provide notice of the implementation of the barrier if desired.


To create a persistent record of the location of files and directories in physical snapshots, once the I/O barrier is asserted and before a physical snapshot occurs the file virtualization system 14 initiates copying or writing of a virtual snapshot configuration record into data storage systems 16(1) and 16(2) and metadata storage system 18. The virtual snapshot configuration record is a unique record written in each of the data storage systems 16(1) and 16(2) and metadata storage system 18 that allows an operator or program to locate components, e.g. a file of a virtual snapshot, although other types and amounts of information could be included. More specifically, the snapshot configuration record records the members of a unified virtual snapshot, i.e. in this particular example the members are data storage systems 16(1) and 16(2) and metadata storage system 18, although the snapshot configuration record can store other types and amounts of data. By way of example only, a virtual snapshot configuration record is illustrated in FIG. 6. In this example, the virtual snapshot configuration records are made unique by a field in the header of each record, although other manners for providing a unique identifier can be used.


The virtual snapshot configuration record is included in the physical snapshots to aid in recovery. With the snapshot configuration record and the stored metadata on the file virtualization system 14, the file virtualization system 14 can locate a particular file or directory. Additionally, by including the virtual snapshot configuration record in the physical snapshot, an external application that knows the format of the stored metadata can use that metadata and the snapshot configuration record to locate a file without file virtualization.


Once a unique virtual snapshot configuration record is copied to each data storage systems 16(1) and 16(2) and metadata storage system 18, the data storage systems 16(1) and 16(2) and metadata storage system 18 are invoked by file virtualization system 14 to capture physical snapshots which will contain this virtual snapshot configuration record, although the data storage systems 16(1) and 16(2) and metadata storage system 18 can be invoked to capture physical snapshots by other systems in other manners. The data storage systems 16(1) and 16(2) and metadata storage system 18 take a physical snapshot in response to this invocation.


By way of example only, a snapshot command which can be used by data storage systems 16(1) and 16(2) and metadata storage system 18 is illustrated in FIG. 7, although other types of commands could be used. Again, this method effectively embeds the unique virtual snapshot configuration record into each of the physical snapshots themselves.


Generation of unified virtual snapshots is implemented by the file virtualization layer in file virtualization system 14, although the generation can be implemented by other systems. Virtual directories are dynamically created that contain a list of available virtual snapshots at different points in time in file virtualization system 14. Each virtual snapshot subdirectory contains files and directories that exist in the physical snapshots of the contents of the file systems on data storage systems 16(1) and 16(2) and metadata storage system 18 in this example.


Referring now to FIGS. 2A and 2B, an example of a method for processing requests with a file virtualization is described below. In step 22, client system 12 (also known as CL1) issues a request CL-REQ-1-1 for a file creation operation of a file ‘a’ to file virtualization system 14 (also known as FV1), although other types and numbers of requests could be issued from other types and numbers of systems.


In step 24, file virtualization system 14 receives the request CL-REQ-1-1 from client system 12. Using the stored metadata, the file virtualization system 14 translates the request CL-REQ-1-1 into a file virtualization request FV-REQ-1-1 which is suitable for execution on data storage system 16(1) (also known as DS1) in which the file is actually located, although other types of requests for other systems could be received.


In step 26, data storage system 16(1) receives the request FV-REQ-1-1 from the file virtualization system 14. In response to the received request FV-REQ-1-1 the data storage system 16(1) performs the creation of file ‘a’ and issues reply DS-RSP-1-1 back to file virtualization system 14, although the data storage system 16(1) could perform other types and numbers of operations based on the received request.


In step 28, file virtualization system 14 receives the reply DS-RSP-1-1 from the data storage system 16(1). In response to the reply DS-RSP-1-1, the file virtualization system 14 generates metadata about the file creation operation and transmits a FV-REQ-1-2 request to metadata storage system 18 (also known as MD1) to record this generated metadata.


In step 30, metadata storage system 18 receives the FV-REQ-1-2 request and stores the generated metadata. Once the FV-REQ-1-2 request is processed, the metadata storage system 18 issues a reply MD-RSP-1-1 to the file virtualization system 14.


In step 32, file virtualization system 14 receives the reply MD-RSP-1-1 from the metadata storage system 18. Next, the file virtualization system 14 using information gathered from the reply MD-RSP-1-1 and the reply DS-RSP-1-1 generates a file virtualization reply FV-RSP-1-1 and issues the reply FV-RSP-1-1 back to client system 12. The file virtualization system 14 also updates the stored file virtualization configuration record to reflect this completed operation.


Referring now to FIGS. 3A and 3B, an example of a method for generating one or more unified virtual snapshots is described below. In step 50, client system 12 issues request CL-REQ-2-1 for a file deletion operation of file ‘a’ to file virtualization system 14, although other types and numbers of requests could be issued from other types and numbers of systems.


In step 52, file virtualization system 14 accepts the request CL-REQ-2-1 from the client system 12, although other types and numbers of requests could be received. Since at this time an I/O barrier is asserted, the file virtualization system 14 performs no action at this time on the request CL-REQ-2-1 from the client system 12, although once the I/O barrier is removed the file virtualization system 14 will process the request.


In step 54, while the I/O barrier is asserted, the file virtualization system 14 generates and transmits a write request WRITE_REQ_2_* to each of the data storage systems 16(1) and 16(2) and the metadata storage system 18 to write the virtualization snapshot configuration record persistent storage, although other types and numbers of requests can be transmitted to other types and numbers of systems. More specifically, in this particular example the file virtualization system 14 generates and transmits a write request WRITE_REQ_2_1 to data storage system 16(1), a write request WRITE_REQ_2_2 to data storage system 16(2), and a WRITE_REQ_2_3 to metadata storage system 18 to each write the virtualization snapshot configuration record in persistent storage.


Once the virtualization snapshot configuration record is written in persistent storage, each of the data storage systems 16(1) and 16(2) and the metadata storage system 18 generates and transmits a response WRITE_RSP_2_* to the file virtualization system 14, although other types and numbers of responses can be transmitted to other types and numbers of systems. More specifically, in this particular example data storage system 16(1) generates and transmits a WRITE_RSP_2_1, the data storage system 16(2) generates and transmits a WRITE_RSP_2_2, and the metadata storage system 18 generates and transmits a WRITE_RSP_2_3 to the file virtualization system 12 once the virtualization snapshot configuration record is written in persistent storage in each storage system.


In step 56, file virtualization system 14 optionally flushes metadata changes, write ahead logs, and any other information required to ensure consistency with the file virtualization metadata snapshot, although the file virtualization system 14 may perform other types and numbers of operations.


In step 58 once the optional flush operations described above in step 56 are completed, the file virtualization system 14 invokes the execution of snapshot operations on data storage systems 16(1) and 16(2) and metadata storage system 18 by generating and transmitting snapshot requests SNAP_REQ_2_*, although the snapshot operations can be invoked in other manners and physical snapshots can be taken in other types and numbers of systems. More specifically, in this particular example file virtualization system 14 generates and transmits request SNAP_REQ_2_1 to data storage systems 16(1) to take a physical snapshot, request SNAP_REQ_2_2 to data storage systems 16(2) to take a physical snapshot, and request SNAP_REQ_2_3 to data storage systems 18 to take a physical snapshot.


In step 60, the data storage systems 16(1) and 16(2) and the metadata storage system 18 each receive and process the requests SNAP_REQ_2_, SNAP_REQ_2_3, and SNAP_REQ_2_3, respectively, to perform a physical snapshot operation to capture a physical snapshot in each of the data storage systems 16(1) and 16(2) and the metadata storage system 18.


Once the physical snapshots have been taken, the data storage systems 16(1) and 16(2) and the metadata storage system 18 each generate and transmit a response SNAP-RSP-2-* when each of the physical snapshots at the data storage systems 16(1) and 16(2) and the metadata storage system 18 have been taken, although other types and numbers of responses can be transmitted to other types and numbers of systems. More specifically, in this particular example data storage system 16(1) generates and transmits a SNAP-RSP-2-1, the data storage system 16(2) generates and transmits a SNAP-RSP-2-2, and the metadata storage system 18 generates and transmits a SNAP-RSP-2-3 to the file virtualization system 12 when each of the physical snapshots at the data storage systems 16(1) and 16(2) and the metadata storage system 18 have been taken.


In step 62, file virtualization system 14 receives completion notifications from data storage systems 16(1) and 16(2) and metadata storage system 18 indicating that the physical snapshots are completed, i.e. the data and metadata are consistent as of the point of time the I/O barrier has been asserted, and then records completion of the unified virtual snapshot. Once all of the responses SNAP-RSP-2-* have been received, the file virtualization system 14, lowers the asserted I/O barrier and processes request CL-REQ-2-1 as well as any other requests.


Referring to FIGS. 4A and 4B, an example of a method for processing requests with a file virtualization after the creation of one or more unified virtual snapshots is described below. In step 70, client system 12 issues request CL-REQ-3-1 for a file deletion operation of file ‘a’ to file virtualization system 14, although other types and numbers of requests could be issued from other types and numbers of systems.


In step 72, file virtualization system 14 receives the request CL-REQ-3-1 from client system 12. Using the stored metadata, the file virtualization system 14 translates the request CL-REQ-3-1 into a file virtualization request FV-REQ-3-1 which is suitable for execution on data storage system 16(1) in which the file is actually located, although other types of requests for other systems could be received.


In step 74, data storage system 16(1) receives the request FV-REQ-3-1 request from the file virtualization system 14. In response to the received request FV-REQ-3-1, the data storage system 16(1) performs the deletion of file ‘a’ and issues reply DS-RSP-3-1 back to file virtualization system 14, although the data storage system 16(1) could perform other types and numbers of operations based on the received request. Although deleted by this operation, file ‘a’ remains in the unified virtual snapshot generated as described with reference to FIGS. 3A and 3B.


In step 76, file virtualization system 14 receives the reply DS-RSP-3-1 from the data storage system 16(1). In response to the reply DS-RSP-3-1, the file virtualization system 14 generates metadata about the file deletion operation and transmits a FV-REQ-3-2 request to metadata storage system 18 to record this generated metadata


In step 78, metadata storage system 18 receives the request FV-REQ-3-2 and updates the metadata stored on metadata storage system 18 to reflect the deletion of file ‘a’, although other types and numbers of updates could be recorded. Once the FV-REQ-3-2 request is processed, the metadata storage system 18 issues a reply MD-RSP-3-1 to the file virtualization system 14.


In step 80, file virtualization system 14 receives the reply MD-RSP-3-1 from the metadata storage system 18. Next, the file virtualization system 14 using information gathered from the reply MD-RSP-3-1 and the reply DS-RSP-3-1 generates and issues a file virtualization reply FV-RSP-3-1 back to client system 12.


An example of the hierarchy of unified virtual snapshots and physical snapshots is illustrated in the functional block diagram in FIG. 5A and is described below. As set forth in functional block 90, each virtual directory contains a virtual snapshot listing directory (VSLD). As set forth in functional block 92, each VSLD contains a list of virtual snapshots (VSN). As set forth in functional block 94, each VSN is an aggregation of physical snapshots (PSNs). As set forth in functional block 96, each Physical directory contains a physical snapshot listing directory (PSLD). As set forth in functional block 98, each PSLD contains a list of physical snapshots (PSN). As set forth in functional block 100, each PSN is a “point in time” image of the file system, such as of data storage system 16(1), data storage system 16(2), or metadata storage system 18, by way of example only.


An example of a method for recovering content in a heterogeneous storage system is illustrated in FIG. 5B and is described below. In step 120, the client system 12 generates and issues a request CL-REQ-2-1 to file virtualization system 14 to access a file in the unified virtual snapshot, although other types and numbers of requests could be issued.


In step 122, the file virtualization system 14 receives the request CL-REQ-2-1 from client system 12, although other types and numbers of requests could be received. The file virtualization system 14 processes the request CL-REQ-2-1 which includes a marker indicating a traversal of a virtual snapshot listing directory, although in response to the request the file virtualization system 14 could have other types and numbers of indicators. By way of example only, the request could have a marker which indicated a search of the virtual snapshot listing directory was needed to identify the virtual snapshot or the absence of a marker could indicate the need for a search. If a search is indicated by processing the request CL-REQ-2-1, the file virtualization system 14 identifies the virtual snapshot in the virtual snapshot listing based on one or more factors, such as a particular date range in the request, although other manners for identifying the virtual snapshot can be used.


In step 124, the file virtualization system 14 associates request CL-REQ-2-1 with the identified virtual snapshot VSN-1 based on data in the processed request CL-REQ-2-1, such as a specific identification of the virtual snapshot VSN-1, although other manners for identifying the virtual snapshot can be used.


In step 126, based on data in the request CL-REQ-2-1, the file virtualization system 14 determines which of two methods for associating the request CL-REQ-2-1 with one of the captured physical snapshots of data storage system 16(1), data storage system 16(2), and metadata storage system 18 to use, although the file virtualization system 14 could determine which method to use in other manners and could select from other types and numbers of methods In this particular example, one of these methods searches virtualization metadata (cached or persistent) to map the request to a captured physical snapshot and the other method searches the captured physical snapshot for each of the storage systems for the target of the request.


If in step 126 the file virtualization system 14 determines that the method which searches virtualization metadata should be used, then the file virtualization system 14 proceeds to step 128. In step 128, the file virtualization system 14 searches stored virtualization metadata (cached or persistent) to map the target identified in the request CL-REQ-2-1 to one of the captured physical snapshots of one of data storage system 16(1), data storage system 16(2), and metadata storage system 18. Based on the search, the file virtualization system 14 identifies one of these captured physical snapshots, although the file virtualization system can perform other operations based on the result of this search, such as generating and transmitting a message to client system 12 that the request CL-REQ-2-1 can not be completed.


If in step 126 the file virtualization system 14 determines that the method which searches the captured physical snapshots should be used, then the file virtualization system 14 proceeds to step 130. In step 130, the file virtualization system 14 searches the captured physical snapshots for each of the data storage systems 16(1) and 16(2) and metadata storage system 18 for a target identified in the request CL-REQ-2-1. Based on the search, the file virtualization system 14 either identifies one of these captured physical snapshots, although the file virtualization system 14 can perform other operations based on the result of this search, such as generating and transmitting a message to client system 12 that the request CL-REQ-2-1 can not be completed.


In step 132, once the captured physical snapshot has been identified, the file virtualization system 14 translates the request CL-REQ-2-1 in a format suitable for execution on the data storage system 16(1) or data storage system 16(2) from which the identified captured physical snapshot was taken. Once the request CL-REQ-2-1 has been translated, the file virtualization system 14 forwards the translated request CL-REQ-2-1 to the data storage system 16(1) or the data storage system 16(2) from which the identified captured physical snapshot was taken. The data storage system 16(1) or data storage system 16(2) from which the identified captured physical snapshot was taken processes the translated request CL-REQ-2-1, executes any operations, and generates and transmits a response back to the file virtualization system 14, although other types and numbers of operations could be performed based on the received translated request.


In step 134, the file virtualization system 14 translates the response from the data storage system 16(1), data storage system 16(2), or metadata storage system 18 which processed the translated request CL-REQ-2-1 and issues a reply back to the client system 12, although the file virtualization system 14 could perform other types and numbers of operations based on the received response.


Accordingly, as illustrated by the description herein the present invention provides a number of advantages including providing a unified virtual snapshot from a plurality of physical snapshots of contents of file systems distributed across several independent, network storage devices of dissimilar make and model. Additionally, the present invention provides a method and system which enables the use of snapshots in environments that implement file virtualization. Further, the present invention captures and generates snapshots which can be utilized to re-assemble contents of file systems with or without the file virtualization system.


Having thus described the basic concept of the invention, it will be rather apparent to those skilled in the art that the foregoing detailed disclosure is intended to be presented by way of example only, and is not limiting. Various alterations, improvements, and modifications will occur and are intended to those skilled in the art, though not expressly stated herein. These alterations, improvements, and modifications are intended to be suggested hereby, and are within the spirit and scope of the invention. Additionally, the recited order of processing elements or sequences, or the use of numbers, letters, or other designations therefore, is not intended to limit the claimed processes to any order except as may be specified in the claims. Accordingly, the invention is limited only by the following claims and equivalents thereto.

Claims
  • 1. A method for generating a unified virtual snapshot, the method comprising: generating, at a file virtualization device, a uniquely identifiable virtual snapshot configuration record identifying each of a plurality of independent data storage systems in a heterogeneous storage network system, wherein at least one of the independent data storage systems is configured to store metadata associated with content stored by one or more of the independent data storage systems;storing, with the file virtualization device, the virtual snapshot configuration record at each of the independent data storage systems;invoking, with the file virtualization device, a capture of a plurality of physical snapshots of each of the independent data storage systems, wherein each of the physical snapshots comprises the virtual snapshot configuration record;mapping, at the file virtualization device, the captured plurality of physical snapshots together to generate the unified virtual snapshot; andstoring, with the file virtualization device, the generated unified virtual snapshot.
  • 2. The method as set forth in claim 1 further comprising suspending, with the file virtualization device, data storage related communications between one or more network systems and the plurality of independent data storage systems during at least the invoking step.
  • 3. The method as set forth in claim 2 further comprising resuming, with the file virtualization device, data storage related communications between the one or more network systems and the plurality of independent data storage systems upon the generation of the unified virtual snapshot.
  • 4. The method as set forth in claim 3 wherein the suspending further comprises storing data storage related communications between the one or more network systems and the plurality of data storage systems received during the suspension until data storage related communications are resumed.
  • 5. The method as set forth in claim 4 further comprising: providing, with the file virtualization device, an acknowledgement of completion of at least one of the stored data storage related communications; andcompleting, with the file virtualization device, the at least one of the stored data storage related communications after the resuming.
  • 6. The method as set forth in claim 1 further comprising recovering, with the file virtualization device, content in at least one of the plurality of independent data storage systems with the generated unified virtual snapshot.
  • 7. The method as set forth in claim 1, wherein the virtual snapshot configuration record is configured to allow locating a particular file or directory in one or more of the independent data storage systems when a format of metadata stored in one of the independent data storage systems is known.
  • 8. A non-transitory computer readable medium having stored thereon instructions for generating a unified virtual snapshot comprising machine executable code which when executed by at least one processor, causes the processor to perform the steps comprising: generating a uniquely identifiable virtual snapshot configuration record identifying each of a plurality of independent data storage systems in a heterogeneous storage network system, wherein at least one of the independent data storage systems is configured to store metadata associated with content stored by one or more of the independent data storage systems;storing the virtual snapshot configuration record at each of the independent data storage systems;invoking a capture of a plurality of physical snapshots of each of the independent data storage systems, wherein each of the physical snapshots comprises the virtual snapshot configuration record;mapping the captured plurality of physical snapshots together to generate the unified virtual snapshot; andstoring the generated unified virtual snapshot.
  • 9. The medium as set forth in claim 8 further having stored thereon instructions that when executed by the at least one processor cause the processor to perform steps further comprising suspending data storage related communications between one or more network systems and the plurality of independent data storage systems during at least the invoking step.
  • 10. The medium as set forth in claim 9 further having stored thereon instructions that when executed by the at least one processor cause the processor to perform steps further comprising resuming data storage related communications between the one or more network systems and the plurality of independent data storage systems upon the generation of the unified virtual snapshot.
  • 11. The medium as set forth in claim 10 wherein the suspending further comprises storing data storage related communications between one or more network systems and a plurality of data storage systems received during the suspension until the data storage related communications is resumed.
  • 12. The medium as set forth in claim 11 further having stored thereon instructions that when executed by the at least one processor cause the processor to perform steps further comprising: providing an acknowledgement of completion of at least one of the stored data storage related communications; andcompleting the at least one of the stored data storage related communications after the resuming.
  • 13. The medium as set forth in claim 8 further having stored thereon instructions that when executed by the at least one processor cause the processor to perform steps further comprising recovering content in at least one of the plurality of independent data storage systems with the generated unified virtual snapshot.
  • 14. The medium as set forth in claim 8 wherein the virtual snapshot configuration record is configured to allow locating a particular file or directory in one or more of the independent data storage systems when a format of metadata stored in one of the independent data storage systems is known.
  • 15. A system that generates a unified virtual snapshot, the system comprising: a plurality of independent data storage systems in a heterogeneous storage network system, wherein at least one of the independent data storage systems is configured to store metadata associated with content stored by one or more of the independent data storage systems;a file virtualization device including at least one of configurable hardware logic configured to be capable of implementing and a processor coupled to a memory and configured to execute programmed instructions stored in the memory comprising: generating a uniquely identifiable virtual snapshot configuration record identifying each of a plurality of independent data storage systems in a heterogeneous storage network system, wherein at least one of the independent data storage systems is configured to store metadata associated with content stored by one or more of the independent data storage systems;storing the virtual snapshot configuration record at each of the independent data storage systems;invoking a capture of a plurality of physical snapshots of each of the independent data storage systems, wherein each of the physical snapshots comprises the virtual snapshot configuration record;mapping the captured plurality of physical snapshots together to generate the unified virtual snapshot andstoring the generated unified virtual snapshot.
  • 16. The system as set forth in claim 15 wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising suspending data storage related communications between one or more network systems and the plurality of independent data storage systems during at least the invoking step.
  • 17. The system as set forth in claim 16 wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising resuming data storage related communications between one or more network systems and the plurality of independent data storage systems upon the generation of the unified virtual snapshot.
  • 18. The system as set forth in claim 17 wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising storing data storage related communications between one or more network systems and a plurality of data storage systems received during the suspension until the data storage related communications are resumed.
  • 19. The system as set forth in claim 18 wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising providing an acknowledgement of completion of at least one of the stored data storage related communications and completing the at least one of the stored data storage related communications after resuming.
  • 20. The system as set forth in claim 15 wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising recovering content in at least one of the plurality of independent data storage systems with the generated unified virtual snapshot.
  • 21. The system as set forth in claim 15 wherein the virtual snapshot configuration record is configured to allow locating a particular file or directory in one or more of the independent data storage systems when a format of metadata stored in one of the independent data storage systems is known.
  • 22. A file virtualization device, comprising: at least one of configurable hardware logic configured to be capable of implementing or a processor coupled to a memory and configured to execute programmed instructions stored in the memory comprising: generating a uniquely identifiable virtual snapshot configuration record identifying each of a plurality of independent data storage systems in a heterogeneous storage network system, wherein at least one of the independent data storage systems is configured to store metadata associated with content stored by one or more of the independent data storage systems;storing the virtual snapshot configuration record at each of the independent data storage systems;invoking a capture of a plurality of physical snapshots of each of the independent data storage systems, wherein each of the physical snapshots comprises the virtual snapshot configuration record;mapping the captured plurality of physical snapshots together to generate the unified virtual snapshot; andstoring the generated unified virtual snapshot.
  • 23. The device as set forth in claim 22, wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising suspending data storage related communications between one or more network systems and the plurality of independent data storage systems during at least the invoking step.
  • 24. The device as set forth in claim 23, wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising resuming data storage related communications between one or more network systems and the plurality of independent data storage systems upon the generation of the unified virtual snapshot.
  • 25. The device as set forth in claim 24, wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising storing data storage related communications between one or more network systems and a plurality of data storage systems received during the suspension until the data storage related communications are resumed.
  • 26. The device as set forth in claim 25, wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising providing an acknowledgement of completion of at least one of the stored data storage related communications and completing the at least one of the stored data storage related communications after resuming.
  • 27. The device as set forth in claim 22, wherein at least one of the configurable hardware logic is further configured to be capable or the processor coupled to the memory is further configured to execute programmed instructions stored in the memory further comprising recovering content in at least one of the plurality of independent data storage systems with the generated unified virtual snapshot.
  • 28. The device as set forth in claim 22, wherein the virtual snapshot configuration record is configured to allow locating a particular file or directory in one or more of the independent data storage systems when a format of metadata stored in one of the independent data storage systems is known.
Parent Case Info

This application claims the benefit of U.S. Provisional Patent Application Ser. No. 61/013,539, filed Dec. 13, 2007, which is herein incorporated by reference in its entirety.

US Referenced Citations (302)
Number Name Date Kind
4993030 Krakauer et al. Feb 1991 A
5218695 Noveck et al. Jun 1993 A
5303368 Kotaki Apr 1994 A
5473362 Fitzgerald et al. Dec 1995 A
5511177 Kagimasa et al. Apr 1996 A
5537585 Blickenstaff et al. Jul 1996 A
5548724 Akizawa et al. Aug 1996 A
5550965 Gabbe et al. Aug 1996 A
5583995 Gardner et al. Dec 1996 A
5586260 Hu Dec 1996 A
5590320 Maxey Dec 1996 A
5649194 Miller et al. Jul 1997 A
5649200 Leblang et al. Jul 1997 A
5668943 Attanasio et al. Sep 1997 A
5692180 Lee Nov 1997 A
5721779 Funk Feb 1998 A
5724512 Winterbottom Mar 1998 A
5806061 Chaudhuri et al. Sep 1998 A
5832496 Anand et al. Nov 1998 A
5832522 Blickenstaff et al. Nov 1998 A
5838970 Thomas Nov 1998 A
5862325 Reed et al. Jan 1999 A
5884303 Brown Mar 1999 A
5893086 Schmuck et al. Apr 1999 A
5897638 Lasser et al. Apr 1999 A
5905990 Inglett May 1999 A
5917998 Cabrera et al. Jun 1999 A
5920873 Van Huben et al. Jul 1999 A
5937406 Balabine et al. Aug 1999 A
5999664 Mahoney et al. Dec 1999 A
6012083 Savitzky et al. Jan 2000 A
6029168 Frey Feb 2000 A
6044367 Wolff Mar 2000 A
6047129 Frye Apr 2000 A
6072942 Stockwell et al. Jun 2000 A
6078929 Rao Jun 2000 A
6085234 Pitts et al. Jul 2000 A
6088694 Burns et al. Jul 2000 A
6128627 Mattis et al. Oct 2000 A
6128717 Harrison et al. Oct 2000 A
6161145 Bainbridge et al. Dec 2000 A
6161185 Guthrie et al. Dec 2000 A
6181336 Chiu et al. Jan 2001 B1
6202156 Kalajan Mar 2001 B1
6223206 Dan et al. Apr 2001 B1
6233648 Tomita May 2001 B1
6237008 Beal et al. May 2001 B1
6256031 Meijer et al. Jul 2001 B1
6282610 Bergsten Aug 2001 B1
6289345 Yasue Sep 2001 B1
6308162 Ouimet et al. Oct 2001 B1
6324581 Xu et al. Nov 2001 B1
6339785 Feigenbaum Jan 2002 B1
6349343 Foody et al. Feb 2002 B1
6374263 Bunger et al. Apr 2002 B1
6389433 Bolosky et al. May 2002 B1
6393581 Friedman et al. May 2002 B1
6397246 Wolfe May 2002 B1
6412004 Chen et al. Jun 2002 B1
6438595 Blumenau et al. Aug 2002 B1
6477544 Bolosky et al. Nov 2002 B1
6487561 Ofek et al. Nov 2002 B1
6493804 Soltis et al. Dec 2002 B1
6516350 Lumelsky et al. Feb 2003 B1
6516351 Borr Feb 2003 B2
6549916 Sedlar Apr 2003 B1
6553352 Delurgio et al. Apr 2003 B2
6556997 Levy Apr 2003 B1
6556998 Mukherjee et al. Apr 2003 B1
6601101 Lee et al. Jul 2003 B1
6606663 Liao et al. Aug 2003 B1
6612490 Herrendoerfer et al. Sep 2003 B1
6721794 Taylor et al. Apr 2004 B2
6738790 Klein et al. May 2004 B1
6742035 Zayas et al. May 2004 B1
6748420 Quatrano et al. Jun 2004 B1
6757706 Dong et al. Jun 2004 B1
6775672 Mahalingam et al. Aug 2004 B2
6775673 Mahalingam et al. Aug 2004 B2
6775679 Gupta Aug 2004 B2
6782450 Arnott et al. Aug 2004 B2
6801960 Ericson et al. Oct 2004 B1
6826613 Wang et al. Nov 2004 B1
6839761 Kadyk et al. Jan 2005 B2
6847959 Arrouye et al. Jan 2005 B1
6847970 Keller et al. Jan 2005 B2
6850997 Rooney et al. Feb 2005 B1
6871245 Bradley Mar 2005 B2
6889249 Miloushev et al. May 2005 B2
6922688 Frey, Jr. Jul 2005 B1
6934706 Mancuso et al. Aug 2005 B1
6938039 Bober et al. Aug 2005 B1
6938059 Tamer et al. Aug 2005 B2
6959373 Testardi Oct 2005 B2
6961815 Kistler et al. Nov 2005 B2
6973455 Vahalia et al. Dec 2005 B1
6973549 Testardi Dec 2005 B1
6985936 Agarwalla et al. Jan 2006 B2
6985956 Luke et al. Jan 2006 B2
6986015 Testardi Jan 2006 B2
6990547 Ulrich et al. Jan 2006 B2
6990667 Ulrich et al. Jan 2006 B2
6996841 Kadyk et al. Feb 2006 B2
7003533 Noguchi et al. Feb 2006 B2
7006981 Rose et al. Feb 2006 B2
7010553 Chen et al. Mar 2006 B2
7013379 Testardi Mar 2006 B1
7020644 Jameson Mar 2006 B2
7020699 Zhang et al. Mar 2006 B2
7024427 Bobbitt et al. Apr 2006 B2
7051112 Dawson May 2006 B2
7054998 Arnott et al. May 2006 B2
7072917 Wong et al. Jul 2006 B2
7089286 Malik Aug 2006 B1
7111115 Peters et al. Sep 2006 B2
7113962 Kee et al. Sep 2006 B1
7120128 Banks et al. Oct 2006 B2
7120746 Campbell et al. Oct 2006 B2
7127556 Blumenau et al. Oct 2006 B2
7133967 Fujie et al. Nov 2006 B2
7143146 Nakatani et al. Nov 2006 B2
7146524 Patel et al. Dec 2006 B2
7152184 Maeda et al. Dec 2006 B2
7155466 Rodriguez et al. Dec 2006 B2
7165095 Sim Jan 2007 B2
7167821 Hardwick et al. Jan 2007 B2
7171496 Tanaka et al. Jan 2007 B2
7173929 Testardi Feb 2007 B1
7194579 Robinson et al. Mar 2007 B2
7234074 Cohn et al. Jun 2007 B2
7280536 Testardi Oct 2007 B2
7284150 Ma et al. Oct 2007 B2
7293097 Borr Nov 2007 B2
7293099 Kalajan Nov 2007 B1
7293133 Colgrove et al. Nov 2007 B1
7343398 Lownsbrough Mar 2008 B1
7346664 Wong et al. Mar 2008 B2
7383288 Miloushev et al. Jun 2008 B2
7401220 Bolosky et al. Jul 2008 B2
7406484 Srinivasan et al. Jul 2008 B1
7415488 Muth et al. Aug 2008 B1
7415608 Bolosky et al. Aug 2008 B2
7440982 Lu et al. Oct 2008 B2
7457982 Rajan Nov 2008 B2
7467158 Marinescu Dec 2008 B2
7475241 Patel et al. Jan 2009 B2
7477796 Sasaki et al. Jan 2009 B2
7509322 Miloushev et al. Mar 2009 B2
7512673 Miloushev et al. Mar 2009 B2
7519813 Cox et al. Apr 2009 B1
7562110 Miloushev et al. Jul 2009 B2
7571168 Bahar et al. Aug 2009 B2
7574433 Engel Aug 2009 B2
7587471 Yasuda et al. Sep 2009 B2
7590747 Coates et al. Sep 2009 B2
7599941 Bahar et al. Oct 2009 B2
7610307 Havewala et al. Oct 2009 B2
7610390 Yared et al. Oct 2009 B2
7624109 Testardi Nov 2009 B2
7639883 Gill Dec 2009 B2
7644109 Manley et al. Jan 2010 B2
7653699 Colgrove et al. Jan 2010 B1
7689596 Tsunoda Mar 2010 B2
7694082 Golding et al. Apr 2010 B2
7711771 Kirnos May 2010 B2
7734603 McManis Jun 2010 B1
7743035 Chen et al. Jun 2010 B2
7752294 Meyer et al. Jul 2010 B2
7769711 Srinivasan et al. Aug 2010 B2
7788335 Miloushev et al. Aug 2010 B2
7822939 Veprinsky et al. Oct 2010 B1
7831639 Panchbudhe et al. Nov 2010 B1
7849112 Mane et al. Dec 2010 B2
7870154 Shitomi et al. Jan 2011 B2
7877511 Berger et al. Jan 2011 B1
7885970 Lacapra Feb 2011 B2
7913053 Newland Mar 2011 B1
7953701 Okitsu et al. May 2011 B2
7958347 Ferguson Jun 2011 B1
8005953 Miloushev et al. Aug 2011 B2
20010014891 Hoffert et al. Aug 2001 A1
20010047293 Waller et al. Nov 2001 A1
20010051955 Wong Dec 2001 A1
20020035537 Waller et al. Mar 2002 A1
20020059263 Shima et al. May 2002 A1
20020065810 Bradley May 2002 A1
20020073105 Noguchi et al. Jun 2002 A1
20020083118 Sim Jun 2002 A1
20020087887 Busam et al. Jul 2002 A1
20020120763 Miloushev et al. Aug 2002 A1
20020133330 Loisey et al. Sep 2002 A1
20020133491 Sim et al. Sep 2002 A1
20020138502 Gupta Sep 2002 A1
20020143909 Botz et al. Oct 2002 A1
20020147630 Rose et al. Oct 2002 A1
20020150253 Brezak et al. Oct 2002 A1
20020156905 Weissman Oct 2002 A1
20020160161 Misuda Oct 2002 A1
20020161911 Pinckney, III et al. Oct 2002 A1
20020188667 Kirnos Dec 2002 A1
20030009429 Jameson Jan 2003 A1
20030012382 Ferchichi et al. Jan 2003 A1
20030028514 Lord et al. Feb 2003 A1
20030033308 Patel et al. Feb 2003 A1
20030033535 Fisher et al. Feb 2003 A1
20030061240 McCann et al. Mar 2003 A1
20030065956 Belapurkar et al. Apr 2003 A1
20030115218 Bobbitt et al. Jun 2003 A1
20030115439 Mahalingam et al. Jun 2003 A1
20030135514 Patel et al. Jul 2003 A1
20030149781 Yared et al. Aug 2003 A1
20030159072 Bellinger et al. Aug 2003 A1
20030171978 Jenkins et al. Sep 2003 A1
20030177364 Walsh et al. Sep 2003 A1
20030177388 Botz et al. Sep 2003 A1
20030204635 Ko et al. Oct 2003 A1
20040003266 Moshir et al. Jan 2004 A1
20040006575 Visharam et al. Jan 2004 A1
20040010654 Yasuda et al. Jan 2004 A1
20040025013 Parker et al. Feb 2004 A1
20040028043 Maveli et al. Feb 2004 A1
20040028063 Roy et al. Feb 2004 A1
20040030857 Krakirian et al. Feb 2004 A1
20040054777 Ackaouy et al. Mar 2004 A1
20040093474 Lin et al. May 2004 A1
20040098383 Tabellion et al. May 2004 A1
20040098595 Aupperle et al. May 2004 A1
20040133573 Miloushev et al. Jul 2004 A1
20040133577 Miloushev et al. Jul 2004 A1
20040133606 Miloushev et al. Jul 2004 A1
20040133607 Miloushev et al. Jul 2004 A1
20040133652 Miloushev et al. Jul 2004 A1
20040139355 Axel et al. Jul 2004 A1
20040148380 Meyer et al. Jul 2004 A1
20040153479 Mikesell et al. Aug 2004 A1
20040181605 Nakatani et al. Sep 2004 A1
20040199547 Winter et al. Oct 2004 A1
20040236798 Srinivasan et al. Nov 2004 A1
20050021615 Arnott et al. Jan 2005 A1
20050050107 Mane et al. Mar 2005 A1
20050091214 Probert et al. Apr 2005 A1
20050108575 Yung May 2005 A1
20050114291 Becker-Szendy et al. May 2005 A1
20050114701 Atkins et al. May 2005 A1
20050187866 Lee Aug 2005 A1
20050189501 Sato et al. Sep 2005 A1
20050246393 Coates et al. Nov 2005 A1
20050289109 Arrouye et al. Dec 2005 A1
20050289111 Tribble et al. Dec 2005 A1
20060010502 Mimatsu et al. Jan 2006 A1
20060075475 Boulos et al. Apr 2006 A1
20060080353 Miloushev et al. Apr 2006 A1
20060106882 Douceur et al. May 2006 A1
20060112151 Manley et al. May 2006 A1
20060123062 Bobbitt et al. Jun 2006 A1
20060161518 Lacapra Jul 2006 A1
20060167838 Lacapra Jul 2006 A1
20060179261 Rajan Aug 2006 A1
20060184589 Lees et al. Aug 2006 A1
20060190496 Tsunoda Aug 2006 A1
20060200470 Lacapra et al. Sep 2006 A1
20060212746 Amegadzie et al. Sep 2006 A1
20060224687 Popkin et al. Oct 2006 A1
20060230265 Krishna Oct 2006 A1
20060242179 Chen et al. Oct 2006 A1
20060259949 Schaefer et al. Nov 2006 A1
20060271598 Wong et al. Nov 2006 A1
20060277225 Mark et al. Dec 2006 A1
20060282461 Marinescu Dec 2006 A1
20060282471 Mark et al. Dec 2006 A1
20070024919 Wong et al. Feb 2007 A1
20070027929 Whelan Feb 2007 A1
20070028068 Golding et al. Feb 2007 A1
20070088702 Fridella et al. Apr 2007 A1
20070136308 Tsirigotis et al. Jun 2007 A1
20070208748 Li Sep 2007 A1
20070209075 Coffman Sep 2007 A1
20070226331 Srinivasan et al. Sep 2007 A1
20080046432 Anderson et al. Feb 2008 A1
20080070575 Claussen et al. Mar 2008 A1
20080104443 Akutsu et al. May 2008 A1
20080209073 Tang Aug 2008 A1
20080222223 Srinivasan et al. Sep 2008 A1
20080243769 Arbour et al. Oct 2008 A1
20080282047 Arakawa et al. Nov 2008 A1
20090007162 Sheehan Jan 2009 A1
20090037975 Ishikawa et al. Feb 2009 A1
20090041230 Williams Feb 2009 A1
20090055607 Schack et al. Feb 2009 A1
20090077097 Lacapra et al. Mar 2009 A1
20090089344 Brown et al. Apr 2009 A1
20090094252 Wong et al. Apr 2009 A1
20090106255 Lacapra et al. Apr 2009 A1
20090106263 Khalid et al. Apr 2009 A1
20090132616 Winter et al. May 2009 A1
20090204649 Wong et al. Aug 2009 A1
20090204650 Wong et al. Aug 2009 A1
20090204705 Marinov et al. Aug 2009 A1
20090210431 Marinkovic et al. Aug 2009 A1
20090254592 Marinov et al. Oct 2009 A1
20100211547 Kamei et al. Aug 2010 A1
20110087696 Lacapra Apr 2011 A1
Foreign Referenced Citations (14)
Number Date Country
2003300350 Jul 2004 AU
2512312 Jul 2004 CA
0 738 970 Oct 1996 EP
63010250 Jan 1988 JP
6-332782 Dec 1994 JP
08-328760 Dec 1996 JP
08-339355 Dec 1996 JP
9016510 Jan 1997 JP
11282741 Oct 1999 JP
566291 Dec 2008 NZ
WO 02056181 Jul 2002 WO
WO 2004061605 Jul 2004 WO
WO 2008130983 Oct 2008 WO
WO 2008147973 Dec 2008 WO
Provisional Applications (1)
Number Date Country
61013539 Dec 2007 US