US20140149790A1 - Frameworks for providing backup functionalities to different applications - Google Patents

Frameworks for providing backup functionalities to different applications Download PDF

Info

Publication number
US20140149790A1
US20140149790A1 US14/158,637 US201414158637A US2014149790A1 US 20140149790 A1 US20140149790 A1 US 20140149790A1 US 201414158637 A US201414158637 A US 201414158637A US 2014149790 A1 US2014149790 A1 US 2014149790A1
Authority
US
United States
Prior art keywords
backup
application
data
plug
module
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
US14/158,637
Inventor
Keith J. Tenzer
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.)
NetApp Inc
Original Assignee
NetApp 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 NetApp Inc filed Critical NetApp Inc
Priority to US14/158,637 priority Critical patent/US20140149790A1/en
Assigned to NETAPP, INC. reassignment NETAPP, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: TENZER, KEITH J.
Publication of US20140149790A1 publication Critical patent/US20140149790A1/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1461Backup scheduling policy

Definitions

  • the present disclosure relates generally to storage systems.
  • the disclosure relates to frameworks for providing backup functionalities to different applications.
  • each of these data management systems is closely integrated with a particular application that is supported by the data management system.
  • a data management system that is adapted to manage data used by a messaging application can only work with this particular messaging application and not other applications.
  • the data management systems may not support many applications, especially applications that are not in popular use.
  • users create customized scripts.
  • many of these customized scripts may not be optimized, for example, to execute quickly or to use fewer resources.
  • many of these customized scripts need to be recreated because they are normally not communicated between different users. Therefore, the time spent to recreate scripts that may have already been created can result in a waste of resources.
  • the customized scripts may be stored in different storage locations. For example, a customized script may be located on one user's computer while another customized script may be located on another user's computer. The storage of the scripts in different locations often makes the scripts difficult to access and share between users.
  • frameworks can provide backup functionalities to different applications.
  • such frameworks can incorporate various plug-in modules that are adapted to interface with different applications.
  • a framework can include a plug-in module that is adapted to interface with a particular database application.
  • the same framework can also include a different plug-in module that is adapted to interface with, for example, a messaging application.
  • a system with this framework simply selects an appropriate plug-in module adapted to interface with this particular application. For example, before a backup can be created, the application is quiesced to place the application in a state that is ready to accept the backing up of the data. Accordingly, as part of the interface, the selected plug-in module has scripts that may be executed to quiesce the particular application. After the particular application is quiesced using this selected plug-in module, the backing up of the data or other backup functionalities may then be initiated.
  • this framework can incorporate different plug-in modules that are adapted to interface with different applications
  • a single system with this framework may, for example, interface a number of different existing applications and also has the flexibility to accommodate new applications if the appropriate plug-in modules are provided.
  • a single system may provide backup functionalities to different applications.
  • the plug-in modules may also, for example, provide a uniform standard for the scripts because the same plug-in module (or scripts in included in the module) may be used by different users or systems to interface with a particular application.
  • FIG. 1 depicts a block diagram of a storage system, consistent with one of many embodiments of the present invention
  • FIG. 2 depicts a block diagram of the various modules that may be included in one or more processing systems that provide various backup functionalities to different applications, in accordance with an embodiment of the present invention
  • FIG. 3 depicts a flow diagram of a general overview of a method, in accordance with an embodiment, to provide backup functionalities
  • FIG. 4 depicts a flow diagram of a general overview of an another method, in accordance with an alternate embodiment, to provide backup functionalities
  • FIG. 5 depicts a block diagram of an example of a framework, in accordance with an embodiment, for providing backup functionalities to different applications
  • FIG. 7 depicts an example of a profile in the form of a control file, in accordance with an embodiment of the present invention.
  • FIG. 8 depicts a block diagram of a machine in the example form of a processing system within which may be executed a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein.
  • the application server 23 executes or hosts one or more applications 81 .
  • an “application” refers to a program or piece of software designed to perform a specific function.
  • applications 81 include database management systems, message servers, collaboration applications, process management applications, document management applications, and other applications.
  • applications 81 hosted on the application server 23 transmit read and write requests to, for example, the storage server 22 .
  • the data communicated in the I/O operations is transferred between the storage server 22 and the application server 23 by a computer network communication link 28 , which also connects the application server 23 to the clients 24 .
  • a variety of computer network protocols are used to transfer data between the servers 22 and 23 and the clients 24 over the communication link 28 . These protocols include, for example, Fibre Channel Protocol (FCP), Ethernet, and Internet Small Computer System Interface Protocol (iSCSI).
  • FCP Fibre Channel Protocol
  • iSCSI Internet Small Computer System Interface Protocol
  • the application server 23 may also be configured to execute or host a backup integration engine module 50 .
  • the backup integration engine module 50 is included in a framework that provides various backup functionalities to different applications.
  • a “backup functionality,” refers to any suitable functionality that results in or operates on a data backup, which refers to a copy of the data.
  • An example of a backup functionality is a backing up of data.
  • Another example of a backup functionality includes the restoration of a data backup.
  • a “backing up” of or “to backup” data generally refers to the process of creating a copy of the data (or a data backup).
  • the framework is adapted to incorporate or interact with various plug-in modules to interface with each of the applications 81 .
  • the storage server 22 is particularly configured to perform I/O operations between the servers 22 and 23 and the data storage devices 26 , and to perform various data management functions on the data storage devices 26 , among other operations.
  • the mass storage adapter 38 is connected to a data bus 39 , and the mass storage adapter 38 receives the I/O commands from the storage server 22 .
  • the mass storage adapter 38 causes the data storage devices 26 to act and respond accordingly, either by executing a read command in which data previously written or stored on the data storage devices 26 by the applications 81 is read and supplied to the storage server 22 , or by executing a write command in which data from the applications 81 is written to or stored on the data storage devices 26 .
  • Each data storage device 26 includes a controller 42 that causes the data storage device 26 to perform in accordance with normal data storage functionalities and to perform I/O commands delivered to it by the mass storage adapter 38 .
  • the data storage devices 26 depicted in FIG. 1 are embodied in separate devices from the servers 22 and 23 and the clients 24 . However, the data storage devices 26 may alternatively be embodied within the storage server 22 , application server 23 , and/or each of the clients 24 .
  • FIG. 2 depicts a block diagram of the various modules that may be included in one or more processing systems 200 and 202 that provide various backup functionalities to different applications, in accordance with an embodiment of the present invention.
  • the processing systems 200 and/or 202 may be deployed in the form of, for example, a network attached storage device, a server computer, a personal computer, a laptop computer, a tablet personal computer, and/or other processing systems.
  • the processing systems 200 and 202 may be included in a storage environment, such as the storage system 20 depicted in FIG. 1 .
  • the processing systems 200 and 202 may be used to implement computer programs, logic, applications, methods, processes, or software to backup data associated with different applications, as described in more detail below.
  • the processing system 200 and other processing system 202 execute an operating system 201 and a network storage operating system 234 , respectively.
  • the operating system 201 manages various data, hardware resources, and software processes executed on the processing system 200 . Some processes and data include applications 203 - 205 , plug-in modules 212 - 216 , a profile 220 , a backup integration engine module 50 , and a graphic user interface (GUI) module 224 .
  • GUI graphic user interface
  • the network storage operating system 234 also manages various data, hardware resources, and software processes executed on the processing system 202 . However, the network storage operating system 234 is specially optimized for storage functions, such as performing I/O commands and providing backup functionalities. Some of these software processes managed by the network storage operating system 234 include backup applications 250 - 253 designed to provide backup functionalities.
  • the applications 203 - 205 access different data, which, as discussed above, may be stored at different locations from the processing system 200 .
  • each application 203 , 204 , or 205 has or operates on its own set of data.
  • the data may include structured data (e.g., data stored in database tables and arrays) and unstructured data (e.g., an image file, a binary file, and a natural language text file).
  • plug-in module such as plug-in module 212 , 213 , 214 , 215 , or 216 , refers to a program that interfaces with a host application (e.g., backup integration engine module 50 ) to extend, modify, and/or enhance the capabilities or functionalities of the host application.
  • the plug-in modules 212 - 216 effectively depend on the host application and may not function independently without the host application.
  • Each plug-in module 212 , 213 , 214 , 215 , or 216 is particularly adapted or configured to interface with one or more applications 203 , 204 , and 205 .
  • the profile 220 includes various settings, such as the selection of the appropriate plug-in module 212 , 213 , 214 , 215 , and/or 216 .
  • the GUI module 224 provides an interface to input various parameters and scripts into the profile 220 , as also described in more detail below.
  • the system depicted in FIG. 2 may include fewer, more, or different modules, applications, and processing systems apart from those shown in FIG. 2 .
  • the backup integration engine module 50 , the plug-in modules 212 - 216 , and backup applications 250 - 253 may be executed or hosted on a single processing system, such as the storage server processing system 22 depicted in FIG. 1 .
  • the GUI module 224 may be excluded because the various data included in a profile 220 may be inputted using a text editor, rather than through a GUI as provided by the GUI module 224 .
  • FIG. 3 depicts a flow diagram of a general overview of a method 300 , in accordance with an embodiment, to provide backup functionalities.
  • the method 300 may be implemented by the backup integration engine module 50 and employed in the processing system 200 of FIG. 2 .
  • a framework is provided that includes a variety of plug-in modules, with each module adapted to interface with one or more applications.
  • a backup functionality is to be provided to a particular application. For example, a backup of data associated with a particular application can be created. In another example, a data backup associated with a particular application can be restored.
  • a plug-in module that is adapted to interface with this particular application is selected for activation at 302 .
  • the backup integration engine module for example, can automatically select the appropriate plug-in module for activation based on predefined instructions. In one embodiment, as explained in more detail below, the selection may be specified or defined in a profile.
  • the application is quiesced using the plug-in module at 304 .
  • quiescing an application is to place the application in a state ready to accept a backup functionality.
  • an application is quiesced when it is placed in a special mode that allows the backup functionality to be implemented. It should be appreciated that the state for one application may be different for another application. As a result, quiescing an application may be unique to each application. Accordingly, there is a variety of different techniques to quiesce an application. In one example of quiescing a database management system, a connection is first made to the database management system.
  • the database management system may be instructed to place all its database tables, which store the data, into read-only mode where data can be read but not written to the database tables.
  • This placement of the database tables in read-only mode may, for example, prevent data corruption during a backup process.
  • Other examples of quiescing the application include preventing users from connecting to the application, locking all users out of a database table or other structured data, disallowing new resources from being made available, preventing any modification of data, disabling the application itself (e.g., shutdown application and place application in sleep mode), allowing current active transactions to complete and then flushing modified buffers from cache to another database table, reinitiating or restarting an application, modifying a file system, and other operations.
  • the backup functionality is initiated at 306 .
  • one or more backup applications may be selected to provide this backup functionality. Accordingly, in one embodiment, the initiation of the backup functionality involves the execution of one or more of these backup applications, as explained in more detail below.
  • the backup integration engine module itself or even the plug-in modules included in the framework may directly provide this backup functionality.
  • FIG. 4 depicts a flow diagram of a general overview of another method 350 , in accordance with an alternate embodiment, to provide backup functionalities.
  • the method 350 may be implemented by the backup integration engine module 50 and employed in the processing system 200 of FIG. 2 .
  • multiple plug-in modules are accessed from a framework where the plug-in modules are adapted to interface with different applications. For example, a plug-in module is adapted to interface with a particular application while another plug-in module is adapted to interface with a different application.
  • a profile is also accessed at 354 .
  • This profile may, for example, be a control file (e.g., a text file) that can be used to customize the behavior of a backup integration engine module and/or the backup process.
  • This profile includes various parameters, commands, instructions, and/or other data.
  • the profile specifies activation of at least one of the plug-in modules to interface with a particular application where a backup functionality is to be provided to this particular application.
  • the application is then quiesced at 356 using the plug-in application and thereafter, the backup functionality is initiated at 358 after the application has been quiesced.
  • Each plug-in module 412 , 413 , 414 , or 415 includes one or more scripts that quiesce one of the applications 401 , 402 , or 403 .
  • a “script” refers to a program with one or more instructions, commands, parameters, and/or other data that control one or more applications 401 - 403 .
  • a script may, for example, refer to a single command, a single instruction, a set of commands, or a set of instructions.
  • the backup integration engine module 50 executes a particular script included in the appropriate plug-in module 412 , 413 , 414 , or 415 that, when executed, quiesces an application 401 , 402 , or 403 .
  • the backup integration engine module 50 selects activation of the DBMS plug-in module 412 and quiesces the DBMS 401 by executing the script included in the DBMS module 412 .
  • the backup integration engine module 50 selects activation of the message server plug-in module 413 and quiesces the email message server 402 by executing the script included in the message server plug-in module 413 .
  • the selection of the particular plug-in module 412 , 413 , 414 , or 415 is specified in the profile 220 .
  • the profile 220 may, for example, may be automatically read by the backup integration engine module 50 that can be used to customize the behavior of the backup integration engine module 50 and/or the backup process.
  • the user may input or specify data in the profile 220 through the use of a GUI generated by the GUI module 224 .
  • An example of this GUI may include checkboxes, text boxes, buttons, or other input mechanisms to accept the input of data included in the profile 220 .
  • the profile 220 may also include other instructions, commands, parameters, and/or other data to define other functionalities, as explained in more detail below.
  • the backup integration engine module 50 After a particular application 401 , 402 , or 403 is quiesced, the backup integration engine module 50 initiates a backing up of the data associated with the particular application 401 , 402 , or 403 . It should be appreciated that there are a variety of different types of backup, such as a snapshot, a clone, and a mirror, and the backup integration engine module 50 can select one or more backup applications 450 - 452 to create these different types of backup or provide other backup functionalities.
  • the snapshot backup application 450 can take a snapshot of the data associated with one or more applications 401 - 403 .
  • a snapshot is an instant copy within a file system. Such a snapshot can practically, for example, copy large amounts of data in a few seconds. More particularly, a snapshot is a space conservative, point-in-time, and read-only image of data accessible by name that provides a consistent image of that data (such as a storage system) at some previous time.
  • a snapshot is a point-in-time representation of a storage element, such as an active file system, file or database, stored on a persistent storage device and having a name or other identifier that distinguishes it from other snapshots taken at other points in time.
  • a snapshot is an active file system image that contains complete information about the file system, including all suitable metadata.
  • the cloning backup application 451 creates a clone of the data associated with one or more applications 401 - 403 .
  • a “clone” is a modifiable copy created from a snapshot. It should be appreciated that since the modifiable copy is created from a snapshot, the modifiable copy may therefore a near-instantaneous, space efficient, and, in an example embodiment, a writable “clone” of the snapshot, which shares the same physical blocks with the baseline file system.
  • the snapshot and the modifiable copy diverge (e.g., due to continuing updates in the production database or development changes to a modifiable copy of the database), the divergent blocks are separately stored. Since the creation of a modifiable copy from a snapshot is near instantaneous, such replication technique may result in minimal downtime of the accessibility of the data.
  • the backup integration engine module 50 may execute multiple backup applications 450 - 452 either simultaneously or one after another. For example, as discussed above, both the clone and mirror of data are based on a snapshot. Thus, to clone the data, the backup integration engine module 50 executes the snapshot backup application 450 to take a snapshot of the data. Afterwards, the backup integration engine module 50 executes the cloning backup application 451 to create a clone of the data based on the snapshot. In another example, after the execution of the snapshot backup application 450 , the backup integration engine module 50 may execute the mirroring backup application 452 to create a mirror of the data on a secondary storage system based on the snapshot of the data.
  • the framework 400 can provide backup functionalities to different applications 401 - 403 .
  • the framework 400 can, for example, accommodate new or additional applications different from the applications 401 - 403 depicted in FIG. 5 with the addition of new plug-in modules that are adapted to interface with these new or additional applications.
  • FIG. 6 depicts a flow diagram of a detailed method 500 , in accordance with specific embodiment, for backing up of data.
  • the detailed method 500 may be implemented by the backup integration engine module 50 and employed in the processing system 200 of FIG. 2 .
  • a profile is initially accessed at 502 .
  • the access of a particular profile may include, for example, reading a control file.
  • This profile specifies the selection of one or more plug-in modules to interface with their respective applications.
  • the selected plug-in module includes at least one script (or “first” script) that quiesces an application.
  • the plug-in module may include another script (or “second” script) that unquiesces the application.
  • “unquiescing” an application refers to reverting a state of the application to a previous state before quiescing the application. As an example, such a previous state may refer to an application's normal mode or state of operation.
  • the first script from the selected plug-in module is then executed at 504 to quiesce the application and afterwards, one or more backup applications may be executed at 506 to backup the data.
  • the profile may define or specify a particular backup application to execute.
  • the selection of the backup application may be predefined by, for example, the backup integration engine module.
  • FIG. 7 depicts an example of a profile 600 in the form of a control file, in accordance with an embodiment of the present invention.
  • the profile 600 includes various parameters, commands, instructions, and other data that define the settings of a backup process (or the backing up of data).
  • the profile 600 may also include or specify a variety of other settings.
  • the portion 602 of profile 600 includes various configurations and parameters used in the backing up of data, such as volumes, port numbers, passwords, and retention policies.
  • the portion 602 also defines the various backup applications that may be activated or inactivated in the backup process and also defines the order of execution of the backup applications.
  • portions 605 and 606 define the various parameters for each different plug-in module.
  • portion 605 defines the various settings for a plug-in module that is adapted to interface with an ORACLE database management system.
  • portion 606 defines the various settings for a plug-in module that is adapted to interface with a MYSQL database management system.
  • the profile 600 may also define additional commands or instructions that may be executed at any suitable stage during the backup process.
  • portion 603 of the profile 600 includes a set of commands (or “pre-commands”) that is executed before initiation of the backup process (e.g., before execution of the backup applications).
  • portion 604 of the profile 600 includes another set of commands (or “post commands”) that is executed after a completion of the backup process.
  • the profile 600 may also include additional commands (not shown) that are executed during the backup process (e.g., executed in parallel with the execution of the backup applications). It should be appreciated that these commands (pre-commands, post commands, or other commands) may, for example, be independent of the plug-in modules and/or backup applications.
  • the profile 600 may include commands and instructions that are not included in the plug-in modules and/or backup applications.
  • the profile 600 may, in one example, allow a user to customize and define a unique backup process.
  • FIG. 8 depicts a block diagram of a machine in the example form of a processing system 200 within which may be executed a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein.
  • the machine operates as a standalone device or may be connected (e.g., networked) to other machines.
  • the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
  • the machine is capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
  • the example of the processing system 200 includes a processor 702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 704 (e.g., random access memory), and static memory 706 (e.g., static random-access memory), which communicate with each other via bus 708 .
  • the processing system 200 may further include video display unit 710 (e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)).
  • video display unit 710 e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)
  • the processing system 200 also includes an alphanumeric input device 712 (e.g., a keyboard), a user interface (UI) navigation device 714 (e.g., a mouse), a disk drive unit 716 , a signal generation device 718 (e.g., a speaker), and a network interface device 720 .
  • an alphanumeric input device 712 e.g., a keyboard
  • UI user interface
  • disk drive unit 716 e.g., a disk drive unit
  • signal generation device 718 e.g., a speaker
  • a network interface device 720 e.g., a network interface device
  • the disk drive unit 716 (a type of non-volatile memory storage) includes a machine-readable medium 722 on which is stored one or more sets of data structures and instructions 724 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein.
  • the data structures and instructions 724 may also reside, completely or at least partially, within the main memory 704 and/or within the processor 702 during execution thereof by processing system 200 , with the main memory 704 and processor 702 also constituting machine-readable, tangible media.
  • the data structures and instructions 724 may further be transmitted or received over a computer network 750 via network interface device 720 utilizing any one of a number of well-known transfer protocols (e.g., HyperText Transfer Protocol (HTTP)).
  • HTTP HyperText Transfer Protocol
  • Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules.
  • a hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner.
  • one or more computer systems e.g., the processing system 200
  • one or more hardware modules of a computer system e.g., a processor 702 or a group of processors
  • software e.g., an application or application portion
  • a hardware module may be implemented mechanically or electronically.
  • a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations.
  • a hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor 702 or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
  • the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein.
  • hardware modules are temporarily configured (e.g., programmed)
  • each of the hardware modules need not be configured or instantiated at any one instance in time.
  • the hardware modules comprise a general-purpose processor 702 configured using software
  • the general-purpose processor 702 may be configured as respective different hardware modules at different times.
  • Software may accordingly configure a processor 702 , for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
  • Modules can provide information to, and receive information from, other modules.
  • the described modules may be regarded as being communicatively coupled.
  • communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the modules.
  • communications between such modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple modules have access.
  • one module may perform an operation, and store the output of that operation in a memory device to which it is communicatively coupled.
  • a further module may then, at a later time, access the memory device to retrieve and process the stored output.
  • Modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
  • processors 702 may be temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors 702 may constitute processor-implemented modules that operate to perform one or more operations or functions.
  • the modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
  • the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors 702 or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors 702 , not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors 702 may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors 702 may be distributed across a number of locations.

