US20100198788A1 - Method and system for no downtime resynchronization for real-time, continuous data protection - Google Patents

Method and system for no downtime resynchronization for real-time, continuous data protection Download PDF

Info

Publication number
US20100198788A1
US20100198788A1 US12/696,691 US69669110A US2010198788A1 US 20100198788 A1 US20100198788 A1 US 20100198788A1 US 69669110 A US69669110 A US 69669110A US 2010198788 A1 US2010198788 A1 US 2010198788A1
Authority
US
United States
Prior art keywords
data
state
given
application
dms
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/696,691
Inventor
Siew Yong Sim-Tang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bakbone Software Inc
Original Assignee
Bakbone Software Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bakbone Software Inc filed Critical Bakbone Software Inc
Priority to US12/696,691 priority Critical patent/US20100198788A1/en
Assigned to BAKBONE SOFTWARE, INC. reassignment BAKBONE SOFTWARE, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SIM-TANG, SIEW YONG
Publication of US20100198788A1 publication Critical patent/US20100198788A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users

Definitions

  • the present invention relates generally to enterprise data protection.
  • IT information technology
  • the backup device may acquire a “snapshot” of the contents of an entire hard disk at a particular time and then store this for later use, e.g., reintroduction onto the disk (or onto a new disk) should the computer fail.
  • the problems with the snapshot approaches are well known and appreciated.
  • critical data can change as the snapshot is taken, which results in incomplete updates (e.g., half a transaction) being captured so that, when reintroduced, the data is not fully consistent.
  • changes in data occurring after a snapshot is taken are always at risk.
  • Data recovery on a conventional data protection system is a tedious and time consuming operation. It involves first shutting down a host server, and then selecting a version of the data history. That selected version of the data history must then be copied back to the host server, and then the host server must be re-started. All of these steps are manually driven. After a period of time, the conventional data protection system must then perform a backup on the changed data. As these separate and distinct processes and systems are carried out, there are significant periods of application downtime. Stated another way, with the current state of the art, the processes of initial data upload, scheduled or continuous backup, data resynchronization, and data recovery, are separate and distinct, include many manual steps, and involve different and uncoordinated systems, processes and operations.
  • a data management system or “DMS” provides an automated, continuous, real-time, substantially no downtime data protection service to one or more data sources associated with a set of application host servers.
  • the data management system typically comprises one or more regions, with each region having one or more clusters.
  • a given cluster has one or more nodes that share storage.
  • a host driver embedded in an application server captures real-time data transactions, preferably in the form of an event journal that is provided to a DMS cluster.
  • the driver functions to translate traditional file/database/block I/O and the like into a continuous, application-aware, output data stream.
  • the host driver includes an event processor that provides the data protection service.
  • the data protection is provided to a given data source in the host server by taking advantage of the continuous, real-time data that the host driver is capturing and providing to other DMS components.
  • the event processor When a given data protection command for a given data source is forwarded to a host driver, the event processor enters into an initial upload state. During this state, the event processor gathers a list of data items of the data source to be protected and creates a data list. The data list is sometimes referred to as a sorted source tree. Then, the event processor moves the data (as an upload, preferably one data element at a time) to a DMS core to create initial baseline data. In an illustrative embodiment, the upload is a stream of granular application-aware data chunks that are attached to upload events. During this upload phase, the application does not have to be shutdown.
  • the DMS core receives the real time event journal stream that includes the baseline upload events and the change events. It processes these events and organizes the data to maintain their history in a persistent storage of the DMS. If DMS fails while processing an upload or an update data event, preferably a failure event is forwarded back to the host driver and entered into an event queue as a protocol specific event. The event processor then marks the target item associated with the failure “dirty” (or out-of-sync) and then performs data synchronization with the DMS on that target item. This operation is also referred to as an “upward resynchronization.”
  • the resynchronization state is entered when there is a suspicion that the state of the data in the host is out-of-sync with the state of the most current data in the DMS, and it is also known that the data in the host server is not corrupted.
  • this state is entered after a blackout when data in the host is changed; or, the state is entered after a host server is rebooted and the state of the most current data at the DMS is unknown. During this state, it is assumed that the host server data is good and is more current then the latest data in the DMS.
  • the event processor is keeping track of the updated (dirty) data at the host server during a blackout, preferably it only compares that data with the corresponding copy in the DMS; it then sends to the DMS the deltas (e.g., as checkpoint delta events). If, during the case of a host server reboot, the “dirty” data is not known, preferably the event processor goes over the entire data source, re-creates a sorted source tree, and then compares each individual data item, sending delta events to the DMS as necessary.
  • the application does not have to be shutdown during resynchronization. Also, preferably upward-resynchronization occurs simultaneously while the application is accessing and updating the data in the primary storage.
  • the update events for the data objects that are dirty and are not yet re-synchronized preferably are dropped, while other events are processed.
  • the event processor tracks both the resynchronization and update activities accordingly and outputs to the DMS core a real time event journal stream.
  • the DMS core receives the real time event journal stream, which includes requests for data checkpoints, resynchronization delta events, and the change events.
  • the DMS core processes these events and organizes the data in the DMS persistent storage to maintain their history.
  • FIG. 1 is an illustrative enterprise network in which the present invention may be deployed
  • FIG. 2 is an illustration of a general data management system (DMS) of the present invention
  • FIG. 3 is an illustration of a representative DMS network according to one embodiment of the present invention.
  • FIG. 4 illustrates how a data management system may be used to provide one or more data services according to the present invention
  • FIG. 5 is a representative host driver according to a preferred embodiment of the present invention having an I/O filter and one or more data agents;
  • FIG. 6 illustrates the host driver architecture in a more general fashion
  • FIG. 7 illustrates a preferred implementation of an event processor finite state machine (FSM) that provides automated, real-time, continuous, zero downtime data protection service;
  • FSM finite state machine
  • FIG. 8 is a simplified diagram illustrating how the event processor operates in the initial upload and resynchronization states
  • FIG. 9 is a flowchart illustrating the steps performed by the event processor during the initial upload and resynchronization states
  • FIG. 10 is a flowchart illustrating how the event processor handles internal events, which is a step of the flowchart in FIG. 9 ;
  • FIG. 11 is a flowchart illustrating how the event processor handles I/O events, which is a step of the flowchart in FIG. 9 ;
  • FIG. 12 is a flowchart illustrating how the event processor handles network, system, application and database events, which is a step of the flowchart in FIG. 9 ;
  • FIG. 13 is a flowchart illustrating how the event processor handles protocol transport events, which is a step of the flowchart in FIG. 9 .
  • FIG. 1 illustrates a representative enterprise 100 in which the present invention may be implemented.
  • the enterprise 100 comprises a primary data tier 102 and a secondary data tier 104 distributed over IP-based wide area networks 106 and 108 .
  • Wide area network 106 interconnects two primary data centers 110 and 112
  • wide area network 108 interconnects a regional or satellite office 114 to the rest of the enterprise.
  • the primary data tier 102 comprises application servers 116 running various applications such as databases, email servers, file servers, and the like, together with associated primary storage 118 (e.g., direct attached storage (DAS), network attached storage (NAS), storage area network (SAN)).
  • DAS direct attached storage
  • NAS network attached storage
  • SAN storage area network
  • the secondary data tier 104 typically comprises one or more data management server nodes, and secondary storage 120 , which may be DAS, NAS, and SAN.
  • the secondary storage may be serial ATA interconnection through SCSI, Fibre Channel (FC or the like), or iSCSI.
  • the data management server nodes create a logical layer that offers object virtualization and protected data storage.
  • the secondary data tier is interconnected to the primary data tier, preferably through one or more host drivers (as described below) to provide real-time data services. Preferably, and as described below, the real-time data services are provided through a given I/O protocol for data transfer.
  • Data management policies 126 are implemented across the secondary storage in a well-known manner.
  • a similar architecture is provided in data center 112 . In this example, the regional office 114 does not have its own secondary storage, but relies instead on the facilities in the primary data centers.
  • a “host driver” 128 is associated with one or more of the application(s) running in the application servers 116 to transparently and efficiently capture the real-time, continuous history of all (or substantially all) transactions and changes to data associated with such application(s) across the enterprise network.
  • the present invention facilitates real-time, so-called “application aware” protection, with substantially no data loss, to provide continuous data protection and other data services including, without limitation, data distribution, data replication, data copy, data access, and the like.
  • a given host driver 128 intercepts data events between an application and its primary data storage, and it may also receive data and application events directly from the application and database.
  • each of the primary data centers includes a set of one or more data management servers 130 a - n that cooperate with the host drivers 128 to facilitate the data services.
  • the data center 110 supports a first core region 130
  • the data center 112 supports a second core region 132 .
  • a given data management server 130 is implemented using commodity hardware and software (e.g., an Intel processor-based blade server running Linux operating system, or the like) and having associated disk storage and memory.
  • the host drivers 128 and data management servers 130 comprise a data management system (DMS) that provides potentially global data services across the enterprise.
  • DMS data management system
  • FIG. 2 illustrates a preferred hierarchical structure of a data management system 200 .
  • the data management system 200 comprises one or more regions 202 a - n, with each region 202 comprising one or more clusters 204 a - n.
  • a given cluster 204 includes one or more nodes 206 a - n and a shared storage 208 shared by the nodes 206 within the cluster 204 .
  • a given node 206 is a data management server as described above with respect to FIG. 1 .
  • Within a DMS cluster 204 preferably all the nodes 206 perform parallel access to the data in the shared storage 208 .
  • the nodes 206 are hot swappable to enable new nodes to be added and existing nodes to be removed without causing cluster downtime.
  • a cluster is a tightly-coupled, share everything grouping of nodes.
  • the DMS is a loosely-coupled share nothing grouping of DMS clusters.
  • all DMS clusters have shared knowledge of the entire network, and all clusters preferably share partial or summary information about the data that they possess. Network connections (e.g., sessions) to one DMS node in a DMS cluster may be re-directed to another DMS node in another cluster when data is not present in the first DMS cluster but may be present in the second DMS cluster.
  • new DMS clusters may be added to the DMS cloud without interfering with the operation of the existing DMS clusters.
  • a DMS cluster fails, its data may be accessed in another cluster transparently, and its data service responsibility may be passed on to another DMS cluster.
  • FIG. 3 illustrates the data management system (DMS) as a network (in effect, a wide area network “cloud”) of peer-to-peer DMS service nodes.
  • the DMS cloud 300 typically comprises one or more DMS regions, with each region comprising one or more DMS “clusters.”
  • DMS regions typically there are two different types of DMS regions, in this example an “edge” region 306 and a “core” region 308 . This nomenclature is not to be taken to limit the invention, of course.
  • FIG. 3 illustrates the data management system (DMS) as a network (in effect, a wide area network “cloud”) of peer-to-peer DMS service nodes.
  • the DMS cloud 300 typically comprises one or more DMS regions, with each region comprising one or more DMS “clusters.”
  • typically there are two different types of DMS regions in this example an “edge” region 306 and a “core” region 308 . This nomenclature is not to be taken to limit the invention, of course.
  • an edge region 306 typically is a smaller office or data center where the amount of data hosted is limited and/or where a single node DMS cluster is sufficient to provide necessary data services.
  • core regions 308 are medium or large size data centers where one or more multi-node clusters are required or desired to provide the necessary data services.
  • the DMS preferably also includes one or more management gateways 310 for controlling the system. As seen in FIG. 3 , conceptually the DMS can be visualized as a set of data sources 312 .
  • a data source is a representation of a related group of fine grain data.
  • a data source may be a directory of files and subdirectory, or it may be a database, or a combination of both.
  • a data source 312 inside a DMS cluster captures a range of history and continuous changes of, for example, an external data source in a host server.
  • a data source may reside in one cluster, and it may replicate to other clusters or regions based on subscription rules. If a data source exists in the storage of a DMS cluster, preferably it can be accessed through any one of the DMS nodes in that cluster. If a data source does not exist in a DMS cluster, then the requesting session may be redirected to another DMS cluster that has the data; alternatively, the current DMS cluster may perform an on-demand replication to bring in the data.
  • an illustrative DMS network 400 provides a wide range of data services to data sources associated with a set of application host servers.
  • the DMS host driver 402 embedded in an application server 404 connects the application and its data to the DMS cluster.
  • the DMS host drivers can be considered as an extension of the DMS cloud reaching to the data of the application servers.
  • the DMS network offers a wide range of data services that include, by way of example only: data protection (and recovery), disaster recovery (data distribution and data replication), data copy, and data query and access.
  • the data services and, in particular, data protection and disaster recovery preferably are stream based data services where meaningful application and data events are forwarded from one end point to another end point continuously as a stream.
  • a stream-based data service is a service that involves two end points sending a stream of real-time application and data events.
  • Data distribution refers to streaming a data source from one DMS cluster into another DMS cluster
  • data replication refers to streaming a data source from a DMS cluster to another external host server.
  • both data distribution and data replication are real-time continuous movement of a data source from one location to another to prepare for disaster recovery.
  • Data replication differs from data distribution in that, in the latter case, the data source is replicated within the DMS network where the history of the data source is maintained.
  • Data replication typically is host based replication, where the continuous events and changes are applied to the host data such that the data is overwritten by the latest events; therefore, the history is lost.
  • Data copy is a data access service where a consistent data source (or part of a data source) at any point-in-time can be constructed and retrieved. This data service allows data of the most Page 11 current point-in-time, or a specific point-in-time in the past, to be retrieved when the data is in a consistent state. These data services are merely representative.
  • the DMS provides these and other data services in real-time with data and application awareness to ensure continuous application data consistency and to allow for fine grain data access and recovery.
  • the DMS has the capability to capture fine grain and consistent data.
  • a given DMS host driver uses an I/O filter to intercept data events between an application and its primary data storage. The host driver also receives data and application events directly from the application and database.
  • the host driver 500 may be embedded in the host server where the application resides, or in the network on the application data path. By capturing data through the application, fine grain data is captured along with application events, thereby enabling the DMS cluster to provide application aware data services in a manner that has not been possible in the prior art.
  • a host server embedded host driver is used for illustrating the driver behavior.
  • the host driver 500 in a host server connects to one of the DMS nodes in a DMS cluster (in a DMS region) to perform or facilitate a data service.
  • the host driver preferably includes two logical subsystems, namely, an I/O filter 502 , and at least one data agent 504 .
  • An illustrative data agent 504 preferably includes one or more modules, namely, an application module 506 , a database module 508 , an I/O module 510 , and an event processor or event processing engine 512 .
  • the application module 506 is configured with an application 514 , one or more network devices and/or the host system itself to receive application level events 516 .
  • Events include, without limitation, entry or deletion of some critical data, installation or upgrade of application software or the operating system, a system alert, detecting of a virus, an administrator generated checkpoint, and so on.
  • One or more application events are queued for processing into an event queue 518 inside or otherwise associated with the data agent.
  • the event processor 512 over time may instruct the application module 506 to re-configure with its event source to capture different application level events.
  • a database module 508 is available for use.
  • the database module 508 preferably registers with a database 520 to obtain notifications from a database.
  • the module 508 also may integrate with the database 520 through one or more database triggers, or it may also instruct the database 520 to generate a checkpoint 522 .
  • the database module 508 also may lock the database 520 (or issue a specific API) to force a database manager (not shown) to flush out its data from memory to disk, thereby generating a consistent disk image (a binary table checkpoint). This process of locking a database is also known as “quiescing” the database.
  • An alternative to quiescing a database is to set the database into a warm backup mode.
  • the database module 508 then lifts a lock to release the database from its quiescent state.
  • the database events preferably are also queued for processing into the event queue 518 .
  • database events include, without limitation, a database checkpoint, specific database requests (such as schema changes or other requests), access failure, and so on.
  • the event processor 512 may be used to re-configure the events that will be captured by the database module.
  • the I/O module 510 instructs the I/O filter 502 to capture a set of one or more I/O events that are of interest to the data agent. For example, a given I/O module 510 may control the filter to capture I/O events synchronously, or the module 510 may control the filter to only capture several successful post I/O events. When the I/O module 510 receives I/O events 524 , it forwards the I/O events to the event queue 518 for processing. The event processor 512 may also be used to re-configure the I/O module 510 and, thus, the I/O filter 502 .
  • the event processor 512 functions to generate an application aware, real-time event journal (in effect, a continuous stream) for use by one or more DMS nodes to provide one or more data services.
  • Application aware event journaling is a technique to create real-time data capture so that, among other things, consistent data checkpoints of an application can be identified and metadata can be extracted. For example, application awareness is the ability to distinguish a file from a directory, a journal file from a control or binary raw data file, or to know how a file or a directory object is modified by a given application.
  • an application aware solution when protecting a general purpose file server, is capable of distinguishing a file from a directory, and of identifying a consistent file checkpoint (e.g., zero-buffered write, flush or close events), and of interpreting and capturing file system object attributes such as an access control list.
  • a consistent file checkpoint e.g., zero-buffered write, flush or close events
  • an application aware data protection may ignore activities applied to a temporary file.
  • Another example of application awareness is the ability to identify a group of related files, directories or raw volumes that belong to a given application.
  • the solution when protecting a database with an application aware solution, is capable of identifying the group of volumes or directories and files that make up a given database, of extracting the name of the database, and of distinguishing journal files from binary table files and control files.
  • the state of the database journal may be more current than the state of the binary tables of the database in primary storage during runtime.
  • application aware event journaling tracks granular application consistent checkpoints; thus, when used in conjunction with data protection, the event journal is useful in reconstructing an application data state to a consistent point-in-time in the past, and it also capable of retrieving a granular object in the past without having to recover an entire data volume. Further details of the event journaling technique are described in U.S. Pat. No. 7,565,661, the subject matter of which is incorporated herein by reference.
  • the host driver 600 comprises an I/O filter 602 , a control agent 604 , and one or more data agents 606 .
  • the control agent 604 receives commands from a DMS core 608 , which may include a host object 610 and one or more data source objects 612 a - n, and it controls the behavior of the one or more data agents 606 .
  • each data agent 606 manages one data source for one data service.
  • data agent 1 may be protecting directory “dir 1 ”
  • data agent 2 may be copying file “foo.html” into the host
  • data agent 3 may be protecting a database on the host.
  • Each data agent typically will have the modules and architecture described above and illustrative in FIG. 5 . Given data agents, of course, may share one or more modules depending on the actual implementation.
  • the data agents register as needed with the I/O filter 602 , the database 614 and/or the application 616 to receive (as the case may be): I/O events from the I/O filter, database events from the database, and/or application events from the application, the operating system and other (e.g., network) devices. Additional internal events or other protocol-specific information may also be inserted into the event queue 618 and dispatched to a given data agent for processing.
  • the output of the event processor in each data agent comprises a part of the event journal.
  • the host driver communicates with the DMS core using an extensible data management protocol (XDMP) 618 that is marshaled and un-marshaled through a device driver kit (DDK). More generally, the host driver communicates with the DMS core using any convenient message transport protocol. As will be described, given XDMP events may also be inserted into the event queue and processed by the event processor.
  • XDMP extensible data management protocol
  • DK device driver kit
  • FIG. 7 illustrates a preferred embodiment of the invention, wherein a given event processor in a given host driver provides a data protection service by implementing a finite state machine 700 .
  • the behavior of the event processor depends on what state it is at, and this behavior preferably is described in an event processor data protection state table.
  • the “state” of the event processor preferably is driven by a given “incident” (or event) as described in an event processor data protection incident table.
  • the state of the event processor may change. The change from one state to another is sometimes referred to as a transition.
  • FIG. 7 illustrates a data protection state transition diagram of the given event processor.
  • an incident may or may not drive the event processor into another state.
  • the tail of an incident arrow connects to a prior state (i.e., branches out of a prior state), and the head of an incident arrow connects to a next state. If an incident listed in the incident table does not branch out from a state, then it is invalid for (i.e., it cannot occur in) that state. For example, it is not possible for a “Done-Upload” incident to occur in the “UBlackout” state”.
  • the data protection service is initiated on a data source in a host server as follows. As illustrated in FIG. 6 , it is assumed that a control agent 604 has created a data agent 606 having an event processor that outputs the event journal data stream, as has been described. As this point, the event processor in the data agent 606 is transitioned to a first state, which is called “Initial-Upload” for illustrative purposes. During the “Initial-Upload” state 702 , the event processor self-generates upload events, and it also receives other raw events from its associated event queue. The event processor simultaneously uploads the initial baseline data source, and it backs up the on-going changes from the application.
  • the event processor also manages data that is dirty or out-of-sync, as indicated in a given data structure.
  • a representative data structure is a “sorted” source tree, which is a list (sorted using an appropriate sort technique) that includes, for example, an entry per data item.
  • the list preferably also includes an indicator or flag specifying whether a given data item is uploaded or not, as well as whether the item is in- (or out-of) sync with the data in the DMS. Additional information may be included in the sorted source tree, as will be described in more detail below.
  • the event processor performs resynchronization on the items that are out-of-sync. As indicated in FIG.
  • a “Reboot” incident that occurs when the state machine is in state 702 does not change the state of the event processor; rather, the event processor simply continues processing from where it left off.
  • a “Blackout” incident transitions the event processor to a state 704 called (for illustration only) “UBlackout.” This is a blackout state that occurs as the event processor uploads the initial baseline data source, or as the event processor is backing up the on-going changes from the application.
  • the state 704 changes back to the “Initial-Upload” state 702 when a so-called “Reconnected” incident occurs.
  • the event processor When upload is completed and all the data is in synchronized with the data in the DMS, the event processor generates a “Done-upload” incident, which causes the event processor to move to a new state 706 .
  • This new state is called “Regular-backup” for illustrative purposes.
  • the event processor processes all the raw events from the event queue, and it generates a meaningful checkpoint real time event journal stream to the DMS for maintaining the data history. This operation has been described above.
  • the event processor exits its regular backup state 706 under one of three (3) conditions: a blackout incident, a reboot incident, or a begin recovery incident.
  • the state of the event processor transitions from state 706 to a new state 708 , which is called “PBlackout” for illustration purposes. This is a blackout state that occurs during regular backup.
  • a “Reboot” incident occurs, the event processor transitions to a different state 710 , which is called “Upward-Resync” for illustrative purposes.
  • the upward resynchronization state 710 is also reached from state 708 upon a Reconnected incident during the latter state. Upward resynchronization is a state that is entered when there is a suspicion that the state of the data in the host is out-of-sync with the state of the most current data in the DMS.
  • a transition from state 706 to state 710 occurs because, after “Reboot,” the event processor does not know if the data state of the host is identical with the state of the data in DMS.
  • the event processor synchronizes the state of the host data to the state of the DMS data (in other words, to bring the DMS data to the same state as the host data).
  • update events to the already synchronized data items
  • data history is streamed into the DMS continuously, preferably as a real time event journal.
  • An authorized user can invoke a recovery at any of the states when the host server is connected to the DMS core, namely, during the “Regular-backup” and “Upward-resync” states 706 and 710 . If the authorized user does so, a “Begin-recovery” incident occurs, which drives the event processor state to the “Recovering-frame” state 712 .
  • the event processor reconstructs the sorted source tree, which (as noted above) contains structural information of the data to be recovered.
  • state 712 and depending on the underlying data, the application may or may not be able to access the data.
  • a “Done-Recovering-Frame” incident is generated, which then transitions the event processor to a new state 714 , referred to as “Recovering” for illustration purposes.
  • incidents such as “Blackout,” “Reconnected,” and “Reboot” do not change the state of the event processor.
  • the event processor recovers the actual data from the DMS, preferably a data point at a time. It also recovers data as an application access request arrives to enable the application to continuing running
  • state 714 application update events are streamed to the DMS so that history is continued to be maintained, even as the event processor is recovering the data in the host.
  • data recovery is completed, once again the state of the data (at both ends of the stream) is synchronized, and the corruption at the host is fixed. Thus, a so-called “Done-recovered” incident is generated, and the event processor transitions back to the “Regular-backup” state 706 .
  • the event processor marks the updated data item as dirty or out-of-sync in its sorted source tree.
  • a “termination” incident may be introduced to terminate the data protection service at a given state.
  • a termination incident may apply to a given state, or more generally, to any given state, in which latter case the event processor is transitioned (from its then-current state) to a terminated state. This releases the data agent and its event processor from further provision of the data protection service.
  • FIG. 8 illustrates the event processor behavior during respective upload and upward-resynchronization states ( 702 and 710 , respectively, in FIG. 7 ) as part of the data protection service.
  • the upload state creates baseline data.
  • the upload is a stream of granular application-aware data chunks that are attached to upload events.
  • the application does not have to be shutdown, which is highly advantageous.
  • the baseline is uploading and as the application updates the data on the host
  • checkpoint granular data, metadata, and data events are continuously streamed into the DMS core, in real-time.
  • the update events for the data that are not already uploaded preferably are dropped so that only the update events for data already uploaded are streamed to the DMS.
  • the event processor 800 includes the event processor logic 802 that has been previously described.
  • Processor 800 also has associated therewith a given data structure 804 , preferably a sorted source tree.
  • a sorted source tree is a list, which may be sorted using any convenient sorting technique, and it is used to manage the handling of data during the upload and/or upward-resync states.
  • the sorted source tree is a directory sort list, with directories and their associated files sorted in a depth-first manner as illustrated schematically at reference numeral 805 .
  • the list includes one or more one attributes per data item.
  • a given attribute may have an associated flag, which indicates a setting for the attribute.
  • representative attributes include: data path, data state, dirty, sent count, to be uploaded, to be recovered, and data bitmap.
  • the “data path” attribute typically identifies the path name (e.g., c: ⁇ mydirectory ⁇ foo.txt) of a file or directory where the data item originated
  • the “data state” attribute identifies a state of the data file (e.g., closed, opened for read, opened for write, the accumulated changes since a last checkpoint, or the like)
  • the “dirty” attribute identifies whether the item is “out-of-sync” with the data in the DMS (which means that the file or directory in the host is more up-to-date than the corresponding file or directory in DMS).
  • a file can be “dirty” if it is updated during a blackout, or if the delta events for the file fail to be applied at the DMS core.
  • the “to be uploaded” attribute means that the item is not yet uploaded but needs to be
  • the “to be recovered” attribute means that the item, although previously, uploaded, must be recovered
  • the “sent count” attribute refers to a number of message(s) that are forwarded to the DMS host during the upload and/or upward resynchronization
  • the “data bitmap” attribute is used for virtual recovery of a large file.
  • virtual recovery may involve the following process.
  • a large file is divided into blocks, and the bitmap is used to indicate if a block is recovered or not. If a block has a value 0, it is not recovered; if the block has a value 1, it is recovered. Preferably, the system recovers a large file in sequential block order, although this is not a requirement. In the event an application request arrives for a data block that is not yet recovered, preferably the system moves in the block from DMS immediately so that the application does not have to wait for it.
  • Raw events are available on the event queue 806 , as described above.
  • a set of illustrative events are shown in the drawing and they include, in this example: Open (object ID), Write (object ID, data range), Write (object ID, data range), System upgrade (timestamp), Write (object ID, data range), Trigger (ID, data, timestamp), Network events, and so on.
  • Open object ID
  • Write object ID, data range
  • Write object ID, data range
  • System upgrade timestamp
  • Write object ID, data range
  • Trigger ID, data, timestamp
  • Network events and so on.
  • this list is merely for illustration purposes.
  • the protected data source may be a database, in which case the sorted source tree may be a list of files or volumes the database uses.
  • the sorting order may be in ascending order of the database transaction log, the binary table files or volumes, and the configuration files or volumes. If a volume-based database is to be protected, each volume can be treated like a file.
  • a cursor 808 is set at the beginning of the sorted source tree 804 and is incremented.
  • events that occur “above” the cursor are processed immediately by the event processor logic 802 and sent to the DMS node. Events that occur at or below the cursor typically may be subject to further processing, as will be described.
  • FIGS. 9-13 the operation of the event processor (during the initial upload and upward-resynchronization states) is described for an illustrative embodiment in more detail. These process flows are not meant to be taken by way of limitation.
  • Step 902 is entered when the finite state machine receives an incident that initiates the data protection cycle.
  • step 908 the mode is set to upload, which indicates the upload state has been entered. If the process is entered at step 904 , the mode is set at step 910 to resync.
  • the mode is set at step 912 to prior-mode, which is a value that can represent either the upload or resync state.
  • prior-mode is a value that can represent either the upload or resync state.
  • the “mode” is synonymous with the “state” as that term has been described above with respect to the finite state machine.
  • the process flow continues at step 914 , where the event processor creates the sorted source tree and sets the cursor to the beginning of that tree.
  • the event processor also sets the “to be uploaded” flag on all data items.
  • the process then continues at step 916 , which is also reached through step 915 in the resync process path.
  • the event processor creates the sorted source tree, sets the cursor to point to the beginning of the tree, and sets the “dirty” flag on all data items.
  • Step 916 is also reached from step 912 , as indicated.
  • the event processor configures the I/O filter, the application module, and/or the database module to begin filtering events, as has been described above.
  • the process flow then continues at step 918 , during which the event processor self posts an internal event if the associated event queue is empty.
  • the event processor removes an event from the event queue.
  • FIG. 10 illustrates the processing if the event is an internal event. This is step 1000 .
  • FIG. 11 illustrates the processing if the event is an input/output event. This is step 1100 .
  • FIG. 12 illustrates the processing if the event is a network, system, application or database event. This is step 1200 .
  • FIG. 13 illustrates the processing if the event is an XDMP event. This is step 1300 .
  • FIG. 10 illustrates the processing for an internal event.
  • the routine begins at step 1002 .
  • the event processor locates the sorted source tree item that is at the cursor.
  • a test is then run at step 1006 to determine whether the “to be uploaded” flag is set. If yes, the routine branches to step 1008 , where the event processor obtains the necessary data of the item on the sorted source tree at the cursor position.
  • the event processor generates a message, associates (e.g., bundles) the data with the message, forwards that message (which now includes the data) to the XDMP protocol driver (for delivery to the DMS core), and increments the sent count.
  • the event processor clears the “to be uploaded” flag on the sorted source tree for this particular entry, after which the event processor continues at step 1018 by moving the cursor to the next item in the sorted source tree.
  • the routine branches to step 1014 to determine whether the item is dirty. If not, the routine branches to step 1018 , as illustrated. If the result of the test at step 1014 indicates that the item is dirty, the routine branches to step 1016 .
  • the event processor makes a request to a DMS core to retrieve remote information to enable it to perform a comparative resynchronization, increments the sent count, and forwards the message to the XDMP protocol driver (for delivery to the DMS core).
  • Control then continues at step 1018 , as has been described.
  • a test is performed at step 1020 to determine whether the sorted source tree has been completely parsed. If yes, the routine branches to step 1022 to begin the regular backup state. If, however, the result of the test at step 1020 indicates that the sorted source tree is not yet parsed, the routine returns to step 918 in FIG. 9 .
  • FIG. 11 illustrates the processing for an input/output (I/O) event.
  • the routine begins at step 1102 to test whether the event in question affects the sorted source tree. If so, the routine branches to step 1104 , during which the event processor adjusts the sorted source tree and the cursor accordingly. Control then returns to step 1106 , which step is also reached when the outcome of the test at step 1102 is negative.
  • the event processor locates the target object in the sorted source tree.
  • a test is performed to determine whether the target object is above the cursor. If not, the routine continues at step 1110 to capture the relevant information of the event into a data state of the object item in the sorted source tree.
  • the event processor also drops the event.
  • the process flow then continues at step 1126 .
  • the process flow branches to step 1112 .
  • a test is performed to determine whether the item is dirty. If so, the event processor performs step 1114 , which means the resynchronization is in progress.
  • the event processor enters the event the relevant information of the event into a data state of the object item in the sorted source tree, drops the event, and branches to step 1126 .
  • the relevant information might be the changed data. If, however, the outcome of the test at step 1112 indicates that the item is not dirty, the routine continues with step 1116 to process the event and enter the relevant information (e.g., a transaction record, attribute, or binary data changes) into the data state. In this process flow path, the routine then continues at step 1118 , where a test is performed to determine whether a consistent checkpoint has been reached. If not (an example would be a file write on a regular file system), the routine branches to step 1126 .
  • the relevant information e.g., a transaction record, attribute, or binary data changes
  • a further test is performed at step 1120 to determine whether the event processor needs to create a delta value from the accumulated changes since the last checkpoint in the data state. If not (e.g., because there is already a transaction record for the event), the routine continues at step 1122 to generate an event message, forward that message to the XDMP protocol driver (for delivery to the DMS core), and then increment the sent count.
  • a consistent checkpoint e.g., a file “flushed” or “closed” for a file system, or a transaction checkpoint of a database
  • step 1120 the routine continues at step 1124 .
  • the event processor makes a request to retrieve remote information that is necessary to generate the delta values, forwards the appropriate request message to the XDMP protocol driver (for delivery to the DMS core), marks the item as dirty, and increments the sent count.
  • processing continues at step 1126 from either of step 1122 or step 1124 .
  • step 1126 a test is made to determine the mode. If the mode is upload or resync, the routine branches to step 918 in FIG. 9 . This is step 1128 . If the mode is regular backup, the routine enters the regular backup state. This is step 1129 . If the mode is recovering, the routine enters a recovery mode. This is step 1130 .
  • FIG. 12 illustrates how the event processor handles network, system, application and/or database events.
  • the routine begins at step 1202 .
  • a test is made to determine whether the event in question is meaningful. If not, the routine branches to step 1208 . If the event is meaningful to the data source (e.g., a database checkpoint event), the routine continues at step 1206 .
  • the event processor generates an event message, forwards that message to the XDMP protocol driver and, if the event is associated with an item, the event processor increments the sent count. The event may be bundled with relevant data of the associated items.
  • step 1208 a test is made to determine the mode. If the mode is upload or resync, the branches to step 918 in FIG. 9 . This is step 1210 . If the mode is regular backup, the routine enters the regular backup state. This is step 1212 . If the mode is recovering, the routine enters a recovery mode. This is step 1214 .
  • FIG. 13 illustrates how the event processor handles given XDMP events and responses.
  • the routine begins at step 1302 .
  • a test is performed to determine the nature of the XDMP protocol event. If the event is a “connection failed,” the routine branches to step 1306 , which indicates the blackout state. If the event is “recover,” the routine branches to step 1308 , which indicates that the event processor should enter the recovering-frame state. If the event is a “service terminate,” the event processor exits the FSM, which is state 1312 . If the event is a “request failed,” the routine continues at step 1314 .
  • the event processor locates the item in the sorted source tree and marks the item dirty (if a failure is associated with the item).
  • the routine then continues in this process flow path with step 1318 , with the event processor making a request to retrieve information to enable it to perform a comparative resync.
  • the event processor also forwards the message to the protocol driver.
  • the event processor continues at step 1320 to locate the item on the sorted source tree and decrements the sent count.
  • the routine then continues at step 1322 , during which a test is performed to determine whether a successful XDMP result or XDMP response with data has been received.
  • step 1324 If a successful XDMP result has been received, the process continues at step 1324 by dropping the event. If, on the other hand, an XDMP response with data has been received, the process branches to step 1326 . At this step, the event processor compares the remote information with the local data and generates the delta values. A test is then performed at step 1328 to determine if a checkpoint has been reached. If not, the routine branches to step 1332 . If, however, a checkpoint has been reached, the process continues at step 1330 . At this step, the event processor generates an XDMP event message, forwards the message to the XDMP protocol driver, increments the sent count, and clears the dirty flag.
  • step 1332 which is reached from one of the steps 1318 , 1324 , 1328 or 1330 as illustrated, a test is made to determine the mode. If the mode is upload or resync, the routine branches to step 918 in FIG. 9 . This is step 1334 . If the mode is regular backup, the routine enters the regular backup state. This is step 1336 . If the mode is recovering, the routine enters a recovery mode. This is step 1338 .
  • the event processor enters into the initial upload state. During this state, the event processor gathers a list of data items of the data source to be protected and creates a data list, e.g., the sorted source tree. Then, the event processor moves the data (as an upload, preferably one data element at a time) to a DMS core to create initial baseline data.
  • the upload is a stream of granular application-aware data chunks that are attached to upload events. During this upload phase, the application does not have to be shutdown.
  • checkpoint granular data, metadata, and data events are continuously streamed into the DMS core, in real-time.
  • the update events for the data that are not already uploaded are dropped so that only the update events for data already uploaded are streamed to the DMS.
  • the DMS core receives the real time event journal stream that includes the baseline upload events and the change events. It processes these events and organizes the data to maintain their history in a persistent storage of the DMS. If DMS fails while processing an upload or an update data event, preferably a failure event is forwarded back to the host driver and entered into an event queue as a protocol specific event.
  • the event processor marks the target item associated with the failure “dirty” (or out-of-sync) and then performs data synchronization with the DMS on that target item.
  • DMS provides significant advantages over the prior art. Unlike a conventional data protection system the data protection service provided by DMS is automated, real-time, and continuous, and it exhibits no or substantially no downtime. This is because DMS is keeping track of the real-time data history, and because preferably the state of the most current data in a DMS region, cluster or node (as the case may be) must match the state of the data in the original host server at all times.
  • data recovery on a conventional data protection system means shutting down a host server, selecting a version of the data history, copying the data history back to the host server, and then turning on the host server. All of these steps are manually driven. After a period of time, the conventional data protection system then performs a backup on the changed data.
  • the otherwise separate processes are simply phases of the overall data protection cycle. This is highly advantageous, and it is enabled because DMS keeps a continuous data history. Stated another way, there is no gap in the data.
  • the data protection cycle described above preferably loops around indefinitely until, for example, a user terminates the service.
  • a given data protection phase (the state) changes as the state of the data and the environment change (the incident).
  • all of the phases (states) are interconnected to form a finite state machine that provides the data protection service.
  • the data protection service provided by the DMS has no effective downtime because the data upload, data resynchronization, data recovery and data backup are simply integrated phases of a data protection cycle. There is no application downtime.
  • the present invention has numerous advantages over the prior art such as tape backup, disk backup, volume replication, storage snapshots, application replication, remote replication, and manual recovery. Indeed, existing fragmented approaches are complex, resource inefficient, expensive to operate, and often unreliable. From an architectural standpoint, they are not well suited to scaling to support heterogeneous, enterprise-wide data management.
  • the present invention overcomes these and other problems of the prior art by providing real-time data management services. As has been described, the invention transparently and efficiently captures the real-time continuous history of all or substantially all transactions and data changes in the enterprise.
  • the solution operates over local and wide area IP networks to form a coherent data management, protection and recovery infrastructure. It eliminates data loss, reduces downtime, and ensures application consistent recovery to any point in time.
  • the present invention addresses enterprise data protection and data management problems by continuously protecting all data changes and transactions in real time across local and wide area networks.
  • the method and system of the invention take advantage of inexpensive, commodity processors to efficiently parallel process and route application-aware data changes between applications and low cost near storage.
  • the present invention also relates to apparatus for performing the operations herein.
  • the apparatus is implemented as a processor and associated program code that implements a finite state machine with a plurality of states and to effect transitions between the states.
  • this apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer.
  • Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
  • a computer readable storage medium such as, but is not limited to, any type of disk including optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
  • the method and system involves monitoring events (e.g., as a given application interfaces to a local data store in a first processing environment), and then transferring to a second data store (remote from the first processing environment) a continuous, application-aware data stream while maintaining execution of the given application in the first processing environment. This enables the transfer of a baseline version.
  • the application-aware data stream is being transferred (e.g., by uploading)
  • one or more application update events can be processed into the data stream.

