Embodiments of the present invention relate to the field of computing resources. More specifically, embodiments of the present invention relate to a method for rapid startup of a computer system.
Modern networking continues to provide an improvement in communication and information access using a utility computing environment. As an example, in-house data centers, associated with a particular entity of interrelated group of users, could contain a large number of information technology (IT) resources that are interconnected through a network. These networks are configured in different ways depending on implementation-specific details such as the hardware used and the physical location of the equipment, and depending on the particular objectives of the network. One common type of network configuration is a local area network (LAN). In actual practice, a typical LAN will include large numbers of computer systems and switches (as well as other devices). Another common type of network configuration is a storage area network (SAN). In actual practice, a typical SAN will include large numbers of disk logical units (LUNs) of a disk array and switches (as well as other devices). Devices such as computer systems, routers, switches, load balancers, firewalls, and the like, are commonly linked to each other in networks.
Generally, the in-house data centers include technicians working from a network operation center (NOC). The technicians issue commands to control the deployment of servers and to control the supporting infrastructures, such as disk logical units (LUNs) in a disk array, network switches in the LAN, and switches in the SAN.
A central feature of in-house data centers is the providing allocation of the servers on demand. Currently, this process involves booting a hardware server from an operating system image. An entire bootable image is copied to a provisioned server's boot volume and the server is rebooted from scratch. Server boot times vary, but typically take anywhere from several minutes up to an hour. Often, the boot times may appear to a client requesting the use of the server as a delay from the time of the service request prior to the service becoming available. For example, consider a web server that begins receiving a sudden increase in web traffic. In order to compensate for the increase in traffic, a second web server is requested for deployment. The additional web server is subject to standard boot times, delaying its actual deployment.
Therefore, a need exists for improving startup times of the deployment of information technology resources.
Various embodiments of the present invention, a method for rapid startup of a computer system, are described herein. A hibernated image is accessed from an image library comprising a plurality of hibernated images, the hibernated image comprising information captured by an operating system when a running computer system is placed into a hibernated state wherein a hibernated computer system is operable to awaken from a hibernated state faster than booting a powered down computer system. The hibernated image is copied onto a boot disk of the computer system. The computer system is awakened from the hibernated state.
The accompanying drawings, which are incorporated in and form a part of this specification, illustrate embodiments of the invention and, together with the description, serve to explain the principles of the invention:
The drawings referred to in this description should not be understood as being drawn to scale except if specifically noted.
Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents, which may be included within the spirit and scope of the invention as defined by the appended claims. Furthermore, in the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present invention.
Aspects of the present invention may be practiced on a computer system, also referred to herein as a provisionable resource or an information technology (IT) resource herein, that includes, in general, a processor for processing information and instructions, random access (volatile) memory (RAM) for storing information and instructions, read-only (non-volatile) memory (ROM) for storing static information and instructions, and a data storage device such as a magnetic or optical disk and disk drive for storing information and instructions. The computer system may also include an optional user output device such as a display device (e.g., a monitor) for displaying information to the computer user, an optional user input device including alphanumeric and function keys (e.g., a keyboard) for communicating information and command selections to the processor, and an optional user input device such as a cursor control device (e.g., a mouse) for communicating user input information and command selections to the processor.
Embodiments of the present invention are directed to a method for rapid startup of a computer system. In one embodiment, the computer system is a provisionable resource (IT resource) of a utility computing environment. A hibernated image is copied onto he boot drive of the computer system. A hibernated image is a data file that includes information captured by an operating system when a running computer system is placed into a hibernated state or mode. By copying a hibernated image onto a computer system, the computer system may be awakened from the hibernated state without requiring a reboot of the computer system.
Current art only uses hibernated images to awaken a computer on which they were created. The present invention, in contrast, typically uses a hibernated image generated on one computer system to awaken another computer system. Only rarely and by coincidence might the computer system on which the hibernated image was created be awakened by it's own prior hibernated image.
A hibernation state allows for rapid resumption of operation of the computer system that is faster than rebooting the computer system. When the hibernation mode is activated, information describing the current status of the computer system is saved in a hibernation image. The hibernation image includes information describing the operation of the computer system, such as the operating system, the available memory, and the network connection status. The hibernation image may also include, for example, which applications are running on the computer system and which devices are connected to the computer system. Awakening a computer system from a hibernated state allows for rapid resumption of operation of the computer system.
Rapid server deployment system 100 includes hibernated image library 110 and hibernated image selector 120. Hibernated image library 110 includes a plurality of hibernated images. The hibernated images include information captured when various types and configurations of computer systems with different specifications are placed in a hibernated state. For example, hibernated image library 110 may include hibernated images for computer systems using different processors, having different amounts of available memory (e.g. DRAM), different network connections, different operating systems, and different combinations thereof. It should be appreciated that many other types of configuration details may be included in a hibernated image, such as specific user configurations and installed software applications, and is not limited to the listed examples.
Most computer operating systems provide hibernated state functionality for placing a computer system into hibernation. It should be appreciated that the hibernated image for a particular operating system includes the information required to awaken a computer system with that operating system installed thereon. While different operating system may implement their respective hibernation states differently, a hibernated image of the present invention includes information necessary for the particular operating system for which the hibernated image was created.
The hibernated images of hibernated image library 110 may be created in many ways. In one embodiment, the hibernated images are based on a general computer system configuration. For example, the hibernated images may be based on processor type, memory availability, and operating system. A computer system is booted using a boot image using a standard start-up function. Once the computer system has started, the computer system is placed in a hibernated state using the hibernation function of the operating system. The hibernated image of the computer system is captured using standard image capture techniques that are well-known in the art. The hibernated image is copied into hibernated image library 110 for access by hibernated image selector 120.
Hibernated image selector 120 is operable to select a hibernated image from hibernated image library 110. In one embodiment, the hibernated image is selected in response to a deployment request received in accordance with a utility computing environment. A pool of servers in a utility computing environment are available for reallocation among clients. When a server is reallocated to a different client, a deployment request is received at hibernated image selector 120. The deployment request includes information necessary for selecting an appropriate hibernated image for copying onto an IT resource. For example, the deployment request may include device specifications of the IT resource, such as processor type and available memory. The deployment request may also include information such as a requested operating system. In one embodiment, the hibernated image is selected based at least in part on device specifications of the IT resource.
Hibernated image selector 120 is operable to select a hibernated image from hibernated image library 110 and to copy that image onto a boot disk of the IT resource. In one embodiment, the boot disk of the IT resource is scrubbed prior to copying the hibernated image onto the boot disk. Once the hibernated image is copied onto the IT resource, the IT resource may be awakened from the hibernated state into a fully operational state. In one embodiment, hibernated image selector 120 is operable to determine whether the selected hibernated image is already copied onto the computer system. If the hibernated image is already copied onto the computer system (e.g., the computer system was never reallocated), the hibernated image is not copied onto the computer system. As described above, awakening a computer system from a hibernated state is typically much faster than booting the computer system from scratch.
Data centers frequently use one or more utility computing environments to manage resources. According to one embodiment, a rapid server deployment system can be used in the context of a utility computing environment for rapidly deploying IT resources using a hibernated image.
As depicted in
The resources 210 can be computational servers, firewalls, load balancers, data backup devices, and arrays of data storage disks, among other things. A “farm” can be created from one or more of the resources 210, as will be explained in more detail. One or more of computational devices can be automatically deployed from the pool of resources 210 to create a farm. The resources 210 associated with a farm are typically networked together using a network map, as will become more evident. The database 240 is machine-readable and contains information describing the resources 210 and the attributes of the resources 210 that are associated with “farms,” according to one embodiment. The UC 250 is a system that uses a network map as a specification to create “farms” by automatically configuring and deploying resources from the pool of resources 210, according to one embodiment. One or more data center administrators (DCAs), for example, can use the NOC 230 to operate the UCE 200. The DCAs can use a portal (not shown) to submit requests to the UC 250 or to update information associated with the database 240.
The farm control API 260 allows external computer programs (not shown) to perform operations on the farms. The rapid server deployment system 100 is capable of making decisions to automatically reallocate the resources 210 to by copying hibernated images onto the resources, according to one embodiment.
The exemplary software system also includes a library of backup media (not shown) and a user interface (not shown) that allows a DCA to update designs of farms with attributes, according to one embodiment. Examples of the attributes are the criticality of an application and a minimum quantity of resources 210 that an application needs in order to execute. The designs of the farms can be stored in the database 240. The library of backup media can contain regularly updated applications and data from remote UCEs 200. The remote UCEs 200 can use an external network 270 to communicate with the rapid server deployment system 100.
The resources 210 can be any component that is hardware, software, firmware, or combination thereof that can be used by a data center to provide services. For example, the resources 210 can be computational servers, firewalls, load balancers, data backup devices, arrays of data storage disks and network interface cards (NICs), among other things.
A “farm” can be created from one or more of the resources 210. For example, one or more computational servers can be automatically deployed from the pool of resources 210 associated with a UCE 200 to create a farm. The resources 210 associated with a farm are typically networked together using a network map.
As depicted in
A farm design can be depicted with a schematic, such as that depicted in
Typical UDC 400, in this illustration, communicates with the outside world via the Internet 420 and virtual public networks (VPNs) in the Internet. The communications links that enable this communication are protected by firewall 410. Firewall 410 is shown to illustrate a concept and is not meant to imply any particular method or system of intrusion protection. Many types of hardware and software firewalls are well known in the art and firewall 410 may be either or both.
It is noted here that communications into and out of a provisionable network, as in any network, is accomplished through ports such as illustrated at 481. Communications between devices within a network are also conducted through ports, as alluded to at 482. It is noted that ports are not necessarily physically located at the periphery of a network but are logical end points. External ports 481 and intra-network ports 482 are shown only to help illustrate the concepts presented in embodiments of the present invention. It is also noted that virtual security boundary 450 does not exist in a physical sense. Resources included in the servers and LANs comprising utility data center 400 may include devices and servers located remotely from the other elements of the UDC.
Embodiments of the present invention operate in an environment that distinguishes between three trust domains established in the trust hierarchy of a utility data center. One trust domain is embodied in the Operations Center (OC) LAN 405 where non-critical UDC and other operations-related functions reside. The level of trust is less than the Data Center Control LAN 401. Another trust domain is the data center controller LAN 401 where tasks relating to the automated provisioning of managed resources 406 reside. Access to the Data Center LAN 401 is severely restricted from this domain. A third domain comprises the managed resources LANs where the managed resources 406 reside. These LANs are typically not trusted. It is noted here that clients of the utility data center originate outside the above trust structure and access elements of the UDC via the Internet or a virtual private network (VPN) resident in the Internet infrastructure.
As shown in
The heart of the exemplary utility data center illustrated in
Resource pools 406 are limitlessly flexible, comprising any conceivable combination of provisionable resources, such as resource servers, data servers, computational capability, load balancing servers or any other device or capability imaginable. Because the possible varieties of resources that can be included in resource pools 406, they are separated from UC LAN 401 by firewalls 404, which, like UC firewalls 402, can be software or hardware or both, in many combinations.
As described above, certain processes and steps of the present invention are realized, in one embodiment, as a series of instructions (e.g., software program) that reside within computer readable memory of a computer system and are executed by the of the computer system. When executed, the instructions cause the computer system to implement the functionality of the present invention as described below.
At step 510 of process 500, a hibernated image from an image library is accessed. The image library (e.g., hibernated image library 110 of
In one embodiment, the computer system is a provisionable resource or IT resource in a utility computing environment. For example, the computer system may be a resource of resources 210 of
In one embodiment, the hibernated image is selected from the plurality of hibernated images based at least in part on device specifications of the computer system. For example, the image library may include hibernated images for various types of processors, operating systems, and memory requirements. The accessed hibernated image is selected to most closely match the device specifications of the allocated resource. For example, in a computer system operating a particular type of processor, a hibernated image would be accessed that was created on a computer system operating the same type of processor. Additionally, in a computer system that is designed to execute a particular operating system, a hibernated image created on a computer system running the same operating system will be selected.
At step 520, the hibernated image is copied onto a boot disk of the computer system. In one embodiment, the boot disk is scrubbed prior to the hibernated image being copied onto the boot disk. In one embodiment, before the hibernated image is copied onto the boot disk, it is determined whether the selected hibernated image is already copied onto the boot. If the hibernated image is already copied onto the computer system (e.g., the computer system was never reallocated), the hibernated image is not copied onto the computer system, and step 520 may be skipped.
At step 530, the computer system is awakened from the hibernated state. Awakening the computer system operates to provision the server to a particular client. As described above, awakening a computer system from a hibernated state occurs more rapidly than rebooting the same computer system from scratch. Depending on the configuration of the computer system, the time required to provision the computer system can be reduced from up to an hour down to a few minutes or even seconds.
At optional step 540, a user-specific software configuration is mounted onto the computer system. Once the computer system is awakened, and thus provisioned, additional operations may occur for customizing the computer system. For instance, specific user preferences are software applications may be identified and mounted onto the computer system. In one embodiment, the customized features are described in the deployment request.
Various embodiments of the present invention also provide for creating and storing hibernated images of a current session of a computer system. For example, a provisionable resource may be reallocated at the end of a particular user's shift. Prior to reallocation, a hibernated image of the current session may be captured so that the user may continue their work at the beginning of their next shift.
At step 550, the computer system is placed into a hibernated state. At the time of the hibernation, the computer system is operating a current session, which refers to the session open to the user. At step 560, a hibernated session of a current image of the computer system is captured. To distinguish from the hibernated image accessed at step 510, the hibernated image of the current session is referred to as a second hibernated image. At step 570, the second hibernated image is stored at the image library. It should be appreciated that steps 550 through 570 are optional. Moreover, it should be appreciated that the process described in steps 550 through 570 may be used to create any type of hibernated image, and is not restricted to creating a hibernated image of a current session. For instance, an administrator can create a number of hibernated images customized to various degrees. These hibernated images can then be stored in the image library for later access.
In summary, in its various embodiments, the present invention provides for rapid startup of a computer system. In particular, various embodiments provide for rapid deployment of resources in a utility computing environment by using hibernated images. By copying a hibernated image onto a provisionable resource, high-speed delivery of the resource can be delivered to a client. Awakening a computer system from a hibernated state occurs much faster than a complete restart of the computer system from scratch. In many cases, the delivery time of the resource to the client can be reduced from up to an hour down to a matter of minutes or seconds. Accordingly, the described invention provides for higher performance for deploying resources in a utility computing environment, as the deployment time may be reduced to several minutes.
It should be appreciated that embodiments of the present invention are directed towards using a hibernated image to activate computer systems other than the one it was captured from. By providing a hibernated image that is fungible to other computer systems besides the originating computer system, additional functionality is provided. In addition to the rapid deployment of provisionable resources in a utility computing environment, as described above, the present invention also supports rapid failover replacement of a failed computer system and rapid cloning of a server type for taking on higher load. Each computer system activated from a generic hibernated image will still activate with its own its own identity, e.g., via network resolution and system name resolution from an associated file system.
Various embodiments of the present invention, a method for rapid startup of a computer system, are described herein. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the following claims.