Abstract

Example embodiments provide various techniques for providing a backup functionality to a particular application. In one example, a plug-in module is selected for activation from a number of different plug-in modules. This selected plug-in module is adapted to interface with the particular application. It should be noted that each plug-in module is adapted to interface with a different application. The particular application is quiesced using the selected plug-in module. After the application has been quiesced, the backup functionality is initiated.

Description

    RELATED APPLICATION
  • This application is a Continuation of U.S. patent application Ser. No. 12/765,231, entitled “FRAMEWORKS FOR PROVIDING BACKUP FUNCTIONALITIES TO DIFFERENT APPLICATIONS”, filed Apr. 22, 2010, now U.S. Pat. No. 8,635,189, issued Jan. 21, 2014; the aforementioned priority application being hereby incorporated by reference in its entirety for all purposes.
  • FIELD
  • The present disclosure relates generally to storage systems. In an embodiment, the disclosure relates to frameworks for providing backup functionalities to different applications.
  • BACKGROUND
  • There are many specialized data management systems that provide various data management functionalities, such as the automation of data backup and restoration of data. Typically, each of these data management systems is closely integrated with a particular application that is supported by the data management system. For example, a data management system that is adapted to manage data used by a messaging application can only work with this particular messaging application and not other applications.
  • However, it should be appreciated that the data management systems may not support many applications, especially applications that are not in popular use. To provide data management functionalities to such unsupported applications, users create customized scripts. Typically, there is no uniformity between scripts created by different users for the same functionality and accordingly, many of these customized scripts may not be optimized, for example, to execute quickly or to use fewer resources. Furthermore, many of these customized scripts need to be recreated because they are normally not communicated between different users. Therefore, the time spent to recreate scripts that may have already been created can result in a waste of resources.
  • Additionally, the customized scripts may be stored in different storage locations. For example, a customized script may be located on one user's computer while another customized script may be located on another user's computer. The storage of the scripts in different locations often makes the scripts difficult to access and share between users.
  • SUMMARY
  • Generally, examples of frameworks are provided that can provide backup functionalities to different applications. In particular, such frameworks can incorporate various plug-in modules that are adapted to interface with different applications. For example, a framework can include a plug-in module that is adapted to interface with a particular database application. The same framework can also include a different plug-in module that is adapted to interface with, for example, a messaging application.
  • To provide a backup functionality to a particular application, a system with this framework simply selects an appropriate plug-in module adapted to interface with this particular application. For example, before a backup can be created, the application is quiesced to place the application in a state that is ready to accept the backing up of the data. Accordingly, as part of the interface, the selected plug-in module has scripts that may be executed to quiesce the particular application. After the particular application is quiesced using this selected plug-in module, the backing up of the data or other backup functionalities may then be initiated.
  • Given that this framework can incorporate different plug-in modules that are adapted to interface with different applications, a single system with this framework may, for example, interface a number of different existing applications and also has the flexibility to accommodate new applications if the appropriate plug-in modules are provided. As such, a single system may provide backup functionalities to different applications. The plug-in modules may also, for example, provide a uniform standard for the scripts because the same plug-in module (or scripts in included in the module) may be used by different users or systems to interface with a particular application.
  • BRIEF DESCRIPTION OF DRAWINGS
  • The present disclosure is illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
  • FIG. 1 depicts a block diagram of a storage system, consistent with one of many embodiments of the present invention;
  • FIG. 2 depicts a block diagram of the various modules that may be included in one or more processing systems that provide various backup functionalities to different applications, in accordance with an embodiment of the present invention;
  • FIG. 3 depicts a flow diagram of a general overview of a method, in accordance with an embodiment, to provide backup functionalities;
  • FIG. 4 depicts a flow diagram of a general overview of an another method, in accordance with an alternate embodiment, to provide backup functionalities;
  • FIG. 5 depicts a block diagram of an example of a framework, in accordance with an embodiment, for providing backup functionalities to different applications;
  • FIG. 6 depicts a flow diagram of a detailed method, in accordance with alternative specific embodiment, for backing up of data;
  • FIG. 7 depicts an example of a profile in the form of a control file, in accordance with an embodiment of the present invention; and
  • FIG. 8 depicts a block diagram of a machine in the example form of a processing system within which may be executed a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein.
  • DESCRIPTION OF EXAMPLE EMBODIMENTS
  • The description that follows includes illustrative systems, methods, techniques, instruction sequences, and computing machine program products that embody the present invention. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to one skilled in the art that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures and techniques have not been shown in detail.
  • FIG. 1 depicts a block diagram of a storage system 20, consistent with one of many embodiments of the present invention. The storage system 20 includes a storage server processing system 22 (or storage server 22), an application server processing system 23 (or application server 23), and multiple client processing systems 24 (each a “client”). The servers 22 and 23 communicate data between data storage devices 26 and clients 24 in input/output (I/O) operations. Generally, the servers 22 and 23 and clients 24 function in a server-client mass data storage communication relationship with the data storage devices 26.
  • In one example, the application server 23 executes or hosts one or more applications 81. As used herein, an “application” refers to a program or piece of software designed to perform a specific function. Examples of applications 81 include database management systems, message servers, collaboration applications, process management applications, document management applications, and other applications. In I/O operations, applications 81 hosted on the application server 23 transmit read and write requests to, for example, the storage server 22. The data communicated in the I/O operations is transferred between the storage server 22 and the application server 23 by a computer network communication link 28, which also connects the application server 23 to the clients 24. It should be appreciated that a variety of computer network protocols are used to transfer data between the servers 22 and 23 and the clients 24 over the communication link 28. These protocols include, for example, Fibre Channel Protocol (FCP), Ethernet, and Internet Small Computer System Interface Protocol (iSCSI).
  • The application server 23 may also be configured to execute or host a backup integration engine module 50. In general, the backup integration engine module 50 is included in a framework that provides various backup functionalities to different applications. A “backup functionality,” refers to any suitable functionality that results in or operates on a data backup, which refers to a copy of the data. An example of a backup functionality is a backing up of data. Another example of a backup functionality includes the restoration of a data backup. As used herein, a “backing up” of or “to backup” data generally refers to the process of creating a copy of the data (or a data backup). As explained in more detail below, the framework is adapted to incorporate or interact with various plug-in modules to interface with each of the applications 81.
  • The storage server 22 is particularly configured to perform I/O operations between the servers 22 and 23 and the data storage devices 26, and to perform various data management functions on the data storage devices 26, among other operations. The mass storage adapter 38 is connected to a data bus 39, and the mass storage adapter 38 receives the I/O commands from the storage server 22. In response, the mass storage adapter 38 causes the data storage devices 26 to act and respond accordingly, either by executing a read command in which data previously written or stored on the data storage devices 26 by the applications 81 is read and supplied to the storage server 22, or by executing a write command in which data from the applications 81 is written to or stored on the data storage devices 26.
  • It should be noted that groups of data storage devices 26 are connected by a separate bus 40 to the mass storage adapter 38. Each data storage device 26 includes a controller 42 that causes the data storage device 26 to perform in accordance with normal data storage functionalities and to perform I/O commands delivered to it by the mass storage adapter 38. The data storage devices 26 depicted in FIG. 1 are embodied in separate devices from the servers 22 and 23 and the clients 24. However, the data storage devices 26 may alternatively be embodied within the storage server 22, application server 23, and/or each of the clients 24.
  • FIG. 2 depicts a block diagram of the various modules that may be included in one or more processing systems 200 and 202 that provide various backup functionalities to different applications, in accordance with an embodiment of the present invention. It should be appreciated that the processing systems 200 and/or 202 may be deployed in the form of, for example, a network attached storage device, a server computer, a personal computer, a laptop computer, a tablet personal computer, and/or other processing systems. The processing systems 200 and 202 may be included in a storage environment, such as the storage system 20 depicted in FIG. 1. Referring to FIG. 2, in various embodiments, the processing systems 200 and 202 may be used to implement computer programs, logic, applications, methods, processes, or software to backup data associated with different applications, as described in more detail below.
  • In the embodiment depicted in FIG. 2, the processing system 200 and other processing system 202 execute an operating system 201 and a network storage operating system 234, respectively. The operating system 201 manages various data, hardware resources, and software processes executed on the processing system 200. Some processes and data include applications 203-205, plug-in modules 212-216, a profile 220, a backup integration engine module 50, and a graphic user interface (GUI) module 224. Similarly, the network storage operating system 234 also manages various data, hardware resources, and software processes executed on the processing system 202. However, the network storage operating system 234 is specially optimized for storage functions, such as performing I/O commands and providing backup functionalities. Some of these software processes managed by the network storage operating system 234 include backup applications 250-253 designed to provide backup functionalities.
  • The applications 203-205 access different data, which, as discussed above, may be stored at different locations from the processing system 200. In particular, each application 203, 204, or 205 has or operates on its own set of data. The data may include structured data (e.g., data stored in database tables and arrays) and unstructured data (e.g., an image file, a binary file, and a natural language text file).
  • Given that each application 203, 204, or 205 functions differently, embodiments of the present invention provide frameworks that can incorporate or interact with various plug-in modules 212-216. A “plug-in module,” such as plug-in module 212, 213, 214, 215, or 216, refers to a program that interfaces with a host application (e.g., backup integration engine module 50) to extend, modify, and/or enhance the capabilities or functionalities of the host application. The plug-in modules 212-216 effectively depend on the host application and may not function independently without the host application. Each plug-in module 212, 213, 214, 215, or 216 is particularly adapted or configured to interface with one or more applications 203, 204, and 205.
  • The backup integration engine module 50 is adapted to interface with all plug-in modules 212-216 and further adapted to select or load the appropriate plug-in module 212, 213, 214, 215, and/or 216 to interface with a particular application 203, 204, or 205. Additionally, the backup integration engine module 50 may also provide backup functionalities. With the plug-in modules 212-216 being able to interface with different applications 203-205, such interface enables backing up of various data accessed by the different applications 203-205. As explained in more detail below, the profile 220 includes various settings, such as the selection of the appropriate plug-in module 212, 213, 214, 215, and/or 216. The GUI module 224 provides an interface to input various parameters and scripts into the profile 220, as also described in more detail below.
  • Still referring to FIG. 2, to provide the backup functionalities, the backup integration engine module 50 may select or load one or more backup applications 250-253, which are managed by the network storage operating system 234, that provide various backup functionalities. Examples of backup applications 250-253 will be described in more detail below. The backup integration engine module 50 can communicate with each of the backup applications 250 through an application programming interface (API) 290. In one example, the API 290 may provide for marshalling of API name and input parameters using XML (eXtensible markup language), with input parameters being typed and the contents of the XML being independent of the programming language and architecture on both client and server sides of a transaction.
  • It should be appreciated that in other embodiments, the system depicted in FIG. 2 may include fewer, more, or different modules, applications, and processing systems apart from those shown in FIG. 2. For example, in an alternative embodiment, the backup integration engine module 50, the plug-in modules 212-216, and backup applications 250-253 may be executed or hosted on a single processing system, such as the storage server processing system 22 depicted in FIG. 1. In yet another embodiment, the GUI module 224 may be excluded because the various data included in a profile 220 may be inputted using a text editor, rather than through a GUI as provided by the GUI module 224.
  • FIG. 3 depicts a flow diagram of a general overview of a method 300, in accordance with an embodiment, to provide backup functionalities. In an embodiment, the method 300 may be implemented by the backup integration engine module 50 and employed in the processing system 200 of FIG. 2. A framework is provided that includes a variety of plug-in modules, with each module adapted to interface with one or more applications. Here, a backup functionality is to be provided to a particular application. For example, a backup of data associated with a particular application can be created. In another example, a data backup associated with a particular application can be restored. As depicted in FIG. 3, a plug-in module that is adapted to interface with this particular application is selected for activation at 302. The backup integration engine module, for example, can automatically select the appropriate plug-in module for activation based on predefined instructions. In one embodiment, as explained in more detail below, the selection may be specified or defined in a profile.
  • After a particular plug-in module is selected for activation, the application is quiesced using the plug-in module at 304. As used herein, “quiescing” an application is to place the application in a state ready to accept a backup functionality. In particular, an application is quiesced when it is placed in a special mode that allows the backup functionality to be implemented. It should be appreciated that the state for one application may be different for another application. As a result, quiescing an application may be unique to each application. Accordingly, there is a variety of different techniques to quiesce an application. In one example of quiescing a database management system, a connection is first made to the database management system. Thereafter, the database management system may be instructed to place all its database tables, which store the data, into read-only mode where data can be read but not written to the database tables. This placement of the database tables in read-only mode may, for example, prevent data corruption during a backup process. Other examples of quiescing the application include preventing users from connecting to the application, locking all users out of a database table or other structured data, disallowing new resources from being made available, preventing any modification of data, disabling the application itself (e.g., shutdown application and place application in sleep mode), allowing current active transactions to complete and then flushing modified buffers from cache to another database table, reinitiating or restarting an application, modifying a file system, and other operations.
  • After the application has been quiesced, the backup functionality is initiated at 306. As discussed above, one or more backup applications may be selected to provide this backup functionality. Accordingly, in one embodiment, the initiation of the backup functionality involves the execution of one or more of these backup applications, as explained in more detail below. In an alternate embodiment, the backup integration engine module itself or even the plug-in modules included in the framework may directly provide this backup functionality.
  • FIG. 4 depicts a flow diagram of a general overview of another method 350, in accordance with an alternate embodiment, to provide backup functionalities. Similarly, in an embodiment, the method 350 may be implemented by the backup integration engine module 50 and employed in the processing system 200 of FIG. 2. As depicted at 352 of FIG. 4, multiple plug-in modules are accessed from a framework where the plug-in modules are adapted to interface with different applications. For example, a plug-in module is adapted to interface with a particular application while another plug-in module is adapted to interface with a different application.
  • A profile is also accessed at 354. This profile may, for example, be a control file (e.g., a text file) that can be used to customize the behavior of a backup integration engine module and/or the backup process. This profile includes various parameters, commands, instructions, and/or other data. Here, the profile specifies activation of at least one of the plug-in modules to interface with a particular application where a backup functionality is to be provided to this particular application. The application is then quiesced at 356 using the plug-in application and thereafter, the backup functionality is initiated at 358 after the application has been quiesced.
  • FIG. 5 depicts a block diagram of an example of a framework 400, in accordance with an embodiment, for providing backup functionalities to different applications. In this example, the software processes and/or services managed by the operating system 201 include applications 401-403 (e.g., a database management system 401, an email message server application 402, and a document management application 403) and various plug-in modules 412-415 adapted to interface with the applications (e.g., a database management system plug-in module 412, a message server plug-in module 413, a document management plug-in module 414, and a process management plug-in module 415). The framework 400 also includes a profile 220 and a GUI module 224. The network storage operating system 234 includes backup applications 450-452 that provide various backup functionalities. Examples of such backup applications include snapshot backup application 450, cloning backup application 451, and mirroring backup application 452.
  • For example, before a backing up of data is initiated, one or more applications 401-403 are quiesced. In this example, each plug-in module 412, 413, 414, or 415 is adapted to interface with a particular application 401, 402, or 403. In particular, the DBMS plug-in module 412 is adapted to interface with the DBMS 401. The message server plug-in module 413 is adapted to interface with the email message server 402. The document management plug-in module 414 is adapted to interface with the document management application 403.
  • Each plug-in module 412, 413, 414, or 415 includes one or more scripts that quiesce one of the applications 401, 402, or 403. As used herein, a “script” refers to a program with one or more instructions, commands, parameters, and/or other data that control one or more applications 401-403. A script may, for example, refer to a single command, a single instruction, a set of commands, or a set of instructions. To quiesce one application 401, 402, or 403, the backup integration engine module 50 executes a particular script included in the appropriate plug-in module 412, 413, 414, or 415 that, when executed, quiesces an application 401, 402, or 403. For example, before initiating a backing up of data associated with the DBMS 401, the backup integration engine module 50 selects activation of the DBMS plug-in module 412 and quiesces the DBMS 401 by executing the script included in the DBMS module 412. In another example, before initiating a backing up of data associated with the email message server 402, the backup integration engine module 50 selects activation of the message server plug-in module 413 and quiesces the email message server 402 by executing the script included in the message server plug-in module 413.
  • In one embodiment, the selection of the particular plug-in module 412, 413, 414, or 415 is specified in the profile 220. Here, the profile 220 may, for example, may be automatically read by the backup integration engine module 50 that can be used to customize the behavior of the backup integration engine module 50 and/or the backup process. The user may input or specify data in the profile 220 through the use of a GUI generated by the GUI module 224. An example of this GUI may include checkboxes, text boxes, buttons, or other input mechanisms to accept the input of data included in the profile 220. In addition to instructions or other data specifying the selection of an appropriate plug-in module 412, 413, 414, or 415 to interface with one or more applications 401-403, the profile 220 may also include other instructions, commands, parameters, and/or other data to define other functionalities, as explained in more detail below.
  • After a particular application 401, 402, or 403 is quiesced, the backup integration engine module 50 initiates a backing up of the data associated with the particular application 401, 402, or 403. It should be appreciated that there are a variety of different types of backup, such as a snapshot, a clone, and a mirror, and the backup integration engine module 50 can select one or more backup applications 450-452 to create these different types of backup or provide other backup functionalities.
  • For example, the snapshot backup application 450 can take a snapshot of the data associated with one or more applications 401-403. A snapshot is an instant copy within a file system. Such a snapshot can practically, for example, copy large amounts of data in a few seconds. More particularly, a snapshot is a space conservative, point-in-time, and read-only image of data accessible by name that provides a consistent image of that data (such as a storage system) at some previous time. A snapshot is a point-in-time representation of a storage element, such as an active file system, file or database, stored on a persistent storage device and having a name or other identifier that distinguishes it from other snapshots taken at other points in time. In a write-anywhere file system, a snapshot is an active file system image that contains complete information about the file system, including all suitable metadata.
  • The cloning backup application 451 creates a clone of the data associated with one or more applications 401-403. A “clone” is a modifiable copy created from a snapshot. It should be appreciated that since the modifiable copy is created from a snapshot, the modifiable copy may therefore a near-instantaneous, space efficient, and, in an example embodiment, a writable “clone” of the snapshot, which shares the same physical blocks with the baseline file system. When the snapshot and the modifiable copy diverge (e.g., due to continuing updates in the production database or development changes to a modifiable copy of the database), the divergent blocks are separately stored. Since the creation of a modifiable copy from a snapshot is near instantaneous, such replication technique may result in minimal downtime of the accessibility of the data.
  • The mirror backup application 452 can create a mirror of the data based on the snapshot. A mirror is an exact copy of a data set. Here, the data is mirrored onto the secondary storage system to ensure, for example, that the primary copy is kept up-to-date with the data. Mirroring can be synchronous, where, for example, a block of the data written to the primary storage system is also immediately transmitted to the secondary storage system. In asynchronous mirroring, the block of data written to the primary storage system is transmitted to the secondary storage system at a later time.
  • Still referring to FIG. 5, it should be appreciated that the backup integration engine module 50 may execute multiple backup applications 450-452 either simultaneously or one after another. For example, as discussed above, both the clone and mirror of data are based on a snapshot. Thus, to clone the data, the backup integration engine module 50 executes the snapshot backup application 450 to take a snapshot of the data. Afterwards, the backup integration engine module 50 executes the cloning backup application 451 to create a clone of the data based on the snapshot. In another example, after the execution of the snapshot backup application 450, the backup integration engine module 50 may execute the mirroring backup application 452 to create a mirror of the data on a secondary storage system based on the snapshot of the data.
  • By being able to interface with different plug-in modules 412-415, the framework 400 can provide backup functionalities to different applications 401-403. As a result, the framework 400 can, for example, accommodate new or additional applications different from the applications 401-403 depicted in FIG. 5 with the addition of new plug-in modules that are adapted to interface with these new or additional applications.
  • FIG. 6 depicts a flow diagram of a detailed method 500, in accordance with specific embodiment, for backing up of data. Similarly, the detailed method 500 may be implemented by the backup integration engine module 50 and employed in the processing system 200 of FIG. 2. As depicted in FIG. 6, a profile is initially accessed at 502. The access of a particular profile may include, for example, reading a control file. This profile specifies the selection of one or more plug-in modules to interface with their respective applications. In turn, the selected plug-in module includes at least one script (or “first” script) that quiesces an application. Additionally, the plug-in module may include another script (or “second” script) that unquiesces the application. As used herein, “unquiescing” an application refers to reverting a state of the application to a previous state before quiescing the application. As an example, such a previous state may refer to an application's normal mode or state of operation.
  • The first script from the selected plug-in module is then executed at 504 to quiesce the application and afterwards, one or more backup applications may be executed at 506 to backup the data. It should be noted that in one embodiment, the profile may define or specify a particular backup application to execute. In an alternate embodiment, the selection of the backup application may be predefined by, for example, the backup integration engine module.
  • After the backing up is completed, the application may be unquiesced using the same plug-in module. The application may be unquiesced such that, for example, it can modify the data or add new data without risking data corruption from a backup operation. To unquiesce this application, the second script, which unquiesces the application, may be executed at 508 after the completion of the backing up of data.
  • FIG. 7 depicts an example of a profile 600 in the form of a control file, in accordance with an embodiment of the present invention. The profile 600 includes various parameters, commands, instructions, and other data that define the settings of a backup process (or the backing up of data). In addition to the selection of particular plug-in modules, the profile 600 may also include or specify a variety of other settings. For example, as depicted in FIG. 7, the portion 602 of profile 600 includes various configurations and parameters used in the backing up of data, such as volumes, port numbers, passwords, and retention policies. The portion 602 also defines the various backup applications that may be activated or inactivated in the backup process and also defines the order of execution of the backup applications.
  • Additionally, the portions 605 and 606 define the various parameters for each different plug-in module. For example, portion 605 defines the various settings for a plug-in module that is adapted to interface with an ORACLE database management system. Portion 606 defines the various settings for a plug-in module that is adapted to interface with a MYSQL database management system.
  • The profile 600 may also define additional commands or instructions that may be executed at any suitable stage during the backup process. For example, portion 603 of the profile 600 includes a set of commands (or “pre-commands”) that is executed before initiation of the backup process (e.g., before execution of the backup applications). Portion 604 of the profile 600 includes another set of commands (or “post commands”) that is executed after a completion of the backup process. The profile 600 may also include additional commands (not shown) that are executed during the backup process (e.g., executed in parallel with the execution of the backup applications). It should be appreciated that these commands (pre-commands, post commands, or other commands) may, for example, be independent of the plug-in modules and/or backup applications. In other words, the profile 600 may include commands and instructions that are not included in the plug-in modules and/or backup applications. In view of the various parameters, instructions, commands, and/or other data that may be included in the profile 600, the profile 600 may, in one example, allow a user to customize and define a unique backup process.
  • FIG. 8 depicts a block diagram of a machine in the example form of a processing system 200 within which may be executed a set of instructions for causing the machine to perform any one or more of the methodologies discussed herein. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.
  • The machine is capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
  • The example of the processing system 200 includes a processor 702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both), a main memory 704 (e.g., random access memory), and static memory 706 (e.g., static random-access memory), which communicate with each other via bus 708. The processing system 200 may further include video display unit 710 (e.g., a plasma display, a liquid crystal display (LCD) or a cathode ray tube (CRT)). The processing system 200 also includes an alphanumeric input device 712 (e.g., a keyboard), a user interface (UI) navigation device 714 (e.g., a mouse), a disk drive unit 716, a signal generation device 718 (e.g., a speaker), and a network interface device 720.
  • The disk drive unit 716 (a type of non-volatile memory storage) includes a machine-readable medium 722 on which is stored one or more sets of data structures and instructions 724 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The data structures and instructions 724 may also reside, completely or at least partially, within the main memory 704 and/or within the processor 702 during execution thereof by processing system 200, with the main memory 704 and processor 702 also constituting machine-readable, tangible media.
  • The data structures and instructions 724 may further be transmitted or received over a computer network 750 via network interface device 720 utilizing any one of a number of well-known transfer protocols (e.g., HyperText Transfer Protocol (HTTP)).
  • Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. In example embodiments, one or more computer systems (e.g., the processing system 200) or one or more hardware modules of a computer system (e.g., a processor 702 or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.
  • In various embodiments, a hardware module may be implemented mechanically or electronically. For example, a hardware module may comprise dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC)) to perform certain operations. A hardware module may also comprise programmable logic or circuitry (e.g., as encompassed within a general-purpose processor 702 or other programmable processor) that is temporarily configured by software to perform certain operations. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.
  • Accordingly, the term “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a certain manner and/or to perform certain operations described herein. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where the hardware modules comprise a general-purpose processor 702 configured using software, the general-purpose processor 702 may be configured as respective different hardware modules at different times. Software may accordingly configure a processor 702, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.
  • Modules can provide information to, and receive information from, other modules. For example, the described modules may be regarded as being communicatively coupled. Where multiples of such hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) that connect the modules. In embodiments in which multiple modules are configured or instantiated at different times, communications between such modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple modules have access. For example, one module may perform an operation, and store the output of that operation in a memory device to which it is communicatively coupled. A further module may then, at a later time, access the memory device to retrieve and process the stored output. Modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).
  • The various operations of example methods described herein may be performed, at least partially, by one or more processors 702 that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors 702 may constitute processor-implemented modules that operate to perform one or more operations or functions. The modules referred to herein may, in some example embodiments, comprise processor-implemented modules.
  • Similarly, the methods described herein may be at least partially processor-implemented. For example, at least some of the operations of a method may be performed by one or more processors 702 or processor-implemented modules. The performance of certain of the operations may be distributed among the one or more processors 702, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors 702 may be located in a single location (e.g., within a home environment, an office environment or as a server farm), while in other embodiments the processors 702 may be distributed across a number of locations.
  • While the embodiment(s) is (are) described with reference to various implementations and exploitations, it will be understood that these embodiments are illustrative and that the scope of the embodiment(s) is not limited to them. In general, techniques for creating backups of data may be implemented with facilities consistent with any hardware system or hardware systems defined herein. Many variations, modifications, additions, and improvements are possible.
  • Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the embodiment(s). In general, structures and functionality presented as separate components in the exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the embodiment(s).