Abstract

A data management system or “DMS” provides an automated, continuous, real-time data protection service to one or more data sources associated with a set of application host serves. To facilitate the service, a host driver embedded in an application server captures real-time data transactions. When a data protection command for a given data source is forwarded to a host driver, an event processor enters into an initial upload state. During this state, the event processor gathers a list of data items to be protected and creates a data list. Then, the event processor moves the data to a DMS core to create initial baseline data. The upload is a stream of application-aware data chunks that are attached to upload events. A resynchronization state is entered when there is a suspicion that the state of the data in the host is out-of-sync with the state of the most current data in the DMS.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation of U.S. patent application Ser. No. 10/862,971, filed Jun. 8, 2004, titled METHOD AND SYSTEM FOR NO DOWNTIME RESYNCHRONIZATION FOR REAL-TIME, CONTINUOUS DATA PROTECTION. U.S. patent application Ser. No. 10/862,971, U.S. Pat. No. 7,096,392, and U.S. Pat. No. 7,565,661 are incorporated herein by reference.
  • BACKGROUND OF THE INVENTION
  • 1. Technical Field
  • The present invention relates generally to enterprise data protection.
  • 2. Background of the Related Art
  • A critical information technology (IT) problem is how to cost-effectively deliver network wide data protection and rapid data recovery. In 2002, for example, companies spent an estimated $50 B worldwide managing data backup/restore and an estimated $30 B in system downtime costs. The “code red” virus alone cost an estimated $2.8 B in downtime, data loss, and recovery. The reason for these staggering costs is simple-traditional schedule based tape and in-storage data protection and recovery approaches can no longer keep pace with rapid data growth, geographically distributed operations, and the real time requirements of 24×7×265 enterprise data centers.
  • Traditionally, system managers have use tape backup devices to store system data on a periodic basis. For example, the backup device may acquire a “snapshot” of the contents of an entire hard disk at a particular time and then store this for later use, e.g., reintroduction onto the disk (or onto a new disk) should the computer fail. The problems with the snapshot approaches are well known and appreciated. First, critical data can change as the snapshot is taken, which results in incomplete updates (e.g., half a transaction) being captured so that, when reintroduced, the data is not fully consistent. Second, changes in data occurring after a snapshot is taken are always at risk. Third, as storage device size grows, the bandwidth required to repeatedly offload and store the complete snapshot can become impractical. Most importantly, storage based snapshot does not capture fine grain application data and, therefore, it cannot recover fine grain application data objects without reintroducing (i.e. recovering) the entire backup volume to a new application computer server to extract the fine grain data object.
  • Data recovery on a conventional data protection system is a tedious and time consuming operation. It involves first shutting down a host server, and then selecting a version of the data history. That selected version of the data history must then be copied back to the host server, and then the host server must be re-started. All of these steps are manually driven. After a period of time, the conventional data protection system must then perform a backup on the changed data. As these separate and distinct processes and systems are carried out, there are significant periods of application downtime. Stated another way, with the current state of the art, the processes of initial data upload, scheduled or continuous backup, data resynchronization, and data recovery, are separate and distinct, include many manual steps, and involve different and uncoordinated systems, processes and operations.
  • BRIEF SUMMARY OF THE INVENTION
  • A data management system or “DMS” provides an automated, continuous, real-time, substantially no downtime data protection service to one or more data sources associated with a set of application host servers. The data management system typically comprises one or more regions, with each region having one or more clusters. A given cluster has one or more nodes that share storage. To facilitate the data protection service, a host driver embedded in an application server captures real-time data transactions, preferably in the form of an event journal that is provided to a DMS cluster. The driver functions to translate traditional file/database/block I/O and the like into a continuous, application-aware, output data stream. According to the invention, the host driver includes an event processor that provides the data protection service. In particular, the data protection is provided to a given data source in the host server by taking advantage of the continuous, real-time data that the host driver is capturing and providing to other DMS components.
  • When a given data protection command for a given data source is forwarded to a host driver, the event processor enters into an initial upload state. During this state, the event processor gathers a list of data items of the data source to be protected and creates a data list. The data list is sometimes referred to as a sorted source tree. Then, the event processor moves the data (as an upload, preferably one data element at a time) to a DMS core to create initial baseline data. In an illustrative embodiment, the upload is a stream of granular application-aware data chunks that are attached to upload events. During this upload phase, the application does not have to be shutdown. Simultaneously, while the baseline is uploading and as the application updates the data on the host, checkpoint granular data, metadata, and data events are continuously streamed into the DMS core, in real-time. Preferably, the update events for the data that are not already uploaded are dropped so that only the update events for data already uploaded are streamed to the DMS. The DMS core receives the real time event journal stream that includes the baseline upload events and the change events. It processes these events and organizes the data to maintain their history in a persistent storage of the DMS. If DMS fails while processing an upload or an update data event, preferably a failure event is forwarded back to the host driver and entered into an event queue as a protocol specific event. The event processor then marks the target item associated with the failure “dirty” (or out-of-sync) and then performs data synchronization with the DMS on that target item. This operation is also referred to as an “upward resynchronization.”
  • In particular, the resynchronization state is entered when there is a suspicion that the state of the data in the host is out-of-sync with the state of the most current data in the DMS, and it is also known that the data in the host server is not corrupted. Thus, for example, this state is entered after a blackout when data in the host is changed; or, the state is entered after a host server is rebooted and the state of the most current data at the DMS is unknown. During this state, it is assumed that the host server data is good and is more current then the latest data in the DMS. If the event processor is keeping track of the updated (dirty) data at the host server during a blackout, preferably it only compares that data with the corresponding copy in the DMS; it then sends to the DMS the deltas (e.g., as checkpoint delta events). If, during the case of a host server reboot, the “dirty” data is not known, preferably the event processor goes over the entire data source, re-creates a sorted source tree, and then compares each individual data item, sending delta events to the DMS as necessary. The application does not have to be shutdown during resynchronization. Also, preferably upward-resynchronization occurs simultaneously while the application is accessing and updating the data in the primary storage. The update events for the data objects that are dirty and are not yet re-synchronized preferably are dropped, while other events are processed. The event processor tracks both the resynchronization and update activities accordingly and outputs to the DMS core a real time event journal stream.
  • The DMS core receives the real time event journal stream, which includes requests for data checkpoints, resynchronization delta events, and the change events. The DMS core processes these events and organizes the data in the DMS persistent storage to maintain their history.
  • The foregoing has outlined some of the more pertinent features of the invention. These features should be construed to be merely illustrative. Many other beneficial results can be attained by applying the disclosed invention in a different manner or by modifying the invention as will be described
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • For a more complete understanding of the present invention and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
  • FIG. 1 is an illustrative enterprise network in which the present invention may be deployed;
  • FIG. 2 is an illustration of a general data management system (DMS) of the present invention;
  • FIG. 3 is an illustration of a representative DMS network according to one embodiment of the present invention;
  • FIG. 4 illustrates how a data management system may be used to provide one or more data services according to the present invention;
  • FIG. 5 is a representative host driver according to a preferred embodiment of the present invention having an I/O filter and one or more data agents;
  • FIG. 6 illustrates the host driver architecture in a more general fashion; and
  • FIG. 7 illustrates a preferred implementation of an event processor finite state machine (FSM) that provides automated, real-time, continuous, zero downtime data protection service;
  • FIG. 8 is a simplified diagram illustrating how the event processor operates in the initial upload and resynchronization states;
  • FIG. 9 is a flowchart illustrating the steps performed by the event processor during the initial upload and resynchronization states;
  • FIG. 10 is a flowchart illustrating how the event processor handles internal events, which is a step of the flowchart in FIG. 9;
  • FIG. 11 is a flowchart illustrating how the event processor handles I/O events, which is a step of the flowchart in FIG. 9;
  • FIG. 12 is a flowchart illustrating how the event processor handles network, system, application and database events, which is a step of the flowchart in FIG. 9; and
  • FIG. 13 is a flowchart illustrating how the event processor handles protocol transport events, which is a step of the flowchart in FIG. 9.
  • DETAILED DESCRIPTION OF AN ILLUSTRATIVE EMBODIMENT
  • FIG. 1 illustrates a representative enterprise 100 in which the present invention may be implemented. This architecture is meant to be taken by way of illustration and not to limit the applicability of the present invention. In this illustrative example, the enterprise 100 comprises a primary data tier 102 and a secondary data tier 104 distributed over IP-based wide area networks 106 and 108. Wide area network 106 interconnects two primary data centers 110 and 112, and wide area network 108 interconnects a regional or satellite office 114 to the rest of the enterprise. The primary data tier 102 comprises application servers 116 running various applications such as databases, email servers, file servers, and the like, together with associated primary storage 118 (e.g., direct attached storage (DAS), network attached storage (NAS), storage area network (SAN)). The secondary data tier 104 typically comprises one or more data management server nodes, and secondary storage 120, which may be DAS, NAS, and SAN. The secondary storage may be serial ATA interconnection through SCSI, Fibre Channel (FC or the like), or iSCSI. The data management server nodes create a logical layer that offers object virtualization and protected data storage. The secondary data tier is interconnected to the primary data tier, preferably through one or more host drivers (as described below) to provide real-time data services. Preferably, and as described below, the real-time data services are provided through a given I/O protocol for data transfer. Data management policies 126 are implemented across the secondary storage in a well-known manner. A similar architecture is provided in data center 112. In this example, the regional office 114 does not have its own secondary storage, but relies instead on the facilities in the primary data centers.
  • As illustrated, a “host driver” 128 is associated with one or more of the application(s) running in the application servers 116 to transparently and efficiently capture the real-time, continuous history of all (or substantially all) transactions and changes to data associated with such application(s) across the enterprise network. As will be described below, the present invention facilitates real-time, so-called “application aware” protection, with substantially no data loss, to provide continuous data protection and other data services including, without limitation, data distribution, data replication, data copy, data access, and the like. In operation, a given host driver 128 intercepts data events between an application and its primary data storage, and it may also receive data and application events directly from the application and database. In a representative embodiment, the host driver 128 is embedded in the host application server 116 where the application resides; alternatively, the host driver is embedded in the network on the application data path. By intercepting data through the application, fine grain (but opaque) data is captured to facilitate the data service(s). To this end, and as also illustrated in FIG. 1, each of the primary data centers includes a set of one or more data management servers 130 a-n that cooperate with the host drivers 128 to facilitate the data services. In this illustrative example, the data center 110 supports a first core region 130, and the data center 112 supports a second core region 132. A given data management server 130 is implemented using commodity hardware and software (e.g., an Intel processor-based blade server running Linux operating system, or the like) and having associated disk storage and memory. Generalizing, the host drivers 128 and data management servers 130 comprise a data management system (DMS) that provides potentially global data services across the enterprise.
  • FIG. 2 illustrates a preferred hierarchical structure of a data management system 200. As illustrated, the data management system 200 comprises one or more regions 202 a-n, with each region 202 comprising one or more clusters 204 a-n. A given cluster 204 includes one or more nodes 206 a-n and a shared storage 208 shared by the nodes 206 within the cluster 204. A given node 206 is a data management server as described above with respect to FIG. 1. Within a DMS cluster 204, preferably all the nodes 206 perform parallel access to the data in the shared storage 208. Preferably, the nodes 206 are hot swappable to enable new nodes to be added and existing nodes to be removed without causing cluster downtime. Preferably, a cluster is a tightly-coupled, share everything grouping of nodes. At a higher level, the DMS is a loosely-coupled share nothing grouping of DMS clusters. Preferably, all DMS clusters have shared knowledge of the entire network, and all clusters preferably share partial or summary information about the data that they possess. Network connections (e.g., sessions) to one DMS node in a DMS cluster may be re-directed to another DMS node in another cluster when data is not present in the first DMS cluster but may be present in the second DMS cluster. Also, new DMS clusters may be added to the DMS cloud without interfering with the operation of the existing DMS clusters. When a DMS cluster fails, its data may be accessed in another cluster transparently, and its data service responsibility may be passed on to another DMS cluster.
  • FIG. 3 illustrates the data management system (DMS) as a network (in effect, a wide area network “cloud”) of peer-to-peer DMS service nodes. As discussed above with respect to FIG. 2, the DMS cloud 300 typically comprises one or more DMS regions, with each region comprising one or more DMS “clusters.” In the illustrative embodiment of FIG. 3, typically there are two different types of DMS regions, in this example an “edge” region 306 and a “core” region 308. This nomenclature is not to be taken to limit the invention, of course. As illustrated in FIG. 1, an edge region 306 typically is a smaller office or data center where the amount of data hosted is limited and/or where a single node DMS cluster is sufficient to provide necessary data services. Typically, core regions 308 are medium or large size data centers where one or more multi-node clusters are required or desired to provide the necessary data services. The DMS preferably also includes one or more management gateways 310 for controlling the system. As seen in FIG. 3, conceptually the DMS can be visualized as a set of data sources 312. A data source is a representation of a related group of fine grain data. For example, a data source may be a directory of files and subdirectory, or it may be a database, or a combination of both. A data source 312 inside a DMS cluster captures a range of history and continuous changes of, for example, an external data source in a host server. A data source may reside in one cluster, and it may replicate to other clusters or regions based on subscription rules. If a data source exists in the storage of a DMS cluster, preferably it can be accessed through any one of the DMS nodes in that cluster. If a data source does not exist in a DMS cluster, then the requesting session may be redirected to another DMS cluster that has the data; alternatively, the current DMS cluster may perform an on-demand replication to bring in the data.
  • Referring now to FIG. 4, an illustrative DMS network 400 provides a wide range of data services to data sources associated with a set of application host servers. As noted above, and as will be described in more detail below, the DMS host driver 402 embedded in an application server 404 connects the application and its data to the DMS cluster. In this manner, the DMS host drivers can be considered as an extension of the DMS cloud reaching to the data of the application servers. As illustrated in FIG. 4, the DMS network offers a wide range of data services that include, by way of example only: data protection (and recovery), disaster recovery (data distribution and data replication), data copy, and data query and access. The data services and, in particular, data protection and disaster recovery, preferably are stream based data services where meaningful application and data events are forwarded from one end point to another end point continuously as a stream. More generally, a stream-based data service is a service that involves two end points sending a stream of real-time application and data events. For data protection, this means streaming data from a data source (e.g., an external host server) into a DMS cluster, where the data source and its entire history can be captured and protected. Data distribution refers to streaming a data source from one DMS cluster into another DMS cluster, while data replication refers to streaming a data source from a DMS cluster to another external host server. Preferably, both data distribution and data replication are real-time continuous movement of a data source from one location to another to prepare for disaster recovery. Data replication differs from data distribution in that, in the latter case, the data source is replicated within the DMS network where the history of the data source is maintained. Data replication typically is host based replication, where the continuous events and changes are applied to the host data such that the data is overwritten by the latest events; therefore, the history is lost. Data copy is a data access service where a consistent data source (or part of a data source) at any point-in-time can be constructed and retrieved. This data service allows data of the most Page 11 current point-in-time, or a specific point-in-time in the past, to be retrieved when the data is in a consistent state. These data services are merely representative.
  • The DMS provides these and other data services in real-time with data and application awareness to ensure continuous application data consistency and to allow for fine grain data access and recovery. To offer such application and data aware services, the DMS has the capability to capture fine grain and consistent data. As will be illustrated and described, a given DMS host driver uses an I/O filter to intercept data events between an application and its primary data storage. The host driver also receives data and application events directly from the application and database.
  • Referring now to FIG. 5, an illustrative embodiment is shown of a DMS host driver 500. As noted above, the host driver 500 may be embedded in the host server where the application resides, or in the network on the application data path. By capturing data through the application, fine grain data is captured along with application events, thereby enabling the DMS cluster to provide application aware data services in a manner that has not been possible in the prior art.
  • In this embodiment, a host server embedded host driver is used for illustrating the driver behavior. In particular, the host driver 500 in a host server connects to one of the DMS nodes in a DMS cluster (in a DMS region) to perform or facilitate a data service. The host driver preferably includes two logical subsystems, namely, an I/O filter 502, and at least one data agent 504. An illustrative data agent 504 preferably includes one or more modules, namely, an application module 506, a database module 508, an I/O module 510, and an event processor or event processing engine 512. The application module 506 is configured with an application 514, one or more network devices and/or the host system itself to receive application level events 516. These events include, without limitation, entry or deletion of some critical data, installation or upgrade of application software or the operating system, a system alert, detecting of a virus, an administrator generated checkpoint, and so on. One or more application events are queued for processing into an event queue 518 inside or otherwise associated with the data agent. The event processor 512 over time may instruct the application module 506 to re-configure with its event source to capture different application level events.
  • If an application saves its data into a database, then a database module 508 is available for use. The database module 508 preferably registers with a database 520 to obtain notifications from a database. The module 508 also may integrate with the database 520 through one or more database triggers, or it may also instruct the database 520 to generate a checkpoint 522. The database module 508 also may lock the database 520 (or issue a specific API) to force a database manager (not shown) to flush out its data from memory to disk, thereby generating a consistent disk image (a binary table checkpoint). This process of locking a database is also known as “quiescing” the database. An alternative to quiescing a database is to set the database into a warm backup mode. After a consistent image is generated, the database module 508 then lifts a lock to release the database from its quiescent state. The database events preferably are also queued for processing into the event queue 518. Generalizing, database events include, without limitation, a database checkpoint, specific database requests (such as schema changes or other requests), access failure, and so on. As with application module, the event processor 512 may be used to re-configure the events that will be captured by the database module.
  • The I/O module 510 instructs the I/O filter 502 to capture a set of one or more I/O events that are of interest to the data agent. For example, a given I/O module 510 may control the filter to capture I/O events synchronously, or the module 510 may control the filter to only capture several successful post I/O events. When the I/O module 510 receives I/O events 524, it forwards the I/O events to the event queue 518 for processing. The event processor 512 may also be used to re-configure the I/O module 510 and, thus, the I/O filter 502.
  • The event processor 512 functions to generate an application aware, real-time event journal (in effect, a continuous stream) for use by one or more DMS nodes to provide one or more data services. Application aware event journaling is a technique to create real-time data capture so that, among other things, consistent data checkpoints of an application can be identified and metadata can be extracted. For example, application awareness is the ability to distinguish a file from a directory, a journal file from a control or binary raw data file, or to know how a file or a directory object is modified by a given application. Thus, when protecting a general purpose file server, an application aware solution is capable of distinguishing a file from a directory, and of identifying a consistent file checkpoint (e.g., zero-buffered write, flush or close events), and of interpreting and capturing file system object attributes such as an access control list. By interpreting file system attributes, an application aware data protection may ignore activities applied to a temporary file. Another example of application awareness is the ability to identify a group of related files, directories or raw volumes that belong to a given application. Thus, when protecting a database with an application aware solution, the solution is capable of identifying the group of volumes or directories and files that make up a given database, of extracting the name of the database, and of distinguishing journal files from binary table files and control files. It also knows, for example, that the state of the database journal may be more current than the state of the binary tables of the database in primary storage during runtime. These are just representative examples, of course. In general, application aware event journaling tracks granular application consistent checkpoints; thus, when used in conjunction with data protection, the event journal is useful in reconstructing an application data state to a consistent point-in-time in the past, and it also capable of retrieving a granular object in the past without having to recover an entire data volume. Further details of the event journaling technique are described in U.S. Pat. No. 7,565,661, the subject matter of which is incorporated herein by reference.
  • Referring now to FIG. 6, the host driver architecture is shown in a more generalized fashion. In this drawing, the host driver 600 comprises an I/O filter 602, a control agent 604, and one or more data agents 606. The control agent 604 receives commands from a DMS core 608, which may include a host object 610 and one or more data source objects 612 a-n, and it controls the behavior of the one or more data agents 606. Preferably, each data agent 606 manages one data source for one data service. For example, data agent 1 may be protecting directory “dir1,” data agent 2 may be copying file “foo.html” into the host, and data agent 3 may be protecting a database on the host. These are merely representative data service examples, of course. Each data agent typically will have the modules and architecture described above and illustrative in FIG. 5. Given data agents, of course, may share one or more modules depending on the actual implementation. In operation, the data agents register as needed with the I/O filter 602, the database 614 and/or the application 616 to receive (as the case may be): I/O events from the I/O filter, database events from the database, and/or application events from the application, the operating system and other (e.g., network) devices. Additional internal events or other protocol-specific information may also be inserted into the event queue 618 and dispatched to a given data agent for processing. The output of the event processor in each data agent comprises a part of the event journal.
  • As also indicated in FIG. 6, preferably the host driver communicates with the DMS core using an extensible data management protocol (XDMP) 618 that is marshaled and un-marshaled through a device driver kit (DDK). More generally, the host driver communicates with the DMS core using any convenient message transport protocol. As will be described, given XDMP events may also be inserted into the event queue and processed by the event processor.
  • FIG. 7 illustrates a preferred embodiment of the invention, wherein a given event processor in a given host driver provides a data protection service by implementing a finite state machine 700. Details of the finite state machine are described in U.S. Pat. No. 7,096,392, the subject matter of which is incorporated herein by reference. The behavior of the event processor depends on what state it is at, and this behavior preferably is described in an event processor data protection state table. The “state” of the event processor preferably is driven by a given “incident” (or event) as described in an event processor data protection incident table. Generally, when a given incident occurs, the state of the event processor may change. The change from one state to another is sometimes referred to as a transition. One of ordinary skill in the art will appreciate that FIG. 7 illustrates a data protection state transition diagram of the given event processor. In particular, it shows an illustrative data protection cycle as the FSM 700. At each state, as represented by an oval, an incident, as represented by an arrow, may or may not drive the event processor into another state. The tail of an incident arrow connects to a prior state (i.e., branches out of a prior state), and the head of an incident arrow connects to a next state. If an incident listed in the incident table does not branch out from a state, then it is invalid for (i.e., it cannot occur in) that state. For example, it is not possible for a “Done-Upload” incident to occur in the “UBlackout” state”.
  • With reference now to FIGS. 6-7, the data protection service is initiated on a data source in a host server as follows. As illustrated in FIG. 6, it is assumed that a control agent 604 has created a data agent 606 having an event processor that outputs the event journal data stream, as has been described. As this point, the event processor in the data agent 606 is transitioned to a first state, which is called “Initial-Upload” for illustrative purposes. During the “Initial-Upload” state 702, the event processor self-generates upload events, and it also receives other raw events from its associated event queue. The event processor simultaneously uploads the initial baseline data source, and it backs up the on-going changes from the application. Preferably, only change events for data already uploaded are sent to the DMS. The event processor also manages data that is dirty or out-of-sync, as indicated in a given data structure. In particular, a representative data structure is a “sorted” source tree, which is a list (sorted using an appropriate sort technique) that includes, for example, an entry per data item. The list preferably also includes an indicator or flag specifying whether a given data item is uploaded or not, as well as whether the item is in- (or out-of) sync with the data in the DMS. Additional information may be included in the sorted source tree, as will be described in more detail below. As will be seen, the event processor performs resynchronization on the items that are out-of-sync. As indicated in FIG. 7, a “Reboot” incident that occurs when the state machine is in state 702 does not change the state of the event processor; rather, the event processor simply continues processing from where it left off. In contrast, a “Blackout” incident transitions the event processor to a state 704 called (for illustration only) “UBlackout.” This is a blackout state that occurs as the event processor uploads the initial baseline data source, or as the event processor is backing up the on-going changes from the application. The state 704 changes back to the “Initial-Upload” state 702 when a so-called “Reconnected” incident occurs.
  • When upload is completed and all the data is in synchronized with the data in the DMS, the event processor generates a “Done-upload” incident, which causes the event processor to move to a new state 706. This new state is called “Regular-backup” for illustrative purposes. During the regular backup state 706, the event processor processes all the raw events from the event queue, and it generates a meaningful checkpoint real time event journal stream to the DMS for maintaining the data history. This operation has been described above. As illustrated in the state transition diagram, the event processor exits its regular backup state 706 under one of three (3) conditions: a blackout incident, a reboot incident, or a begin recovery incident. Thus, if during regular backup a “Blackout” incident occurs, the state of the event processor transitions from state 706 to a new state 708, which is called “PBlackout” for illustration purposes. This is a blackout state that occurs during regular backup. If, however, during regular backup, a “Reboot” incident occurs, the event processor transitions to a different state 710, which is called “Upward-Resync” for illustrative purposes. The upward resynchronization state 710 is also reached from state 708 upon a Reconnected incident during the latter state. Upward resynchronization is a state that is entered when there is a suspicion that the state of the data in the host is out-of-sync with the state of the most current data in the DMS. For this transition, it should also be known that the data in the host server is not corrupted. Thus, a transition from state 706 to state 710 occurs because, after “Reboot,” the event processor does not know if the data state of the host is identical with the state of the data in DMS. During the “Upward-Resync” 710 state, whether the state is reached from state 706 or state 708, the event processor synchronizes the state of the host data to the state of the DMS data (in other words, to bring the DMS data to the same state as the host data). During this time, update events (to the already synchronized data items) are continuously forwarded to the DMS as a real time event stream. When the resynchronization is completed, the data state at both the host and the DMS are identical, and thus a “Done-Resync” incident is generated. This incident transitions the event processor back to the “Regular-backup” state 706. Alternatively, with the event processor in the Upward-Resync state 710, a “Begin-Recovery” incident transitions the event processor to yet another new state 712, which is referred to “Recovering-frame” for illustration purposes.
  • In particular, once a baseline data is uploaded to the DMS, data history is streamed into the DMS continuously, preferably as a real time event journal. An authorized user can invoke a recovery at any of the states when the host server is connected to the DMS core, namely, during the “Regular-backup” and “Upward-resync” states 706 and 710. If the authorized user does so, a “Begin-recovery” incident occurs, which drives the event processor state to the “Recovering-frame” state 712.
  • During the “Recovering-frame” state 712, the event processor reconstructs the sorted source tree, which (as noted above) contains structural information of the data to be recovered. During state 712, and depending on the underlying data, the application may or may not be able to access the data. Once the data structure is recovered, a “Done-Recovering-Frame” incident is generated, which then transitions the event processor to a new state 714, referred to as “Recovering” for illustration purposes. Before the data structure is recovered, incidents such as “Blackout,” “Reconnected,” and “Reboot” do not change the state of the event processor. During the “Recovering” state 714, the event processor recovers the actual data from the DMS, preferably a data point at a time. It also recovers data as an application access request arrives to enable the application to continuing running During state 714, application update events are streamed to the DMS so that history is continued to be maintained, even as the event processor is recovering the data in the host. When data recovery is completed, once again the state of the data (at both ends of the stream) is synchronized, and the corruption at the host is fixed. Thus, a so-called “Done-recovered” incident is generated, and the event processor transitions back to the “Regular-backup” state 706.
  • During the “UBlackout” or the “PBlackout” states (704 or 708), the event processor marks the updated data item as dirty or out-of-sync in its sorted source tree.
  • Processing continues in a cycle (theoretically without end), with the event processor transitioning from state-to-state as given incidents (as described above) occur. The above described incidents, of course, are merely representative.
  • Although not indicated in the state transition diagram (FIG. 7), a “termination” incident may be introduced to terminate the data protection service at a given state. In particular, a termination incident may apply to a given state, or more generally, to any given state, in which latter case the event processor is transitioned (from its then-current state) to a terminated state. This releases the data agent and its event processor from further provision of the data protection service.
  • Further Details of the Initial Upload and Upward-Resync States
  • FIG. 8 illustrates the event processor behavior during respective upload and upward-resynchronization states (702 and 710, respectively, in FIG. 7) as part of the data protection service. As described above, the upload state creates baseline data. Preferably, the upload is a stream of granular application-aware data chunks that are attached to upload events. During this upload phase, the application does not have to be shutdown, which is highly advantageous. Simultaneously, while the baseline is uploading and as the application updates the data on the host, checkpoint granular data, metadata, and data events are continuously streamed into the DMS core, in real-time. Moreover, and as will be described below, the update events for the data that are not already uploaded preferably are dropped so that only the update events for data already uploaded are streamed to the DMS.
  • As illustrated, the event processor 800 includes the event processor logic 802 that has been previously described. Processor 800 also has associated therewith a given data structure 804, preferably a sorted source tree. A sorted source tree is a list, which may be sorted using any convenient sorting technique, and it is used to manage the handling of data during the upload and/or upward-resync states. In an illustrated embodiment, the sorted source tree is a directory sort list, with directories and their associated files sorted in a depth-first manner as illustrated schematically at reference numeral 805. Preferably, the list includes one or more one attributes per data item. A given attribute may have an associated flag, which indicates a setting for the attribute. Thus, for example, representative attributes include: data path, data state, dirty, sent count, to be uploaded, to be recovered, and data bitmap. The “data path” attribute typically identifies the path name (e.g., c:\mydirectory\foo.txt) of a file or directory where the data item originated, the “data state” attribute identifies a state of the data file (e.g., closed, opened for read, opened for write, the accumulated changes since a last checkpoint, or the like), and the “dirty” attribute identifies whether the item is “out-of-sync” with the data in the DMS (which means that the file or directory in the host is more up-to-date than the corresponding file or directory in DMS). In the latter case, upward resynchronization with respect to DMS is required. For example, a file can be “dirty” if it is updated during a blackout, or if the delta events for the file fail to be applied at the DMS core. When a host server is rebooted, all items are assumed to be dirty. The “to be uploaded” attribute means that the item is not yet uploaded but needs to be, the “to be recovered” attribute means that the item, although previously, uploaded, must be recovered, the “sent count” attribute refers to a number of message(s) that are forwarded to the DMS host during the upload and/or upward resynchronization, and the “data bitmap” attribute is used for virtual recovery of a large file. In particular, virtual recovery may involve the following process. A large file is divided into blocks, and the bitmap is used to indicate if a block is recovered or not. If a block has a value 0, it is not recovered; if the block has a value 1, it is recovered. Preferably, the system recovers a large file in sequential block order, although this is not a requirement. In the event an application request arrives for a data block that is not yet recovered, preferably the system moves in the block from DMS immediately so that the application does not have to wait for it.
  • Raw events are available on the event queue 806, as described above. A set of illustrative events are shown in the drawing and they include, in this example: Open (object ID), Write (object ID, data range), Write (object ID, data range), System upgrade (timestamp), Write (object ID, data range), Trigger (ID, data, timestamp), Network events, and so on. Of course, this list is merely for illustration purposes.
  • In another illustrated embodiment, the protected data source may be a database, in which case the sorted source tree may be a list of files or volumes the database uses. In this embodiment, the sorting order may be in ascending order of the database transaction log, the binary table files or volumes, and the configuration files or volumes. If a volume-based database is to be protected, each volume can be treated like a file.
  • As will be described, a cursor 808 is set at the beginning of the sorted source tree 804 and is incremented. Typically, events that occur “above” the cursor are processed immediately by the event processor logic 802 and sent to the DMS node. Events that occur at or below the cursor typically may be subject to further processing, as will be described. Referring now to FIGS. 9-13, the operation of the event processor (during the initial upload and upward-resynchronization states) is described for an illustrative embodiment in more detail. These process flows are not meant to be taken by way of limitation.
  • As illustrated in FIG. 9 (and with cross-reference to the FSM of FIG. 7), in an illustrated embodiment there are three (3) possible initial entry points (corresponding to the incidents described above) with respect to the upload and upward-resync states: begin data protection, step 902, rebooted, step 904, and reconnected 906. Step 902 is entered when the finite state machine receives an incident that initiates the data protection cycle. At step 908, the mode is set to upload, which indicates the upload state has been entered. If the process is entered at step 904, the mode is set at step 910 to resync. If the process is entered at step 906, the mode is set at step 912 to prior-mode, which is a value that can represent either the upload or resync state. Thus, the “mode” is synonymous with the “state” as that term has been described above with respect to the finite state machine. In the upload process path, the process flow continues at step 914, where the event processor creates the sorted source tree and sets the cursor to the beginning of that tree. At step 914, the event processor also sets the “to be uploaded” flag on all data items. The process then continues at step 916, which is also reached through step 915 in the resync process path. In particular, at step 915, the event processor creates the sorted source tree, sets the cursor to point to the beginning of the tree, and sets the “dirty” flag on all data items. Step 916 is also reached from step 912, as indicated. At step 916, the event processor configures the I/O filter, the application module, and/or the database module to begin filtering events, as has been described above. The process flow then continues at step 918, during which the event processor self posts an internal event if the associated event queue is empty. At step 920, the event processor removes an event from the event queue. A determination is then made at step 922 to test whether the event is an internal event, an I/O event, an NSAD (network, system, application or database) event, or an XDMP event. FIG. 10 illustrates the processing if the event is an internal event. This is step 1000. FIG. 11 illustrates the processing if the event is an input/output event. This is step 1100. FIG. 12 illustrates the processing if the event is a network, system, application or database event. This is step 1200. Finally, FIG. 13 illustrates the processing if the event is an XDMP event. This is step 1300. After the event is processed, the routine returns to step 918, and the iteration continues.
  • FIG. 10 illustrates the processing for an internal event. The routine begins at step 1002. At step 1004, the event processor locates the sorted source tree item that is at the cursor. A test is then run at step 1006 to determine whether the “to be uploaded” flag is set. If yes, the routine branches to step 1008, where the event processor obtains the necessary data of the item on the sorted source tree at the cursor position. Continuing down this processing path, at step 1010, the event processor generates a message, associates (e.g., bundles) the data with the message, forwards that message (which now includes the data) to the XDMP protocol driver (for delivery to the DMS core), and increments the sent count. At step 1012, the event processor clears the “to be uploaded” flag on the sorted source tree for this particular entry, after which the event processor continues at step 1018 by moving the cursor to the next item in the sorted source tree. Alternatively, when the result of the test at step 1006 indicates that the “to be uploaded” flag is not set, the routine branches to step 1014 to determine whether the item is dirty. If not, the routine branches to step 1018, as illustrated. If the result of the test at step 1014 indicates that the item is dirty, the routine branches to step 1016. At this step, the event processor makes a request to a DMS core to retrieve remote information to enable it to perform a comparative resynchronization, increments the sent count, and forwards the message to the XDMP protocol driver (for delivery to the DMS core). Control then continues at step 1018, as has been described. After step 1018, a test is performed at step 1020 to determine whether the sorted source tree has been completely parsed. If yes, the routine branches to step 1022 to begin the regular backup state. If, however, the result of the test at step 1020 indicates that the sorted source tree is not yet parsed, the routine returns to step 918 in FIG. 9.
  • FIG. 11 illustrates the processing for an input/output (I/O) event. The routine begins at step 1102 to test whether the event in question affects the sorted source tree. If so, the routine branches to step 1104, during which the event processor adjusts the sorted source tree and the cursor accordingly. Control then returns to step 1106, which step is also reached when the outcome of the test at step 1102 is negative. At step 1106, the event processor locates the target object in the sorted source tree. At step 1108, a test is performed to determine whether the target object is above the cursor. If not, the routine continues at step 1110 to capture the relevant information of the event into a data state of the object item in the sorted source tree. Thus, e.g., if the protected data source is a file system the relevant information might be a “file open.” At step 1110, the event processor also drops the event. The process flow then continues at step 1126. Alternatively, in the event the result of the test at step 1108 indicates that the target object is above the cursor position on the sorted source tree, the process flow branches to step 1112. At this step, a test is performed to determine whether the item is dirty. If so, the event processor performs step 1114, which means the resynchronization is in progress. Thus, the event processor enters the event the relevant information of the event into a data state of the object item in the sorted source tree, drops the event, and branches to step 1126. Thus, in a representative example where changes since a last checkpoint are being accumulated, the relevant information might be the changed data. If, however, the outcome of the test at step 1112 indicates that the item is not dirty, the routine continues with step 1116 to process the event and enter the relevant information (e.g., a transaction record, attribute, or binary data changes) into the data state. In this process flow path, the routine then continues at step 1118, where a test is performed to determine whether a consistent checkpoint has been reached. If not (an example would be a file write on a regular file system), the routine branches to step 1126. If, however, the result of the test at step 1118 indicates a consistent checkpoint (e.g., a file “flushed” or “closed” for a file system, or a transaction checkpoint of a database), a further test is performed at step 1120 to determine whether the event processor needs to create a delta value from the accumulated changes since the last checkpoint in the data state. If not (e.g., because there is already a transaction record for the event), the routine continues at step 1122 to generate an event message, forward that message to the XDMP protocol driver (for delivery to the DMS core), and then increment the sent count. If, however, the outcome of the test at step 1120 indicates that the event processor needs to create a delta value (e.g., to generate deltas from the accumulated file changes upon a file “flushed” event), the routine continues at step 1124. During this step, the event processor makes a request to retrieve remote information that is necessary to generate the delta values, forwards the appropriate request message to the XDMP protocol driver (for delivery to the DMS core), marks the item as dirty, and increments the sent count. Processing continues at step 1126 from either of step 1122 or step 1124. At step 1126, a test is made to determine the mode. If the mode is upload or resync, the routine branches to step 918 in FIG. 9. This is step 1128. If the mode is regular backup, the routine enters the regular backup state. This is step 1129. If the mode is recovering, the routine enters a recovery mode. This is step 1130.
  • FIG. 12 illustrates how the event processor handles network, system, application and/or database events. The routine begins at step 1202. At step 1204, a test is made to determine whether the event in question is meaningful. If not, the routine branches to step 1208. If the event is meaningful to the data source (e.g., a database checkpoint event), the routine continues at step 1206. At this step, the event processor generates an event message, forwards that message to the XDMP protocol driver and, if the event is associated with an item, the event processor increments the sent count. The event may be bundled with relevant data of the associated items. For example, if the event is a database checkpoint, deltas from the binary tables may be generated and associated (e.g., bundled) with the XDMP message. Processing then continues at step 1208. At step 1208, a test is made to determine the mode. If the mode is upload or resync, the branches to step 918 in FIG. 9. This is step 1210. If the mode is regular backup, the routine enters the regular backup state. This is step 1212. If the mode is recovering, the routine enters a recovery mode. This is step 1214.
  • FIG. 13 illustrates how the event processor handles given XDMP events and responses. As noted above, any convenient transport protocol may be used between the DMS host driver and DMS core. In this example, the routine begins at step 1302. At step 1304, a test is performed to determine the nature of the XDMP protocol event. If the event is a “connection failed,” the routine branches to step 1306, which indicates the blackout state. If the event is “recover,” the routine branches to step 1308, which indicates that the event processor should enter the recovering-frame state. If the event is a “service terminate,” the event processor exits the FSM, which is state 1312. If the event is a “request failed,” the routine continues at step 1314. At this step, the event processor locates the item in the sorted source tree and marks the item dirty (if a failure is associated with the item). The routine then continues in this process flow path with step 1318, with the event processor making a request to retrieve information to enable it to perform a comparative resync. During step 1318, the event processor also forwards the message to the protocol driver. Finally, if the event is a “request succeeded,” the event processor continues at step 1320 to locate the item on the sorted source tree and decrements the sent count. In this process path, the routine then continues at step 1322, during which a test is performed to determine whether a successful XDMP result or XDMP response with data has been received. If a successful XDMP result has been received, the process continues at step 1324 by dropping the event. If, on the other hand, an XDMP response with data has been received, the process branches to step 1326. At this step, the event processor compares the remote information with the local data and generates the delta values. A test is then performed at step 1328 to determine if a checkpoint has been reached. If not, the routine branches to step 1332. If, however, a checkpoint has been reached, the process continues at step 1330. At this step, the event processor generates an XDMP event message, forwards the message to the XDMP protocol driver, increments the sent count, and clears the dirty flag. At step 1332, which is reached from one of the steps 1318, 1324, 1328 or 1330 as illustrated, a test is made to determine the mode. If the mode is upload or resync, the routine branches to step 918 in FIG. 9. This is step 1334. If the mode is regular backup, the routine enters the regular backup state. This is step 1336. If the mode is recovering, the routine enters a recovery mode. This is step 1338.
  • Summarizing, when a given data protection command for a given data source is forwarded to a host driver, the event processor enters into the initial upload state. During this state, the event processor gathers a list of data items of the data source to be protected and creates a data list, e.g., the sorted source tree. Then, the event processor moves the data (as an upload, preferably one data element at a time) to a DMS core to create initial baseline data. In an illustrative embodiment, as has been described, the upload is a stream of granular application-aware data chunks that are attached to upload events. During this upload phase, the application does not have to be shutdown. Simultaneously, while the baseline is uploading and as the application updates the data on the host, checkpoint granular data, metadata, and data events are continuously streamed into the DMS core, in real-time. Preferably, the update events for the data that are not already uploaded are dropped so that only the update events for data already uploaded are streamed to the DMS. The DMS core receives the real time event journal stream that includes the baseline upload events and the change events. It processes these events and organizes the data to maintain their history in a persistent storage of the DMS. If DMS fails while processing an upload or an update data event, preferably a failure event is forwarded back to the host driver and entered into an event queue as a protocol specific event. The event processor then marks the target item associated with the failure “dirty” (or out-of-sync) and then performs data synchronization with the DMS on that target item.
  • DMS provides significant advantages over the prior art. Unlike a conventional data protection system the data protection service provided by DMS is automated, real-time, and continuous, and it exhibits no or substantially no downtime. This is because DMS is keeping track of the real-time data history, and because preferably the state of the most current data in a DMS region, cluster or node (as the case may be) must match the state of the data in the original host server at all times. In contrast, data recovery on a conventional data protection system means shutting down a host server, selecting a version of the data history, copying the data history back to the host server, and then turning on the host server. All of these steps are manually driven. After a period of time, the conventional data protection system then performs a backup on the changed data. In the present invention, as has been described above, the otherwise separate processes (initial data upload, continuous backup, blackout and data resynchronization, and recovery) are simply phases of the overall data protection cycle. This is highly advantageous, and it is enabled because DMS keeps a continuous data history. Stated another way, there is no gap in the data. The data protection cycle described above preferably loops around indefinitely until, for example, a user terminates the service. A given data protection phase (the state) changes as the state of the data and the environment change (the incident). Preferably, as has been described, all of the phases (states) are interconnected to form a finite state machine that provides the data protection service.
  • The data protection service provided by the DMS has no effective downtime because the data upload, data resynchronization, data recovery and data backup are simply integrated phases of a data protection cycle. There is no application downtime.
  • The present invention has numerous advantages over the prior art such as tape backup, disk backup, volume replication, storage snapshots, application replication, remote replication, and manual recovery. Indeed, existing fragmented approaches are complex, resource inefficient, expensive to operate, and often unreliable. From an architectural standpoint, they are not well suited to scaling to support heterogeneous, enterprise-wide data management. The present invention overcomes these and other problems of the prior art by providing real-time data management services. As has been described, the invention transparently and efficiently captures the real-time continuous history of all or substantially all transactions and data changes in the enterprise. The solution operates over local and wide area IP networks to form a coherent data management, protection and recovery infrastructure. It eliminates data loss, reduces downtime, and ensures application consistent recovery to any point in time. These and other advantages are provided through the use of an application aware I/O driver that captures and outputs a continuous data stream—in the form of an event journal—to other data management nodes in the system.
  • As one of ordinary skill in the art will appreciate, the present invention addresses enterprise data protection and data management problems by continuously protecting all data changes and transactions in real time across local and wide area networks. Preferably, and as illustrated in FIG. 1, the method and system of the invention take advantage of inexpensive, commodity processors to efficiently parallel process and route application-aware data changes between applications and low cost near storage.
  • While the present invention has been described in the context of a method or process, the present invention also relates to apparatus for performing the operations herein. In an illustrated embodiment, the apparatus is implemented as a processor and associated program code that implements a finite state machine with a plurality of states and to effect transitions between the states. As described above, this apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
  • While the above written description also describes a particular order of operations performed by certain embodiments of the invention, it should be understood that such order is exemplary, as alternative embodiments may perform the operations in a different order, combine certain operations, overlap certain operations, or the like. References in the specification to a given embodiment indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic.
  • While the above has been described in the context of an “upload” between a local data store and a remote data store, this nomenclature should not be construed as limiting. Generalizing, the method and system involves monitoring events (e.g., as a given application interfaces to a local data store in a first processing environment), and then transferring to a second data store (remote from the first processing environment) a continuous, application-aware data stream while maintaining execution of the given application in the first processing environment. This enables the transfer of a baseline version. In addition, as the application-aware data stream is being transferred (e.g., by uploading), one or more application update events can be processed into the data stream.

