Networks are generally configured as a group of servers, clients, and/or other systems, Data, software programs, and/or other information are stored on the network in a physical configuration. However, the information stored on the network is generally stored using a logical system referred to as a directory system, which may or may not have any relation to the physical configuration of the network. Directory systems are generally configured as a directory of servers, domains, folders, and/or files that describe the logical organization of the data stored on a system(s). The directory service can have a predetermined but alterable configuration. A user may alter the configuration by deleting an object in the directory service. However, once an object is deleted, generally, it is difficult to restore the object. A user often must bring down the directory system and restore a backup of the directory service. This restore process causes significant server downtime and takes a great deal of time because rebooting the server(s) is time-consuming.
In embodiments, a form of backup data, referred to as snapshot data, is exposed for use without bringing down the directory system. The snapshot data provides a “snapshot” or copy of the directory system at a time in the past. In embodiments, the snapshot data is exposed as a database, for example, an LDAP server. The exposed snapshot data, in the form of a database, is manipulated by one or more tools, for example, an LDAP client. Thus, the snapshot data is available to clients to view, to compare, to restore, or to accomplish other actions on the snapshot data without restoring a backup, which would incur server downtime.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
This disclosure will now more fully describe some embodiments with reference to the accompanying drawings, in which only some of the possible embodiments are shown. Other aspects may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Rather, these embodiments are provided so that this disclosure will convey the scope of the possible embodiments to those skilled in the art.
Embodiments of the present invention generally relate to new and improved systems and methods for determining changes to a server network. In embodiments, server network changes are recorded in one or more snapshots. The snapshot can be discovered, that is, a user can locate the one or more snapshots. Once discovered, the snapshots may be mounted. An interface, in embodiments, exposes the snapshot as database data, which can be manipulated similar to the directory service data. As database data, the snapshot data, in embodiments, is interpreted for and accessed by the user through one or more other interfaces.
An embodiment of a network 100 is shown in
The servers in the server network 100, in embodiments, are in communication with each other via various “connections,” for example, connections 116, 118, 120, and 122. The term connected or connections is meant to embody any form of communication between two computer systems, which may include, but is not limited to, wireless communication, wired communication, communication over a network, an intranet, the Internet, etc. The communication may be by any protocol or in any form and may occur on a single server or multiple servers and/or clients.
The connections 116, 118, 120, and 122 and the configuration of the connections 116, 118, 120, and 122 defines the configuration of the network. A directory system may be used to describe the logical organization and relationships between data, software, or other information stored across the server network 100. The directory system may interrelate or function to provide data, programs, or other functions to clients. A directory system may be any type of system that controls communications and logical organization of the directories. The directory system may be an object-oriented software system comprising one or more objects, each object with one or more attributes, which control certain aspects of the directory, e.g., replication, connection configuration, etc. In embodiments, the logical organization of the directory system is governed by a directory service, for example, Microsoft's® Active Directory Domain Services.
In embodiments, a user, operating a client computer (e.g., Client 1110), or a third-party software package installed in the directory system can change the directory system. Changes to the directory system of the network 100 may affect the contents of the directory. In embodiments, changes made by the user or third-party software to the directory system may delete a directory system object. Users often err and wish to restore objects that have been deleted from directory system.
Snapshots are copies of the directory created at predetermined times in the past and stored. In an embodiment, the snapshots are stored in a snapshot datastore 210. Snapshots, in embodiments, are not available to online servers but must be mounted and used for restoration of a network on offline servers. In other embodiments, the snapshots are pre-mounted and available.
An embodiment of a system 200 to investigate changes to a directory configuration is shown in
The user interface 202, in embodiments, accepts user selections and provides output for display to the user. User selection devices, input devices, and output devices are described in conjunction with
The query processor 204 receives and processes the user interface 202 selections. The query processor 204 may receive a request to determine changes that have been made to the directory system. The query processor 204 can format a query and access the required data to respond to the query. In one embodiment, the query processor 204 communicates with the snapshot browser 206 to retrieve database data to respond to the query. The information retrieved from the snapshot datastore 210 is a snapshot file that is not accessible normally with an online server. As such, the snapshot browser 206 performs, in embodiments, a data conversion to allow the snapshot to be accessible by an LDAP server, and, in further embodiments, by one or more other tools in communication with the query processor 204. In an alternative embodiment, the snapshot browser allows the snapshot database to be accessible via an LDAP server without a data conversion. For example, in Microsoft's Active Directory, the DSAMain.exe snapshot browser allows the snapshot to be accessible from an LDAP server.
The query processor 204, in embodiments, receives and formats the information from the snapshot browser 206 to provide to the user interface 202. In other embodiments, the query processor 204 communicates with the snapshot browser 206 to provide a report of the snapshot 212 to the user interface 202. The report 212 can include viewable information about the snapshot. The snapshot browser 206, in embodiments, is an LDAP server. In alternative embodiments, the snapshot browser 206 is read only, that is, a user cannot make changes to the data in the snapshot.
In one embodiment, a snapshot generator 208 receives instructions from the user interface 202 to create a snapshot and store the snapshot in the snapshot datastore 210. The instruction may require the snapshot generator 208 to generate a snapshot immediately following the request. In other embodiments, the user instructs the snapshot generator 208 to generate continuously a snapshot at a predetermined interval, for example, every week.
The snapshot can be mounted and loaded into a LDAP server. The user can then review or use the snapshot while the server remains online and active. In an alternative embodiment, the user manipulates or changes the snapshot data. Further, the user can execute functions on the snapshot data, for example, searches, copies, etc. A snapshot, in embodiments, is also mountable from another server system. By mounting the snapshot, a user need not have server downtime to view older versions of the directory system including deleted objects that the user wishes to restore.
In embodiments, a user interface 202 also communicates with a snapshot manager 214. The snapshot manager 214 may provide the discovery of the snapshots. The snapshot datastore 210, in embodiments, has one or more snapshots stored at different locations, i.e., a remote server. For example, the snapshots may be stored on one or more remote domain controllers. The snapshot manager 214 can determine the location of the snapshots at the remote domain controllers and retrieve information about the snapshots if necessary. In embodiments, each snapshot is associated with snapshot location information, which can be used to determine the location of the snapshot data for a snapshot. Snapshot location information may include, for example, a machine name hosting the snapshot data and LDAP server, and a port number that the LDAP server uses for listening. Accordingly, in embodiments, the snapshot manager discovers snapshots by connecting to a remote domain controller, enumerating a set of snapshots, and retrieving snapshot location information for each of the enumerated snapshots. The snapshot location information can be used for retrieving snapshot data. It should be noted that in some embodiments instead of retrieving data for the entire snapshot, the snapshot manager 214 retrieves snapshot data for user-defined portions of the snapshot. For example, the user may desire to retrieve data for a domain controller (a server that manages the server directory data), for an application partition, for a domain, or other portion of the directory.
A block diagram showing a process 300 for providing snapshot changes is shown in
A snapshot browser 308 mounts Snapshot 1304 and/or Snapshot 2306 to be accessible by a database server, for example, a LDAP server. The snapshot browser 308 provides the snapshots 304 and 306 without bringing down the server. As such, the user can view the information in the snapshots 304 and 306 while the server is online and active.
In embodiments, the snapshot browser 308 receives a query 310 from a user. The query 310 may be one of several actions. For example, the query 310 may be to search for an object having a predetermined ID or name. The requested object may have been deleted in the live directory. The snapshot browser 308 may access Snapshot 1304 to search for the object. Other queries 310 may include, but are not limited to, comparing Snapshot 1304 and Snapshot 2306, restoring an object from a snapshot, or displaying a deleted object in the snapshot. The snapshot browser 308 provides a query result 312 to the user.
An embodiment of a method 400 for providing a snapshot for one or more purposes is shown in
Receive operation 402 receives a request for snapshot data. In one embodiment, a system 200 (
Determine operation 404 determines what type of action is to be performed. As explained in conjunction with
Expose operation 406 exposes the snapshot data. In one embodiment, the snapshot data is converted into database information. An LDAP server or other system reads the snapshot data. The data is changed into database elements similar to the directory system database. In one embodiment, the snapshot is converted into a format similar to Microsoft® Active Directory database data. The snapshot data may then be accessed by one or more tools using LDAP similar to the Active Directory data.
Compare operation 408 compares two or more snapshots. In an embodiment, two or more snapshots are converted into directory data as explained with the expose operation 406. The two or more snapshot database may then be compared. For example, a user may try to determine if an object in a first snapshot exists in a second snapshot. As such, the user may determine the best snapshot to use for restoring the object.
Restore operation 410 restores data from one or more snapshots. The system 200 (
Another embodiment of a method 500 for providing snapshot data to a user is shown in
Expose operation 502 exposes the snapshots. In one embodiment, the snapshot is exposed as an LDAP server. A user, in embodiments, mounts a snapshot. In embodiments, the snapshot is then made available as or converted into database data. Tools available for directory service data are then available to access the snapshot data as exposed database data.
In one embodiment, a user discovers a snapshot to expose by entering and viewing information on a user interface 202 (
Receive operation 504 receives a query to view the snapshot data. In embodiments, a user requests a view of the data through a user interface 202 (
Determine operation 506 determines if a domain controller is selected. A domain controller, in embodiments, is a server that controls the directory structure for a domain or set of servers. Snapshots may exist locally or on remote servers. The remote servers may be domain controllers that control the directory structure for a forest or tree in the directory system. Thus, the snapshots at the domain controller may contain more information than the snapshot stored locally at the client machine. If one of the snapshots selected is at a domain controller, the process flows YES to connect operation 508. If none of the snapshots selected is at a domain controller, the process flows NO to provide operation 510.
Connect operation 508 connects with the domain controller. For example, if the user is viewing snapshots at Client 1110 (
Provide operation 510 provides a view of the snapshot data. In embodiments, the snapshot browser 206 (
An embodiment of a method 600 for comparing snapshot data is shown in
Expose operation 602 exposes the snapshot data as a database. In one embodiment, the snapshot is exposed as an LDAP server. Expose operation 602 is similar to or the same as expose operation 502 explained in conjunction with
Receive operation 604 receives a query to compare snapshot data. In an embodiment, a user enters information associated with two snapshots into the user interface 202 (
Receive operation 604 receives a query to compare the snapshot data. In embodiments, a user requests a comparison of the data for the two or more snapshots through a user interface 202 (
Compare operation 606 compares the two or more snapshots input by the user. In an embodiment, the query processor 204 (
An embodiment of a method 700 for restoring data from a snapshot is shown in
Expose operation 702 exposes the snapshot data as a database. In one embodiment, the snapshot is exposed as an LDAP server. Expose operation 702 is similar to or the same as expose operation 502 explained in conjunction with
Receive operation 704 receives a query to restore data from the snapshot data. In an embodiment, a user enters information associated with a snapshot into the user interface 202 (
In an embodiment, an optional determine operation 706 determines if the data to be restored is for a deleted object. In embodiments, if an object has been deleted within a predetermined amount of time, referred to as the tombstone lifetime, the deleted object is tombstoned. A tombstoned object is a directory object that has been deleted but has one or more system-protected attributes that are preserved in the directory. A tombstoned object may be reanimated. When a tombstoned object is reanimated, the object is placed back in the live directory with some system-protected attributes. However, other attributes of the object need to be repopulated or restored. If the object to be recovered is tombstoned, the process flows YES to reanimate operation 708. If the object to be restored is not tombstoned, the process flows NO to recreate operation 710.
In embodiments, optional reanimate operation 708 reanimates the tombstoned object. In embodiments, the snapshot browser 206 (
Recreate operation 710 recreates data from the snapshot. In embodiments, the snapshot browser 206 (
With reference to
In its most basic configuration, computer system 800 typically includes at least one processing unit 802 and system memory 804. In embodiments, the system 200 (
Additionally, device 800 may also have additional features/functionality. For example, device 800 includes additional storage (removable and/or non-removable) including, but not limited to, magnetic, optical disks or tape. Such additional storage is illustrated in
Memory 804, removable storage 808, and non-removable storage 810 are all examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage, other magnetic storage devices, or any other medium which is used to store the desired information, for example, the snapshots 304 and 306 (
Device 800 may also contain communications connection(s) 812 that allow the device to communicate with other devices. In embodiments, the communication connections 812 are used to send and/or receive data, for example, the snapshots 304 and 306 (
In embodiments, device 800 includes a graphical user interface that includes input devices 814 and output devices 816. Data selections for the snapshots through the user interface 202 (
Computer system 800 typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by processing unit 802. By way of example, and not limitation, computer readable media comprise computer storage media. Software system 200 (
Although the embodiments have been described in language specific to structural features, methodological acts, and computer-readable media containing such acts, it is to be understood that the possible embodiments, as defined in the appended claims, are not necessarily limited to the specific structure, acts, or media described. One skilled in the art will recognize other embodiments or improvements that are within the scope and spirit of the present invention. Therefore, the specific structure, acts, or media are disclosed only as illustrative embodiments. The invention is defined by the appended claims.