Claims (1)

What is claimed is:
1. A processing system, comprising:
at least one processor; and
a machine-readable medium in communication with the at least one processor, the machine readable medium storing a backup integration engine module, a backup application, and a plurality of plug-in modules adapted to interface with a plurality of different applications, the backup integration engine being executed by the at least one processor to cause operations to be performed, the operations comprising:
accessing a profile that specifies activation of a plug-in module from the plurality of plug-in modules, the plug-in module being adapted to interface with an application from the plurality of different applications;
quiescing the application using the plug-in module;
executing the backup application that is adapted to perform a backing up of the data after the application has been quiesced; and
unquiescing the application after a completion of the backing up of the data.
US14/158,637 2010-04-22 2014-01-17 Frameworks for providing backup functionalities to different applications Abandoned US20140149790A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/158,637 US20140149790A1 (en) 2010-04-22 2014-01-17 Frameworks for providing backup functionalities to different applications

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/765,231 US8635189B1 (en) 2010-04-22 2010-04-22 Frameworks for providing backup functionalities to different applications
US14/158,637 US20140149790A1 (en) 2010-04-22 2014-01-17 Frameworks for providing backup functionalities to different applications

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/765,231 Continuation US8635189B1 (en) 2010-04-22 2010-04-22 Frameworks for providing backup functionalities to different applications