Claims (20)

1. A method of synchronizing data as a data protection service is being provided to a given data source in a first processing environment, where, in connection with the data protection service, a continuous, application-aware data stream is being generated and transferred to a data store remote from the first processing environment, the method comprising:
determining whether a state of given data in the first processing environment is or may be out of synchronization with respect to a state of the given data in the data store remote from the first processing environment; and
if the state of the given data in the first processing environment is or may be out of synchronization with respect to the state of the given data in the data store, initiating a given operation with respect to the data source in a first processing environment to synchronize the given data, wherein the data synchronization operation occurs while the given application continues to execute and as the continuous, application-aware data stream continues to be generated and transferred to the data store.
2. The method as described in claim 1 wherein the given operation is initiated after a blackout when the given data in the first processing environment is changed.
3. The method as described in claim 2 further including the step of updating the state of the given data in the first processing environment during the blackout.
4. The method as described in claim 3 further including the step of comparing an updated state of the given data with the state of the given data in the data store.
5. The method as described in claim 4 further including the step of transferring to the data store at least one difference value that results from the comparing step.
6. The method as described in claim 5 wherein the difference value is a checkpoint.
7. The method as described in claim 1 wherein the given operation is initiated after a host in the first processing environment is rebooted and a determination is made that the state of the given data in the data store is unknown.
8. The method as described in claim 7 further including the step of examining a state of each of a set of data items associated with the data source.
9. The method as described in claim 8 further including the step of transferring to the data store at least one difference value that results from the examining step.
10. The method as described in claim 1 wherein the data source is a file system associated with the first processing environment.
11. The method as described in claim 1 wherein the data source is a database associated with the first processing environment.
12. The method as described in claim 1 wherein the determining step uses a data structure having an ordered set of data items.
13. The method as described in claim 12 wherein the data structure is a sorted source tree.
14. A system for protecting a data source associated with a host in a first processing environment, comprising:
a data structure having a list of data items associated with the data source;
code responsive to initiation of a data protection service for transferring to a data store remote from the first processing environment a continuous, application-aware data stream; and
code responsive to information in the data structure for synchronizing a state of given data at the host with a state of the given data at the data store.
15. The system as described in claim 14 wherein the data structure is a sorted source tree.
16. The system as described in claim 14 wherein the data source is a file system.
17. The system as described in claim 14 wherein the data source is a database.
18. The system as described in claim 14 wherein the application-aware data stream includes checkpoint data.
19. The system as described in claim 14 wherein the application-aware data stream includes metadata.
20. The system as described in claim 14 wherein the application-aware data stream includes information about a given event associated with the data source.
US12/696,691 2004-06-08 2010-01-29 Method and system for no downtime resynchronization for real-time, continuous data protection Abandoned US20100198788A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/696,691 US20100198788A1 (en) 2004-06-08 2010-01-29 Method and system for no downtime resynchronization for real-time, continuous data protection

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/862,971 US7680834B1 (en) 2004-06-08 2004-06-08 Method and system for no downtime resychronization for real-time, continuous data protection
US12/696,691 US20100198788A1 (en) 2004-06-08 2010-01-29 Method and system for no downtime resynchronization for real-time, continuous data protection

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/862,971 Continuation US7680834B1 (en) 2004-06-08 2004-06-08 Method and system for no downtime resychronization for real-time, continuous data protection