Publications (1)

Publication Number Publication Date
US20140149790A1 true US20140149790A1 (en) 2014-05-29

Family

ID=49919323

Family Applications (2)

Application Number Title Priority Date Filing Date
US12/765,231 Active 2030-12-11 US8635189B1 (en) 2010-04-22 2010-04-22 Frameworks for providing backup functionalities to different applications
US14/158,637 Abandoned US20140149790A1 (en) 2010-04-22 2014-01-17 Frameworks for providing backup functionalities to different applications

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US12/765,231 Active 2030-12-11 US8635189B1 (en) 2010-04-22 2010-04-22 Frameworks for providing backup functionalities to different applications

Country Status (1)

Country Link
US (2) US8635189B1 (en)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10237341B1 (en) * 2012-03-29 2019-03-19 Emc Corporation Method and system for load balancing using server dormant mode
US9280554B2 (en) 2012-09-28 2016-03-08 Oracle International Corporation Using confidence values for synchronizing file systems
US10353783B1 (en) * 2013-06-26 2019-07-16 EMC IP Holding Company LLC Pluggable recovery in a data protection system
US10235392B1 (en) * 2013-06-26 2019-03-19 EMC IP Holding Company LLC User selectable data source for data recovery
US9904606B1 (en) 2013-06-26 2018-02-27 EMC IP Holding Company LLC Scheduled recovery in a data protection system
US9641486B1 (en) 2013-06-28 2017-05-02 EMC IP Holding Company LLC Data transfer in a data protection system
US20160188898A1 (en) 2014-12-31 2016-06-30 Netapp, Inc. Methods and systems for role based access control in networked storage environment

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050044197A1 (en) * 2003-08-18 2005-02-24 Sun Microsystems.Inc. Structured methodology and design patterns for web services
US20070112836A1 (en) * 2002-02-28 2007-05-17 Veritas Operating Corporation Systems, methods and apparatus for creating stable disk images
US20070186068A1 (en) * 2005-12-19 2007-08-09 Agrawal Vijay H Network redirector systems and methods for performing data replication
US7366742B1 (en) * 2004-09-10 2008-04-29 Symantec Operating Corporation System and method for distributed discovery and management of frozen images in a storage environment
US20080133622A1 (en) * 2006-10-31 2008-06-05 Brown Andrew P Backup and restore system for a computer
US20080172414A1 (en) * 2007-01-17 2008-07-17 Microsoft Corporation Business Objects as a Service
US20090112948A1 (en) * 2004-07-09 2009-04-30 International Business Machines Corporation Method for performing a backup by querying a backup infrastructure
US20090249005A1 (en) * 2008-03-27 2009-10-01 International Business Machines Corporation System and method for providing a backup/restore interface for third party hsm clients
US20100070726A1 (en) * 2004-11-15 2010-03-18 David Ngo Using a snapshot as a data source
US8195153B1 (en) * 2005-08-23 2012-06-05 Emc Corporation Mobile access to backup and recovery services

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6948038B2 (en) * 2001-07-24 2005-09-20 Microsoft Corporation System and method for backing up and restoring data
US20030217264A1 (en) 2002-05-14 2003-11-20 Signitas Corporation System and method for providing a secure environment during the use of electronic documents and data
WO2005078552A1 (en) * 2004-02-09 2005-08-25 Palmsource, Inc. Method and system for a securty model for a computing device
US8286131B2 (en) 2008-03-24 2012-10-09 Oracle International Corporation Environment definition files for an environment definition system
US8046550B2 (en) 2008-07-14 2011-10-25 Quest Software, Inc. Systems and methods for performing backup operations of virtual machine files
US20100057826A1 (en) 2008-08-29 2010-03-04 Weihsiung William Chow Distributed Workflow Process Over a Network
US20100235493A1 (en) 2009-03-16 2010-09-16 Besaw Lawrence M Extendable distributed network management system and method
US20110246308A1 (en) * 2010-04-02 2011-10-06 Segall Timothy R Method and system for managing interactive communications campaigns with preference management

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070112836A1 (en) * 2002-02-28 2007-05-17 Veritas Operating Corporation Systems, methods and apparatus for creating stable disk images
US20050044197A1 (en) * 2003-08-18 2005-02-24 Sun Microsystems.Inc. Structured methodology and design patterns for web services
US20090112948A1 (en) * 2004-07-09 2009-04-30 International Business Machines Corporation Method for performing a backup by querying a backup infrastructure
US7366742B1 (en) * 2004-09-10 2008-04-29 Symantec Operating Corporation System and method for distributed discovery and management of frozen images in a storage environment
US20100070726A1 (en) * 2004-11-15 2010-03-18 David Ngo Using a snapshot as a data source
US8195153B1 (en) * 2005-08-23 2012-06-05 Emc Corporation Mobile access to backup and recovery services
US20070186068A1 (en) * 2005-12-19 2007-08-09 Agrawal Vijay H Network redirector systems and methods for performing data replication
US20080133622A1 (en) * 2006-10-31 2008-06-05 Brown Andrew P Backup and restore system for a computer
US20080172414A1 (en) * 2007-01-17 2008-07-17 Microsoft Corporation Business Objects as a Service
US20090249005A1 (en) * 2008-03-27 2009-10-01 International Business Machines Corporation System and method for providing a backup/restore interface for third party hsm clients