Publications (1)

Publication Number Publication Date
US20100198788A1 true US20100198788A1 (en) 2010-08-05

Family

ID=41819601

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/862,971 Active 2025-04-25 US7680834B1 (en) 2004-06-08 2004-06-08 Method and system for no downtime resychronization for real-time, continuous data protection
US12/696,691 Abandoned US20100198788A1 (en) 2004-06-08 2010-01-29 Method and system for no downtime resynchronization for real-time, continuous data protection

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/862,971 Active 2025-04-25 US7680834B1 (en) 2004-06-08 2004-06-08 Method and system for no downtime resychronization for real-time, continuous data protection

Country Status (1)

Country Link
US (2) US7680834B1 (en)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100332641A1 (en) * 2007-11-09 2010-12-30 Kulesh Shanmugasundaram Passive detection of rebooting hosts in a network
US20110295797A1 (en) * 2010-05-26 2011-12-01 International Business Machines Corporation Synchronization of sequential access storage components with backup catalog
WO2012057955A1 (en) 2010-10-27 2012-05-03 Microsoft Corporation Stateful applications operating in a stateless cloud computing environment
US20120266019A1 (en) * 2005-07-20 2012-10-18 Quest Software, Inc. Method and system for virtual on-demand recovery
CN102761602A (en) * 2012-06-05 2012-10-31 北京永洪商智科技有限公司 Hadoop-based mass data real-time analyzing and processing method
US20120303581A1 (en) * 2011-05-23 2012-11-29 Microsoft Corporation Replication processes in a distributed storage environment
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US8429198B1 (en) * 2005-07-20 2013-04-23 Quest Software, Inc. Method of creating hierarchical indices for a distributed object system
US8453145B1 (en) 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US8458134B2 (en) 2011-03-30 2013-06-04 International Business Machines Corporation Near continuous space-efficient data protection
US20130275479A1 (en) * 2011-12-22 2013-10-17 Paul J. Thadikaran Systems and methods for providing dynamic file system awareness on storage devices
US8650167B2 (en) 2004-09-17 2014-02-11 Dell Software Inc. Method and system for data reduction
US20140172803A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Main-memory database checkpointing
US8839031B2 (en) 2012-04-24 2014-09-16 Microsoft Corporation Data consistency between virtual machines
US8880473B1 (en) * 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US8930751B2 (en) 2012-04-24 2015-01-06 Microsoft Corporation Initializing replication in a virtual machine
US8972347B1 (en) 2007-03-30 2015-03-03 Dell Software Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US9270657B2 (en) 2011-12-22 2016-02-23 Intel Corporation Activation and monetization of features built into storage subsystems using a trusted connect service back end infrastructure
US9547562B1 (en) 2010-08-11 2017-01-17 Dell Software Inc. Boot restore system for rapidly restoring virtual machine backups
US10019574B2 (en) 2011-12-22 2018-07-10 Intel Corporation Systems and methods for providing dynamic file system awareness on storage devices
CN110489472A (en) * 2019-07-29 2019-11-22 北京恒赢智航科技有限公司 A kind of method for interchanging data and the unit management system using the exchange method
US11467924B2 (en) * 2018-07-31 2022-10-11 Rubrik, Inc. Instant recovery of databases

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7680834B1 (en) * 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
US7730026B2 (en) * 2004-07-01 2010-06-01 Apple Inc. Method and system using reusable state information for synchronization and maintenance of data
US7904913B2 (en) 2004-11-02 2011-03-08 Bakbone Software, Inc. Management interface for a system that provides automated, real-time, continuous data protection
US8495015B2 (en) 2005-06-21 2013-07-23 Apple Inc. Peer-to-peer syncing in a decentralized environment
US7523146B2 (en) * 2005-06-21 2009-04-21 Apple Inc. Apparatus and method for peer-to-peer N-way synchronization in a decentralized environment
EP1952560B1 (en) 2005-10-21 2013-12-11 Telefonaktiebolaget LM Ericsson (publ) Technique for performing a random access procedure over a radio interface
US7860826B2 (en) 2006-08-04 2010-12-28 Apple Inc. Method and system for using global equivalency sets to identify data during peer-to-peer synchronization
US7657769B2 (en) * 2007-01-08 2010-02-02 Marcy M Scott N-way synchronization of data
US8065442B1 (en) * 2007-11-19 2011-11-22 American Megatrends, Inc. High performance journaling for replication and continuous data protection
US7822827B2 (en) * 2008-06-30 2010-10-26 Symantec Corporation Continuous data protection and remote block-level storage for a data volume
US8015277B2 (en) * 2009-02-18 2011-09-06 International Business Machines Corporation Method and system for simulating latency between layers of multi-tier applications
US8370306B1 (en) * 2009-11-13 2013-02-05 Symantec Corporation Systems and methods for recovering from continuous-data-protection blackouts
US9110930B2 (en) * 2013-08-22 2015-08-18 International Business Machines Corporation Parallel application checkpoint image compression
US10614054B2 (en) * 2017-05-12 2020-04-07 International Business Machines Corporation Synchronizing data values by sending updates
US10606820B2 (en) * 2017-05-12 2020-03-31 International Business Machines Corporation Synchronizing data values by requesting updates