Also Published As

Publication number Publication date
US8635189B1 (en) 2014-01-21

Similar Documents

Publication Publication Date Title
US20140149790A1 (en) Frameworks for providing backup functionalities to different applications
US9465697B2 (en) Provision of backup functionalities in cloud computing systems
US11907254B2 (en) Provisioning and managing replicated data instances
US10284437B2 (en) Cloud-based virtual machines and offices
EP3428811A1 (en) Database interface agent for a tenant-based upgrade system
US20130091376A1 (en) Self-repairing database system
US8112665B1 (en) Methods and systems for rapid rollback and rapid retry of a data migration
US10970083B2 (en) Log in/log out process for EDU mode
US11023588B2 (en) Switching users and sync bubble for EDU mode
US10089375B2 (en) Idling individually specified objects during data replication
US9251189B2 (en) Update of data structure configured to store metadata associated with a database system
US9805038B2 (en) Efficient conflict resolution among stateless processes
US10387262B1 (en) Federated restore of single instance databases and availability group database replicas
US9405634B1 (en) Federated back up of availability groups
JP2017167811A (en) Backup controller, backup controlling method, and program
EP4250119A1 (en) Data placement and recovery in the event of partition failures
US10467104B1 (en) Method and system for distributed systems backup configuration wizard
US11675931B2 (en) Creating vendor-neutral data protection operations for vendors' application resources
Mistry et al. Microsoft SQL Server 2012 Management and Administration
US20210382795A1 (en) Automated creation of variable data storage environments for application testing
US11294771B1 (en) Storage of discovered data object to storage layouts
US11520668B2 (en) Vendor-neutral models of vendors' application resources
Krogh et al. Restarts

Legal Events

Date Code Title Description
AS Assignment

Owner name: NETAPP, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:TENZER, KEITH J.;REEL/FRAME:032144/0464

Effective date: 20100617

STCB Information on status: application discontinuation

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