Citations (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3555184A (en) * 1964-10-21 1971-01-12 Bell Telephone Labor Inc Data character assembler
US3555204A (en) * 1968-01-12 1971-01-12 Ibm Electronic sweep magnetic scanning transducer
US3555195A (en) * 1967-10-05 1971-01-12 Rca Corp Multiplex synchronizing circuit
US3555251A (en) * 1967-12-06 1971-01-12 Honeywell Inc Optimizing system for a plurality of temperature conditioning apparatuses
US3648250A (en) * 1970-11-13 1972-03-07 Nasa Digital video display system using cathode-ray tube
US4450556A (en) * 1980-10-17 1984-05-22 Northern Telecom Limited Digital signal subscriber loop and interface circuit
US4451108A (en) * 1982-08-30 1984-05-29 Skidmore Donald D Data-terminal service outlet
US4455483A (en) * 1980-10-24 1984-06-19 Schoenhuber Max J System for recording data relating to specific lots of materials, particularly to milk lots
US4502082A (en) * 1977-06-16 1985-02-26 Burroughs Corporation Spiral recording and associated system
US4512020A (en) * 1981-09-21 1985-04-16 U.S. Philips Corporation Data processing device for processing multiple-symbol data-words based on a symbol-correcting code and having multiple operating modes
US4796260A (en) * 1987-03-30 1989-01-03 Scs Telecom, Inc. Schilling-Manela forward error correction and detection code method and apparatus
US4916450A (en) * 1988-05-12 1990-04-10 Radar Control Systems Corporation Radar system for headway control of a vehicle
US5005197A (en) * 1989-11-30 1991-04-02 Communications Test Design, Inc. Method and apparatus as for testing a telephone line interface card
US5177796A (en) * 1990-10-19 1993-01-05 International Business Machines Corporation Image data processing of correlated images
US5224212A (en) * 1989-05-01 1993-06-29 Motorola, Inc. Asynchronous operation in a database management system
US5280584A (en) * 1989-11-21 1994-01-18 Deutsche Itt Industries Gmbh Two-way data transfer apparatus
US5287504A (en) * 1989-08-01 1994-02-15 Silicon Graphics, Inc. File alteration monitor for computer operating and file management system
US5303393A (en) * 1990-11-06 1994-04-12 Radio Satellite Corporation Integrated radio satellite response system and method
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5311197A (en) * 1993-02-01 1994-05-10 Trimble Navigation Limited Event-activated reporting of vehicle location
US5319395A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Pixel depth converter for a computer video display
US5321699A (en) * 1991-03-12 1994-06-14 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile memory system with write-verify controller using two reference levels
US5382508A (en) * 1991-03-08 1995-01-17 Fuji Photo Film Co., Ltd. Photographic-film product
US5387994A (en) * 1994-02-14 1995-02-07 Thermo King Corporation Communications adapter for converting wire-based communication to wireless communication
US5388074A (en) * 1992-12-17 1995-02-07 Vlsi Technology, Inc. FIFO memory using single output register
US5392209A (en) * 1992-12-18 1995-02-21 Abbott Laboratories Method and apparatus for providing a data interface between a plurality of test information sources and a database
US5396600A (en) * 1991-12-10 1995-03-07 International Computers Limited Apparatus and method for interfacing between processing computers in a computer system
US5416831A (en) * 1993-04-15 1995-05-16 Bellsouth Corporation System for communicating with an ADSI-compatible telephone via a service circuit node
US5481531A (en) * 1993-09-24 1996-01-02 Kabushiki Kaisha Toshiba Optical disk apparatus for recording/erasing information in the M-CAV format by using gain switching to increase the speed of the master clock
US5499512A (en) * 1994-05-09 1996-03-19 Thermo King Corporation Methods and apparatus for converting a manually operable refrigeration unit to remote operation
US5502491A (en) * 1992-08-31 1996-03-26 Victor Company Of Japan, Ltd. Orthogonal transform coding apparatus and decoding apparatus
US5507024A (en) * 1994-05-16 1996-04-09 Allegro Microsystems, Inc. FM data-system radio receiver
US5506965A (en) * 1991-07-16 1996-04-09 Mitsubishi Denki Kabushiki Kaisha Microcomputer incorporating communication device
US5511212A (en) * 1993-06-10 1996-04-23 Rockoff; Todd E. Multi-clock SIMD computer and instruction-cache-enhancement thereof
US5602638A (en) * 1994-04-01 1997-02-11 Boulware; Jim L. Apparatus for accurately determining a moving ball's position and speed
US5606601A (en) * 1995-05-10 1997-02-25 Mci Communications Corporation Centralizing storage and verification element for telephone network
US5724241A (en) * 1996-01-11 1998-03-03 Western Atlas International, Inc. Distributed seismic data-gathering system
US5729743A (en) * 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5737399A (en) * 1995-07-13 1998-04-07 Mci Communications Corporation Network information architecture having centralizing storage and verification element
US5742915A (en) * 1995-12-13 1998-04-21 Caterpillar Inc. Position referenced data for monitoring and controlling
US5742509A (en) * 1995-04-11 1998-04-21 Trimble Navigation Limited Personal tracking system integrated with base station
US5754772A (en) * 1996-03-26 1998-05-19 Unisys Corporation Transaction service independent HTTP server-to-transaction gateway
US5862136A (en) * 1995-07-07 1999-01-19 Northern Telecom Limited Telecommunications apparatus and method
US5864875A (en) * 1996-12-06 1999-01-26 International Business Machines Corporation Data management system for problems, releases and parts
US5878408A (en) * 1996-12-06 1999-03-02 International Business Machines Corporation Data management system and process
US5877742A (en) * 1997-12-11 1999-03-02 Klink; James Medical identification bracelet
US5894494A (en) * 1997-10-29 1999-04-13 Golden Bridge Technology, Inc. Parallel correlator architecture for synchronizing direct sequence spread-spectrum signals
US6031848A (en) * 1997-05-07 2000-02-29 3Com Corporation Apparatus for an improved ISDN terminal adapter having baud rate unblocking and methods for use therein
US6035297A (en) * 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US6178121B1 (en) * 1997-12-11 2001-01-23 Seiko Epson Corporation Semiconductor memory device, semiconductor device, and electronic apparatus using the semiconductor device
US6181609B1 (en) * 1998-09-17 2001-01-30 Nec Corporation Semiconductor memory device having circuit for controlling data-output timing
US6189016B1 (en) * 1998-06-12 2001-02-13 Microsoft Corporation Journaling ordered changes in a storage volume
US6237122B1 (en) * 1997-11-07 2001-05-22 Fujitsu Limited Semiconductor memory device having scan flip-flops
US20020022982A1 (en) * 2000-01-04 2002-02-21 Elliot Cooperstone Method and system for remotely managing business and employee administration functions
US6366926B1 (en) * 1998-12-31 2002-04-02 Computer Associates Think, Inc. Method and apparatus for the dynamic filtering and routing of events
US6366988B1 (en) * 1997-07-18 2002-04-02 Storactive, Inc. Systems and methods for electronic data storage management
US6389427B1 (en) * 1998-02-20 2002-05-14 Redleaf Group, Inc. File system performance enhancement
US6393582B1 (en) * 1998-12-10 2002-05-21 Compaq Computer Corporation Error self-checking and recovery using lock-step processor pair architecture
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US20030009552A1 (en) * 2001-06-29 2003-01-09 International Business Machines Corporation Method and system for network management with topology system providing historical topological views
US6519612B1 (en) * 1996-11-27 2003-02-11 1Vision Software, Inc. Internet storage manipulation and navigation system
US6526418B1 (en) * 1999-12-16 2003-02-25 Livevault Corporation Systems and methods for backing up data files
US20030051026A1 (en) * 2001-01-19 2003-03-13 Carter Ernst B. Network surveillance and security system
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US20030088372A1 (en) * 2001-11-02 2003-05-08 Caulfield David D Array calibration and quality assurance
US20040010544A1 (en) * 2002-06-07 2004-01-15 Slater Alastair Michael Method of satisfying a demand on a network for a network resource, method of sharing the demand for resources between a plurality of networked resource servers, server network, demand director server, networked data library, method of network resource management, method of satisfying a demand on an internet network for a network resource, tier of resource serving servers, network, demand director, metropolitan video serving network, computer readable memory device encoded with a data structure for managing networked resources, method of making available computer network resources to users of a
USRE38410E1 (en) * 1994-01-31 2004-01-27 Axs Technologies, Inc. Method and apparatus for a parallel data storage and processing server
US20040036716A1 (en) * 2002-06-12 2004-02-26 Jordahl Jena J. Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view
US20040047354A1 (en) * 2002-06-07 2004-03-11 Slater Alastair Michael Method of maintaining availability of requested network resources, method of data storage management, method of data storage management in a network, network of resource servers, network, resource management server, content management server, network of video servers, video server, software for controlling the distribution of network resources
US20040080504A1 (en) * 1996-03-26 2004-04-29 Pixion, Inc. Real-time, multi-point, multi-speed, multi-stream scalable computer network communications system
US6839740B1 (en) * 2002-12-27 2005-01-04 Veritas Operating Corporation System and method for performing virtual device I/O operations
US6839721B2 (en) * 2001-01-12 2005-01-04 Hewlett-Packard Development Company, L.P. Integration of a database into file management software for protecting, tracking, and retrieving data
US20050001911A1 (en) * 2003-07-01 2005-01-06 Nikon Corporation Electronic still camera and system and program for same
US6847984B1 (en) * 1999-12-16 2005-01-25 Livevault Corporation Systems and methods for backing up data files
US20050021690A1 (en) * 2003-02-27 2005-01-27 Prasad Peddada System and method for communications between servers in a cluster
US20050076066A1 (en) * 2003-10-07 2005-04-07 International Business Machines Corporation Method, system, and program for retaining versions of files
US20060020586A1 (en) * 2000-03-03 2006-01-26 Michel Prompt System and method for providing access to databases via directories and other hierarchical structures and interfaces
US6993706B2 (en) * 2002-01-15 2006-01-31 International Business Machines Corporation Method, apparatus, and program for a state machine framework
US20060026220A1 (en) * 2003-02-26 2006-02-02 Permabit, Inc. History preservation in a computer storage system
US20060050970A1 (en) * 2004-09-08 2006-03-09 Sony Corporation Method and apparatus for transmitting a coded video signal
US20060064416A1 (en) * 2004-09-17 2006-03-23 Sim-Tang Siew Y Method and system for data reduction
US7039663B1 (en) * 2002-04-19 2006-05-02 Network Appliance, Inc. System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot
US20060101384A1 (en) * 2004-11-02 2006-05-11 Sim-Tang Siew Y Management interface for a system that provides automated, real-time, continuous data protection
US20070067278A1 (en) * 2005-09-22 2007-03-22 Gtess Corporation Data file correlation system and method
US7200233B1 (en) * 2002-12-10 2007-04-03 L-3 Communications Corporation System and method for fast data encryption/decryption using time slot numbering
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
US7207224B2 (en) * 2005-06-10 2007-04-24 Brooks Automation, Inc. Wide-range combination vacuum gauge
US20070094312A1 (en) * 2004-05-07 2007-04-26 Asempra Technologies, Inc. Method for managing real-time data history of a file system
US7325159B2 (en) * 2004-02-04 2008-01-29 Network Appliance, Inc. Method and system for data recovery in a continuous data protection system
US7363549B2 (en) * 2004-05-07 2008-04-22 Asempra Technologies, Inc. Method and system for automated, no downtime, real-time, continuous data protection
US7519870B1 (en) * 2004-06-08 2009-04-14 Asempra Technologies, Inc. Method and system for no downtime, initial data upload for real-time, continuous data protection
US20100031274A1 (en) * 2004-05-10 2010-02-04 Siew Yong Sim-Tang Method and system for real-time event journaling to provide enterprise data services
US7680834B1 (en) * 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
US7689602B1 (en) * 2005-07-20 2010-03-30 Bakbone Software, Inc. Method of creating hierarchical indices for a distributed object system

Family Cites Families (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4162536A (en) 1976-01-02 1979-07-24 Gould Inc., Modicon Div. Digital input/output system and method
NL7909178A (en) 1979-12-20 1981-07-16 Philips Nv CALCULATOR WITH DISTRIBUTED REDUNDANCY DISTRIBUTED OVER DIFFERENT INSULATION AREAS FOR ERRORS.
DE3108891C2 (en) 1981-03-09 1983-03-17 OBO Bettermann oHG, 5750 Menden Electric stud welding device Password: Coding
EP0301282A1 (en) 1987-07-31 1989-02-01 BBC Brown Boveri AG Signal transmission method
US4972474A (en) 1989-05-01 1990-11-20 Cylink Corporation Integer encryptor
DE69026821T2 (en) 1990-03-09 1996-09-05 Hewlett Packard Ltd DEVICE FOR STORING ON A MAGNETIC TAPE
JP3448051B2 (en) 1990-03-31 2003-09-16 株式会社東芝 Nonvolatile semiconductor memory device
US6816872B1 (en) 1990-04-26 2004-11-09 Timespring Software Corporation Apparatus and method for reconstructing a file from a difference signature and an original file
US5479654A (en) 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
WO1992008290A1 (en) 1990-10-16 1992-05-14 Motorola, Inc. Mobile isdn radio system
US5148479A (en) 1991-03-20 1992-09-15 International Business Machines Corp. Authentication protocols in communication networks
US5365516A (en) 1991-08-16 1994-11-15 Pinpoint Communications, Inc. Communication system and method for determining the location of a transponder unit
US5377102A (en) 1992-03-05 1994-12-27 Nishiishigaki; Kenji Apparatus for preparing map data with regional properties
AU4626893A (en) 1992-09-14 1994-03-24 Aprex Corporation Contactless communication system
US5657398A (en) 1992-10-28 1997-08-12 Protocol Systems, Inc. High-quality, low-bit-rate method of compressing waveform data
JPH06223201A (en) 1993-01-22 1994-08-12 Matsushita Electric Ind Co Ltd Parallel image generating device
JPH06275098A (en) 1993-03-24 1994-09-30 Mitsubishi Electric Corp Semiconductor memory
US5373372A (en) 1993-03-25 1994-12-13 Hewlett-Packard Company Method and an apparatus for limited variable speed scanning
DE69323870T2 (en) 1993-08-02 1999-07-29 Trw Inc Modular solid-state mass storage device for video servers
GB2281644A (en) 1993-09-02 1995-03-08 Ibm Fault tolerant transaction-oriented data processing.
US5495607A (en) 1993-11-15 1996-02-27 Conner Peripherals, Inc. Network management system having virtual catalog overview of files distributively stored across network domain
US5440686A (en) 1993-12-22 1995-08-08 International Business Machines Corporation Selecting a data unit candidate to be demoted to a backing store from a front store based upon thresholds individual to each of the data candidates
US5640159A (en) 1994-01-03 1997-06-17 International Business Machines Corporation Quantization method for image data compression employing context modeling algorithm
JP3354330B2 (en) 1994-02-03 2002-12-09 ブラザー工業株式会社 Sewing data correction device
US5822749A (en) 1994-07-12 1998-10-13 Sybase, Inc. Database system with methods for improving query performance with cache optimization strategies
US5430830A (en) 1994-08-22 1995-07-04 Motorola, Inc. Adaptive weight adjusting circuit for an neural network
US5560033A (en) 1994-08-29 1996-09-24 Lucent Technologies Inc. System for providing automatic power control for highly available n+k processors
JP3216449B2 (en) 1994-10-31 2001-10-09 安藤電気株式会社 Self-diagnosis device for semiconductor memory failure
US5980096A (en) 1995-01-17 1999-11-09 Intertech Ventures, Ltd. Computer-based system, methods and graphical interface for information storage, modeling and stimulation of complex systems
US5794252A (en) 1995-01-24 1998-08-11 Tandem Computers, Inc. Remote duplicate database facility featuring safe master audit trail (safeMAT) checkpointing
US5781612A (en) 1995-03-10 1998-07-14 Northern Telecom Limited Radio terminal interfaces for voice and data telecommunications, and methods for their operation
US5854834A (en) 1995-04-21 1998-12-29 Mci Communications Corporation Network information concentrator
US5627855A (en) 1995-05-25 1997-05-06 Golden Bridge Technology, Inc. Programmable two-part matched filter for spread spectrum
US5644763A (en) 1995-06-28 1997-07-01 Sybase, Inc. Database system with improved methods for B-tree maintenance
US5841771A (en) 1995-07-07 1998-11-24 Northern Telecom Limited Telecommunications switch apparatus and method for time switching
US5848072A (en) 1995-08-10 1998-12-08 Motorola, Inc. Method of and apparatus for communicating messages
US5778370A (en) 1995-08-25 1998-07-07 Emerson; Mark L. Data village system
US5930732A (en) 1995-09-15 1999-07-27 Accumed International, Inc. System for simplifying the implementation of specified functions
US5819020A (en) 1995-10-16 1998-10-06 Network Specialists, Inc. Real time backup system
US5684693A (en) 1995-11-14 1997-11-04 Western Atlas International, Inc. Method for bit-stream data compression
JP3461076B2 (en) 1995-12-28 2003-10-27 富士通株式会社 Charged particle beam exposure apparatus and method capable of reading data at high speed
US5768159A (en) 1996-05-02 1998-06-16 Northern Telecom Limited Method of simulating AC timing characteristics of integrated circuits
US5928327A (en) 1996-08-08 1999-07-27 Wang; Pong-Sheng System and process for delivering digital data on demand
US5784366A (en) 1996-08-27 1998-07-21 Transsky Corp. Wideband code-division-multiple access system and method
US5930762A (en) 1996-09-24 1999-07-27 Rco Software Limited Computer aided risk management in multiple-parameter physical systems
CA2221216A1 (en) 1996-11-15 1998-05-15 Mark Squibb System and apparatus for merging a write event journal and an original storage to produce an updated storage using an event map
US5812130A (en) 1996-12-06 1998-09-22 International Business Machines Corporation Data management system and method for concurrent engineering
US5950201A (en) 1996-12-06 1999-09-07 International Business Machines Corporation Computerized design automation method using a single logical PFVL paradigm
US6088693A (en) 1996-12-06 2000-07-11 International Business Machines Corporation Data management system for file and database management
US5826265A (en) 1996-12-06 1998-10-20 International Business Machines Corporation Data management system having shared libraries
US5920873A (en) 1996-12-06 1999-07-06 International Business Machines Corporation Data management control system for file and database
US5920867A (en) 1996-12-06 1999-07-06 International Business Machines Corporation Data management system having data management configuration
JP3720934B2 (en) 1996-12-17 2005-11-30 富士通株式会社 Semiconductor memory device and data read / write method
US5918248A (en) 1996-12-30 1999-06-29 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US6108318A (en) 1997-03-04 2000-08-22 Ericsson Inc System and method for data link synchronization
US5958010A (en) 1997-03-20 1999-09-28 Firstsense Software, Inc. Systems and methods for monitoring distributed applications including an interface running in an operating system kernel
US5805155A (en) 1997-04-15 1998-09-08 Time Warner Entertainment Co. L.P. Time Warner Cable Virtual assets in an interactive television cable system
US5931928A (en) 1997-05-07 1999-08-03 3Com Corporaton System for ISDN terminal adapter DCE for automatically negotiating data compression with it's PPP peer when DTE is unable or unwilling to negotiate compression
US6005846A (en) 1997-05-07 1999-12-21 3Com Corporation Apparatus for an improved ISDN terminal adapter having automatic SPID configuration and methods for use therein
US5937168A (en) 1997-05-30 1999-08-10 Bellsouth Corporation Routing information within an adaptive routing architecture of an information retrieval system
DE69802294T2 (en) 1997-08-29 2002-05-16 Hewlett Packard Co SYSTEMS FOR DATA BACKUP AND RECOVERY
US6108410A (en) 1997-09-16 2000-08-22 Nynex Science And Technology Inc. Methods and apparatus for automating the detection, reporting and correction of operator input errors
US5940823A (en) 1997-11-10 1999-08-17 International Business Machines Corporation System for the distribution and storage of electronic mail information
US5966707A (en) 1997-12-02 1999-10-12 International Business Machines Corporation Method for managing a plurality of data processes residing in heterogeneous data repositories
US5953729A (en) 1997-12-23 1999-09-14 Microsoft Corporation Using sparse file technology to stage data that will then be stored in remote storage
GB2333671A (en) 1998-01-23 1999-07-28 Ibm Multi-protocol communication
US6163856A (en) * 1998-05-29 2000-12-19 Sun Microsystems, Inc. Method and apparatus for file system disaster recovery
US6243348B1 (en) 1998-06-05 2001-06-05 Massachusetts Institute Of Technology Very-high-density memory device utilizing a scintillating data-storage medium
US6948092B2 (en) 1998-12-10 2005-09-20 Hewlett-Packard Development Company, L.P. System recovery from errors for processor and associated components
US6249824B1 (en) 1998-12-12 2001-06-19 Joseph Reid Henrichs Magnetic data storage fixed hard disk drive using stationary microhead array chips in place of flying-heads and rotary voice-coil actuators
US6446136B1 (en) 1998-12-31 2002-09-03 Computer Associates Think, Inc. System and method for dynamic correlation of events
US6487561B1 (en) 1998-12-31 2002-11-26 Emc Corporation Apparatus and methods for copying, backing up, and restoring data using a backup segment size larger than the storage block size
US6463565B1 (en) 1999-01-05 2002-10-08 Netspeak Corporation Method for designing object-oriented table driven state machines
US6502133B1 (en) 1999-03-25 2002-12-31 Lucent Technologies Inc. Real-time event processing system with analysis engine using recovery information
US6487581B1 (en) 1999-05-24 2002-11-26 Hewlett-Packard Company Apparatus and method for a multi-client event server
US6611867B1 (en) 1999-08-31 2003-08-26 Accenture Llp System, method and article of manufacture for implementing a hybrid network
US7290056B1 (en) 1999-09-09 2007-10-30 Oracle International Corporation Monitoring latency of a network to manage termination of distributed transactions
US6779003B1 (en) 1999-12-16 2004-08-17 Livevault Corporation Systems and methods for backing up data files
US6625623B1 (en) 1999-12-16 2003-09-23 Livevault Corporation Systems and methods for backing up data files
US6460055B1 (en) 1999-12-16 2002-10-01 Livevault Corporation Systems and methods for backing up data files
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US20020129048A1 (en) * 2000-03-03 2002-09-12 Surgient Networks, Inc. Systems and methods for resource monitoring in information storage environments
US7240099B2 (en) 2000-03-06 2007-07-03 Sony Corporation System and method for efficiently performing data transfer operations
KR100341335B1 (en) 2000-05-18 2002-06-22 윤종용 Optical disc player and a method for recording information on a disc of the optical disc player or a method for playing the optical disc player
US6823336B1 (en) 2000-09-26 2004-11-23 Emc Corporation Data storage system and method for uninterrupted read-only access to a consistent dataset by one host processor concurrent with read-write access by another host processor
JP2002108728A (en) 2000-10-02 2002-04-12 Ntt Docomo Inc Method for inserting fault information and provider facility
DE60131900T2 (en) 2000-10-26 2008-12-04 Flood, James C. jun., Portland METHOD AND SYSTEM FOR MANAGING DISTRIBUTED CONTENT AND RELATED METADATA
US6836756B1 (en) 2000-11-13 2004-12-28 Nortel Networks Limited Time simulation techniques to determine network availability
US6735595B2 (en) 2000-11-29 2004-05-11 Hewlett-Packard Development Company, L.P. Data structure and storage and retrieval method supporting ordinality based searching and data retrieval
US6751753B2 (en) 2001-02-27 2004-06-15 Sun Microsystems, Inc. Method, system, and program for monitoring system components
US7415038B2 (en) 2001-03-29 2008-08-19 International Business Machines Corporation Method and system for network management providing access to application bandwidth usage calculations
JP4398113B2 (en) 2001-05-23 2010-01-13 富士通株式会社 Layered network management system
US7168026B2 (en) * 2001-06-22 2007-01-23 Intel Corporation Method and apparatus for preservation of failure state in a read destructive memory
KR100436365B1 (en) 2001-06-23 2004-06-18 삼성전자주식회사 ATM-based delay adaptive scheduling apparatus according to traffic types and method thereof
US6961860B2 (en) 2001-12-07 2005-11-01 Nokia Corporation Method and system for optimizing power consumption during data read/write operation in disk-based memory
US7287033B2 (en) 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
US7644392B2 (en) 2002-04-12 2010-01-05 Telelogic Technologies North America, Inc. System and method for active configuration management
US7080081B2 (en) 2002-04-15 2006-07-18 International Business Machines Corporation Multidimensional data clustering scheme for query processing and maintenance in relational databases
WO2004025463A1 (en) 2002-09-09 2004-03-25 Catena Corporation Requirement defining method, method for developing software, method for changing requirement word, and newly defining method
KR100532325B1 (en) 2002-11-23 2005-11-29 삼성전자주식회사 Input control method and apparatus for turbo decoder
US7499925B2 (en) 2003-03-27 2009-03-03 Microsoft Corporation File system for displaying items of different types and from different physical locations
US8001142B2 (en) 2003-04-02 2011-08-16 Oracle America, Inc. Distributed data system with incremental data updates
WO2006012211A2 (en) 2004-06-24 2006-02-02 Meshnetworks, Inc. A system and method for adaptive rate selection for wireless networks
KR100664306B1 (en) 2004-10-29 2007-01-04 삼성전자주식회사 Apparatus and method of generating and detecting the prevention and control data for verifying the validity of a data
US20060236149A1 (en) 2005-04-14 2006-10-19 Dell Products L.P. System and method for rebuilding a storage disk
US7274313B2 (en) 2005-05-13 2007-09-25 Texas Instruments Incorporated High speed data recording with input duty cycle distortion
US7634679B2 (en) 2005-11-30 2009-12-15 Microsoft Corporation Remote location failover server application
US8131723B2 (en) 2007-03-30 2012-03-06 Quest Software, Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity

Patent Citations (99)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3555184A (en) * 1964-10-21 1971-01-12 Bell Telephone Labor Inc Data character assembler
US3555195A (en) * 1967-10-05 1971-01-12 Rca Corp Multiplex synchronizing circuit
US3555251A (en) * 1967-12-06 1971-01-12 Honeywell Inc Optimizing system for a plurality of temperature conditioning apparatuses
US3555204A (en) * 1968-01-12 1971-01-12 Ibm Electronic sweep magnetic scanning transducer
US3648250A (en) * 1970-11-13 1972-03-07 Nasa Digital video display system using cathode-ray tube
US4502082A (en) * 1977-06-16 1985-02-26 Burroughs Corporation Spiral recording and associated system
US4450556A (en) * 1980-10-17 1984-05-22 Northern Telecom Limited Digital signal subscriber loop and interface circuit
US4455483A (en) * 1980-10-24 1984-06-19 Schoenhuber Max J System for recording data relating to specific lots of materials, particularly to milk lots
US4512020A (en) * 1981-09-21 1985-04-16 U.S. Philips Corporation Data processing device for processing multiple-symbol data-words based on a symbol-correcting code and having multiple operating modes
US4451108A (en) * 1982-08-30 1984-05-29 Skidmore Donald D Data-terminal service outlet
US4796260A (en) * 1987-03-30 1989-01-03 Scs Telecom, Inc. Schilling-Manela forward error correction and detection code method and apparatus
US4916450A (en) * 1988-05-12 1990-04-10 Radar Control Systems Corporation Radar system for headway control of a vehicle
US5224212A (en) * 1989-05-01 1993-06-29 Motorola, Inc. Asynchronous operation in a database management system
US5287504A (en) * 1989-08-01 1994-02-15 Silicon Graphics, Inc. File alteration monitor for computer operating and file management system
US5280584A (en) * 1989-11-21 1994-01-18 Deutsche Itt Industries Gmbh Two-way data transfer apparatus
US5005197A (en) * 1989-11-30 1991-04-02 Communications Test Design, Inc. Method and apparatus as for testing a telephone line interface card
US5319395A (en) * 1990-05-16 1994-06-07 International Business Machines Corporation Pixel depth converter for a computer video display
US5177796A (en) * 1990-10-19 1993-01-05 International Business Machines Corporation Image data processing of correlated images
US5303393A (en) * 1990-11-06 1994-04-12 Radio Satellite Corporation Integrated radio satellite response system and method
US5382508A (en) * 1991-03-08 1995-01-17 Fuji Photo Film Co., Ltd. Photographic-film product
US5321699A (en) * 1991-03-12 1994-06-14 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile memory system with write-verify controller using two reference levels
US5386422A (en) * 1991-03-12 1995-01-31 Kabushiki Kaisha Toshiba Electrically erasable and programmable non-volatile memory system with write-verify controller using two reference levels
US5506965A (en) * 1991-07-16 1996-04-09 Mitsubishi Denki Kabushiki Kaisha Microcomputer incorporating communication device
US5396600A (en) * 1991-12-10 1995-03-07 International Computers Limited Apparatus and method for interfacing between processing computers in a computer system
US5305326A (en) * 1992-03-06 1994-04-19 Data General Corporation High availability disk arrays
US5502491A (en) * 1992-08-31 1996-03-26 Victor Company Of Japan, Ltd. Orthogonal transform coding apparatus and decoding apparatus
US5388074A (en) * 1992-12-17 1995-02-07 Vlsi Technology, Inc. FIFO memory using single output register
US5392209A (en) * 1992-12-18 1995-02-21 Abbott Laboratories Method and apparatus for providing a data interface between a plurality of test information sources and a database
US5311197A (en) * 1993-02-01 1994-05-10 Trimble Navigation Limited Event-activated reporting of vehicle location
US5416831A (en) * 1993-04-15 1995-05-16 Bellsouth Corporation System for communicating with an ADSI-compatible telephone via a service circuit node
US5511212A (en) * 1993-06-10 1996-04-23 Rockoff; Todd E. Multi-clock SIMD computer and instruction-cache-enhancement thereof
US5481531A (en) * 1993-09-24 1996-01-02 Kabushiki Kaisha Toshiba Optical disk apparatus for recording/erasing information in the M-CAV format by using gain switching to increase the speed of the master clock
USRE38410E1 (en) * 1994-01-31 2004-01-27 Axs Technologies, Inc. Method and apparatus for a parallel data storage and processing server
US5387994A (en) * 1994-02-14 1995-02-07 Thermo King Corporation Communications adapter for converting wire-based communication to wireless communication
US5602638A (en) * 1994-04-01 1997-02-11 Boulware; Jim L. Apparatus for accurately determining a moving ball's position and speed
US5499512A (en) * 1994-05-09 1996-03-19 Thermo King Corporation Methods and apparatus for converting a manually operable refrigeration unit to remote operation
US5507024A (en) * 1994-05-16 1996-04-09 Allegro Microsystems, Inc. FM data-system radio receiver
US5742509A (en) * 1995-04-11 1998-04-21 Trimble Navigation Limited Personal tracking system integrated with base station
US5606601A (en) * 1995-05-10 1997-02-25 Mci Communications Corporation Centralizing storage and verification element for telephone network
US5862136A (en) * 1995-07-07 1999-01-19 Northern Telecom Limited Telecommunications apparatus and method
US5737399A (en) * 1995-07-13 1998-04-07 Mci Communications Corporation Network information architecture having centralizing storage and verification element
US6047323A (en) * 1995-10-19 2000-04-04 Hewlett-Packard Company Creation and migration of distributed streams in clusters of networked computers
US5729743A (en) * 1995-11-17 1998-03-17 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5893119A (en) * 1995-11-17 1999-04-06 Deltatech Research, Inc. Computer apparatus and method for merging system deltas
US5742915A (en) * 1995-12-13 1998-04-21 Caterpillar Inc. Position referenced data for monitoring and controlling
US5724241A (en) * 1996-01-11 1998-03-03 Western Atlas International, Inc. Distributed seismic data-gathering system
US5754772A (en) * 1996-03-26 1998-05-19 Unisys Corporation Transaction service independent HTTP server-to-transaction gateway
US20040080504A1 (en) * 1996-03-26 2004-04-29 Pixion, Inc. Real-time, multi-point, multi-speed, multi-stream scalable computer network communications system
US6519612B1 (en) * 1996-11-27 2003-02-11 1Vision Software, Inc. Internet storage manipulation and navigation system
US5864875A (en) * 1996-12-06 1999-01-26 International Business Machines Corporation Data management system for problems, releases and parts
US5878408A (en) * 1996-12-06 1999-03-02 International Business Machines Corporation Data management system and process
US6035297A (en) * 1996-12-06 2000-03-07 International Business Machines Machine Data management system for concurrent engineering
US6031848A (en) * 1997-05-07 2000-02-29 3Com Corporation Apparatus for an improved ISDN terminal adapter having baud rate unblocking and methods for use therein
US6366988B1 (en) * 1997-07-18 2002-04-02 Storactive, Inc. Systems and methods for electronic data storage management
US5894494A (en) * 1997-10-29 1999-04-13 Golden Bridge Technology, Inc. Parallel correlator architecture for synchronizing direct sequence spread-spectrum signals
US6237122B1 (en) * 1997-11-07 2001-05-22 Fujitsu Limited Semiconductor memory device having scan flip-flops
US5877742A (en) * 1997-12-11 1999-03-02 Klink; James Medical identification bracelet
US6178121B1 (en) * 1997-12-11 2001-01-23 Seiko Epson Corporation Semiconductor memory device, semiconductor device, and electronic apparatus using the semiconductor device
US6389427B1 (en) * 1998-02-20 2002-05-14 Redleaf Group, Inc. File system performance enhancement
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6189016B1 (en) * 1998-06-12 2001-02-13 Microsoft Corporation Journaling ordered changes in a storage volume
US6181609B1 (en) * 1998-09-17 2001-01-30 Nec Corporation Semiconductor memory device having circuit for controlling data-output timing
US6393582B1 (en) * 1998-12-10 2002-05-21 Compaq Computer Corporation Error self-checking and recovery using lock-step processor pair architecture
US6366926B1 (en) * 1998-12-31 2002-04-02 Computer Associates Think, Inc. Method and apparatus for the dynamic filtering and routing of events
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
US6526418B1 (en) * 1999-12-16 2003-02-25 Livevault Corporation Systems and methods for backing up data files
US6847984B1 (en) * 1999-12-16 2005-01-25 Livevault Corporation Systems and methods for backing up data files
US20020022982A1 (en) * 2000-01-04 2002-02-21 Elliot Cooperstone Method and system for remotely managing business and employee administration functions
US20060020586A1 (en) * 2000-03-03 2006-01-26 Michel Prompt System and method for providing access to databases via directories and other hierarchical structures and interfaces
US6839721B2 (en) * 2001-01-12 2005-01-04 Hewlett-Packard Development Company, L.P. Integration of a database into file management software for protecting, tracking, and retrieving data
US20030051026A1 (en) * 2001-01-19 2003-03-13 Carter Ernst B. Network surveillance and security system
US20030009552A1 (en) * 2001-06-29 2003-01-09 International Business Machines Corporation Method and system for network management with topology system providing historical topological views
US20030088372A1 (en) * 2001-11-02 2003-05-08 Caulfield David D Array calibration and quality assurance
US6993706B2 (en) * 2002-01-15 2006-01-31 International Business Machines Corporation Method, apparatus, and program for a state machine framework
US7039663B1 (en) * 2002-04-19 2006-05-02 Network Appliance, Inc. System and method for checkpointing and restarting an asynchronous transfer of data between a source and destination snapshot
US20040047354A1 (en) * 2002-06-07 2004-03-11 Slater Alastair Michael Method of maintaining availability of requested network resources, method of data storage management, method of data storage management in a network, network of resource servers, network, resource management server, content management server, network of video servers, video server, software for controlling the distribution of network resources
US20040010544A1 (en) * 2002-06-07 2004-01-15 Slater Alastair Michael Method of satisfying a demand on a network for a network resource, method of sharing the demand for resources between a plurality of networked resource servers, server network, demand director server, networked data library, method of network resource management, method of satisfying a demand on an internet network for a network resource, tier of resource serving servers, network, demand director, metropolitan video serving network, computer readable memory device encoded with a data structure for managing networked resources, method of making available computer network resources to users of a
US20040036716A1 (en) * 2002-06-12 2004-02-26 Jordahl Jena J. Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view
US7200233B1 (en) * 2002-12-10 2007-04-03 L-3 Communications Corporation System and method for fast data encryption/decryption using time slot numbering
US6839740B1 (en) * 2002-12-27 2005-01-04 Veritas Operating Corporation System and method for performing virtual device I/O operations
US7054913B1 (en) * 2002-12-27 2006-05-30 Veritas Operating Corporation System and method for performing virtual device I/O operations
US7028078B1 (en) * 2002-12-27 2006-04-11 Veritas Operating Corporation System and method for performing virtual device I/O operations
US20060026220A1 (en) * 2003-02-26 2006-02-02 Permabit, Inc. History preservation in a computer storage system
US20050021690A1 (en) * 2003-02-27 2005-01-27 Prasad Peddada System and method for communications between servers in a cluster
US20050001911A1 (en) * 2003-07-01 2005-01-06 Nikon Corporation Electronic still camera and system and program for same
US20050076066A1 (en) * 2003-10-07 2005-04-07 International Business Machines Corporation Method, system, and program for retaining versions of files
US7325159B2 (en) * 2004-02-04 2008-01-29 Network Appliance, Inc. Method and system for data recovery in a continuous data protection system
US20070094312A1 (en) * 2004-05-07 2007-04-26 Asempra Technologies, Inc. Method for managing real-time data history of a file system
US7363549B2 (en) * 2004-05-07 2008-04-22 Asempra Technologies, Inc. Method and system for automated, no downtime, real-time, continuous data protection
US20100031274A1 (en) * 2004-05-10 2010-02-04 Siew Yong Sim-Tang Method and system for real-time event journaling to provide enterprise data services
US7519870B1 (en) * 2004-06-08 2009-04-14 Asempra Technologies, Inc. Method and system for no downtime, initial data upload for real-time, continuous data protection
US7680834B1 (en) * 2004-06-08 2010-03-16 Bakbone Software, Inc. Method and system for no downtime resychronization for real-time, continuous data protection
US20060050970A1 (en) * 2004-09-08 2006-03-09 Sony Corporation Method and apparatus for transmitting a coded video signal
US20060064416A1 (en) * 2004-09-17 2006-03-23 Sim-Tang Siew Y Method and system for data reduction
US20060101384A1 (en) * 2004-11-02 2006-05-11 Sim-Tang Siew Y Management interface for a system that provides automated, real-time, continuous data protection
US7207224B2 (en) * 2005-06-10 2007-04-24 Brooks Automation, Inc. Wide-range combination vacuum gauge
US7689602B1 (en) * 2005-07-20 2010-03-30 Bakbone Software, Inc. Method of creating hierarchical indices for a distributed object system
US20070067278A1 (en) * 2005-09-22 2007-03-22 Gtess Corporation Data file correlation system and method

Cited By (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8650167B2 (en) 2004-09-17 2014-02-11 Dell Software Inc. Method and system for data reduction
US8375248B2 (en) 2005-07-20 2013-02-12 Quest Software, Inc. Method and system for virtual on-demand recovery
US8639974B1 (en) 2005-07-20 2014-01-28 Dell Software Inc. Method and system for virtual on-demand recovery
US20120266019A1 (en) * 2005-07-20 2012-10-18 Quest Software, Inc. Method and system for virtual on-demand recovery
US8429198B1 (en) * 2005-07-20 2013-04-23 Quest Software, Inc. Method of creating hierarchical indices for a distributed object system
US8365017B2 (en) * 2005-07-20 2013-01-29 Quest Software, Inc. Method and system for virtual on-demand recovery
US8972347B1 (en) 2007-03-30 2015-03-03 Dell Software Inc. Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8712970B1 (en) 2007-04-09 2014-04-29 Dell Software Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US20100332641A1 (en) * 2007-11-09 2010-12-30 Kulesh Shanmugasundaram Passive detection of rebooting hosts in a network
US9449015B1 (en) * 2008-12-15 2016-09-20 Open Invention Network Llc Method and system for providing storage checkpointing to a group of independent computer applications
US8880473B1 (en) * 2008-12-15 2014-11-04 Open Invention Network, Llc Method and system for providing storage checkpointing to a group of independent computer applications
US11487710B2 (en) 2008-12-15 2022-11-01 International Business Machines Corporation Method and system for providing storage checkpointing to a group of independent computer applications
US9032403B1 (en) 2010-05-06 2015-05-12 Dell Software Inc. Systems and methods for instant provisioning of virtual machine files
US8453145B1 (en) 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US9465642B1 (en) 2010-05-06 2016-10-11 Dell Software Inc. Systems and methods for instant provisioning of virtual machine files
US9454591B2 (en) * 2010-05-26 2016-09-27 International Business Machines Corporation Synchronization of sequential access storage components with backup catalog
US8266102B2 (en) * 2010-05-26 2012-09-11 International Business Machines Corporation Synchronization of sequential access storage components with backup catalog
US20110295797A1 (en) * 2010-05-26 2011-12-01 International Business Machines Corporation Synchronization of sequential access storage components with backup catalog
US20140074781A1 (en) * 2010-05-26 2014-03-13 International Business Machines Corporation Synchronization of sequential access storage components with backup catalog
US9547562B1 (en) 2010-08-11 2017-01-17 Dell Software Inc. Boot restore system for rapidly restoring virtual machine backups
US9645839B2 (en) 2010-10-27 2017-05-09 Microsoft Technology Licensing, Llc Stateful applications operating in a stateless cloud computing environment
WO2012057955A1 (en) 2010-10-27 2012-05-03 Microsoft Corporation Stateful applications operating in a stateless cloud computing environment
CN102521022A (en) * 2010-10-27 2012-06-27 微软公司 Stateful applications operating in a stateless cloud computing environment
US8458134B2 (en) 2011-03-30 2013-06-04 International Business Machines Corporation Near continuous space-efficient data protection
US8918362B2 (en) * 2011-05-23 2014-12-23 Microsoft Corporation Replication processes in a distributed storage environment
US20120303581A1 (en) * 2011-05-23 2012-11-29 Microsoft Corporation Replication processes in a distributed storage environment
US10019574B2 (en) 2011-12-22 2018-07-10 Intel Corporation Systems and methods for providing dynamic file system awareness on storage devices
US20130275479A1 (en) * 2011-12-22 2013-10-17 Paul J. Thadikaran Systems and methods for providing dynamic file system awareness on storage devices
US9270657B2 (en) 2011-12-22 2016-02-23 Intel Corporation Activation and monetization of features built into storage subsystems using a trusted connect service back end infrastructure
US9529805B2 (en) * 2011-12-22 2016-12-27 Intel Corporation Systems and methods for providing dynamic file system awareness on storage devices
US8930751B2 (en) 2012-04-24 2015-01-06 Microsoft Corporation Initializing replication in a virtual machine
US8839031B2 (en) 2012-04-24 2014-09-16 Microsoft Corporation Data consistency between virtual machines
CN102761602A (en) * 2012-06-05 2012-10-31 北京永洪商智科技有限公司 Hadoop-based mass data real-time analyzing and processing method
US9304998B2 (en) * 2012-12-19 2016-04-05 Microsoft Technology Licensing, Llc Main-memory database checkpointing
US20140172803A1 (en) * 2012-12-19 2014-06-19 Microsoft Corporation Main-memory database checkpointing
US10318648B2 (en) * 2012-12-19 2019-06-11 Microsoft Technology Licensing, Llc Main-memory database checkpointing
US20160078044A1 (en) * 2012-12-19 2016-03-17 Microsoft Technology Licensing, Llc Main-memory database checkpointing
US11467924B2 (en) * 2018-07-31 2022-10-11 Rubrik, Inc. Instant recovery of databases
US11675674B2 (en) 2018-07-31 2023-06-13 Rubrik, Inc. Instant recovery of databases
CN110489472A (en) * 2019-07-29 2019-11-22 北京恒赢智航科技有限公司 A kind of method for interchanging data and the unit management system using the exchange method

Also Published As

Publication number Publication date
US7680834B1 (en) 2010-03-16

Similar Documents

Publication Publication Date Title
US7680834B1 (en) Method and system for no downtime resychronization for real-time, continuous data protection
US8151140B2 (en) Method and system for virtual on-demand recovery for real-time, continuous data protection
US7363549B2 (en) Method and system for automated, no downtime, real-time, continuous data protection
US7519870B1 (en) Method and system for no downtime, initial data upload for real-time, continuous data protection
US7565661B2 (en) Method and system for real-time event journaling to provide enterprise data services
US8108429B2 (en) System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services
US7979404B2 (en) Extracting data changes and storing data history to allow for instantaneous access to and reconstruction of any point-in-time data
US8352523B1 (en) Recovering a file system to any point-in-time in the past with guaranteed structure, content consistency and integrity
US8712970B1 (en) Recovering a database to any point-in-time in the past with guaranteed data consistency
US9098455B2 (en) Systems and methods of event driven recovery management
US7921268B2 (en) Method and system for function-specific time-configurable replication of data
US8595191B2 (en) Systems and methods for performing data management operations using snapshots
US7596713B2 (en) Fast backup storage and fast recovery of data (FBSRD)
US20080010284A1 (en) Snapshot copy of data volume during data access

Legal Events

Date Code Title Description
AS Assignment

Owner name: BAKBONE SOFTWARE, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SIM-TANG, SIEW YONG;REEL/FRAME:023941/0807

Effective date: 20090721

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION