Abstract:
A method of creating and managing virtual servers utilizes separate master copies of information such as operating systems, configuration files, and application programs. When a virtual server is created, it loads an appropriate operating system and configuration information. During the boot process, the virtual server is configured to provide a predetermined service. Appropriate application programs are subsequently loaded to support the service configuration. Multiple virtual servers can be created and configured using the master copies of information, thus reducing the amount of customization required by each virtual server. Virtual servers can be easily restarted from failures with minimal loss of data.

Description:
BACKGROUND OF THE INVENTION 
     1. Technical Field 
     The present invention relates to computer servers and, more particularly, to creation and management of virtual servers. 
     2. Description of the Related Art 
     The increasing use and reliance on computers has created a similar increase in administration requirements. In a typical networked environment, such as a corporate local area network (LAN), there are a number of computers that must be regularly configured. In order to maintain costs at a reasonable level, it is common to reduce the number of human system administrators, and configure the computers automatically. This can be done by loading identical configurations on each computer, and causing each computer to boot and load appropriate software from a central server. This is facilitated, in part, by the fact that each computer has a hardware identification allowing it to connect to the network. Thus, when certain changes and/or updates must be made to the computer configurations, most only need to be made to the copies on the central server. 
     Certain companies, however, maintain very large servers that are capable of accommodating users with different requirements. It is common for such companies to divide a server into partitions that are capable of performing different functions independently. Such partitions are often referred to as virtual servers. Virtual servers are completely transparent to end users, and operate as if they were independent servers. Consider a large physical server, for example, that includes thirty-two processors, and supports various divisions of a company. The most resource intensive divisions are engineering and customer support. There is also heavy reliance on a relational database management system (RDBMS). The server can create four virtual servers for theses divisions, and allocate sixteen processors for normal operations, eight processors for engineering, four processors for customer support, and four processors for the RDBMS. It should be noted that other resources such as memory, disk storage, etc., would also be allocated in order provide fully operational virtual servers. 
     Each virtual server can be independently reconfigured to accommodate the needs of the company and divisions. For example, if a major design project is underway, resources can be redistributed so that twelve or sixteen processors are allocated to engineering. During tax season, a virtual server can be created for the accounting division. Since these virtual servers are not physical in nature, none of the configuration is done through the hardware. The physical server can be dynamically reconfigured without having to interrupt other partitions and/or rebooting the physical server. 
     At least one problem associated with virtual servers, however, is that they still require system maintenance. They must be able to load appropriate software, boot, and access the network. This can be further complicated by the fact that a virtual server is not an actual server and, consequently, lacks any unique hardware characteristics by which it can be identified. For example, a personal computer that is connected to the network has a unique media access control (MAC) address associated with it&#39;s network interface card. This facilitates identification and/or configuration of the personal computer so that it is capable of retrieving data across the network. Since the virtual server has no hardware identification, it must be configured with some sort of virtual identification and assigned a function before it can be booted. This can sometimes increase the overhead associated with the network. 
     Another problem associated with virtual servers is that they must be individually reconfigured each time there is a software update and/or virus update. This can require a significant amount of overhead for companies that provide web hosting services and maintain hundreds, or even thousands, of virtual severs. Each time there is a software update, hundreds of virtual servers may need to be reconfigured. Furthermore, the clients who set up these web hosting accounts are not necessarily system administrators, even though they have full administration privileges. These clients can sometimes contribute to additional system failures that require reconfiguring the virtual server. 
     SUMMARY OF THE INVENTION 
     The present invention allows for the operation and management of virtual servers with minimal administrative overhead and/or supervision. Master copies of data such as operating systems and configuration files are maintained separately from normal data that is created and/or collected by the virtual servers. This assists in the creation of multiple virtual servers while reducing the level of system administration necessary to maintain the virtual servers. 
     In accordance with one or more embodiments, a method is provided for configuring a virtual server. The virtual server is initially created and it loads an operating system image. The operating system image can be any conventional operating system such as, for example, Linux, Unix, Windows, MacOS, etc. Next, configuration information for the virtual server is retrieved. The configuration information can include, for example, data sufficient to provide a state (or identity) to the virtual server, as well as appropriate drivers and resource allocation. The virtual server is then configured, for example, using the operating system and configuration information. Application data is then loaded for the virtual server. The application data can, for example, correspond to software that must be executed by the virtual server in order to perform desired functions. The virtual server then begins providing the services for which it has been configured. According to such a method, master copies of different operating systems, configuration files, and programs are separately maintained and accessible by multiple virtual servers. Thus, the need to independently upgrade and maintain each virtual server can be reduced. 
     In accordance with one or more additional embodiments of the invention, a method is provided for configuring a plurality of virtual servers. Once created, each virtual sever loads one of a plurality of different operating system images. Each virtual server also loads necessary configuration information. Next, the virtual servers are configured, for example, based on the operating system, hardware configuration, network configuration, state identification, etc. Once configured, each virtual server loads application data necessary to perform the configured operations. The virtual servers are then started. 
     According to one or more specific implementations, data collected by the virtual servers can be backed up (or saved) periodically, for example, on the physical server or other location. This can be done, for example, based on the amount of data collected and/or predetermined time intervals. The collected data can correspond to any new information that is produced, saved, and/or retrieved by the virtual server after operation has commenced. Thus, if a virtual server suffers a system failure, all operating system and program files can be discarded and reloaded from the master copy with no loss of information. The most recent backup can be retrieved in order to restore the virtual server to its most recent state of operation prior to the system failure. This can be done with substantially no intervention. Further embodiments of the invention allow the virtual servers to save all collected data on the physical server, thereby reducing and/or eliminating the need for creating backups. 
     In accordance with one or more embodiments of the invention, a system is provided for managing virtual servers. A physical server creates one or more virtual servers, and assigns an identity and a network address to each of the virtual servers. An operating system storage portion stores generic images of data corresponding to different operating systems. A configuration storage portion is used for storing configuration information that configures functions to be performed by the virtual servers, and a data storage portion stores program files and information generated by the virtual servers. Once created, each virtual server loads a generic image from the operating system storage portion, and retrieves configuration information from configuration storage portion. The virtual servers then boot the operating system using the configuration information in order to establish a desired state. Next, application data is loaded from the configuration storage portion. The virtual servers can then begin operation according to their designated states. 
     These, and various features of novelty which characterize the invention, are pointed out with particularity in the appended claims forming a part of this disclosure. For a better understanding of the invention, its operating advantages, and the specific benefits attained by its uses, reference should be had to the accompanying drawings and embodiments of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram conceptually illustrating a system for creating and maintaining virtual servers according to one or more embodiments of the present invention. 
         FIG. 2  is a flowchart illustrating steps performed to create a virtual server in accordance with one or more embodiments of the present invention. 
         FIG. 3  is a flowchart illustrating steps performed to create virtual servers according to one or more embodiments of the present invention. 
         FIG. 4  is a flowchart illustrating steps performed to manage virtual servers according to one or more embodiments of the present invention. 
     
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       FIG. 1  illustrates a system  100  for creating and maintaining virtual servers in accordance with one or more embodiments of the present invention. The system  100  includes a physical server  110  that can be used to create and maintain multiple virtual servers  120 - 128 . The physical server  110  includes conventional hardware and software such as, for example, one or more central processing units (CPU), internal memory, as well as various storage devices (none shown). According to one or more embodiments of the present invention, the physical server  110  also includes a storage system  112 . The storage system  112  contains information that can be used to configure the virtual servers  120 - 128 . Further, the storage system  112  can be partitioned into one or more distinct storage units. For example, an operating system storage portion  114  can be used to store images of different operating systems. Such operating systems can include, for example, Linux, Unix, Windows, MacOS, etc. Further, there can be various implementations of an operating system such as, for example, Red Hat Linux, Debian Linux, etc. Each operating system would be stored as one image that can be accessed by one or more virtual servers. 
     The storage system  112  also includes a configuration storage portion  116 . The configuration storage portion  116  stores information specific for configuring the virtual servers  120 - 128  to perform various tasks. For example, the configuration storage portion  116  of the physical server  110  includes information for configuring a web server, a customer support server, a finance server, a chat server, a database server, etc. Such configurations allow a virtual server to be created for a specific function within a particular network or LAN. The storage system  112  can also include a data storage portion  118 . The data storage portion  118  can be used, for example, to store specific applications that must be run by the virtual server  110 . The data storage portion  118  can also include a data backup partition that allows periodic backups of the virtual servers, for example, in the event of a system failure. The data storage portion  118  can also store all of the data generated by the virtual servers  120 - 128 . This can reduce and/or eliminate the need for backups. 
     According to one or more embodiments of the present invention, the system  100  can be provided with multiple physical servers  110 . Each physical server  110  would also be capable of creating a plurality of virtual servers  120 - 128 . The virtual servers  120 - 128  created can be configured for the same function for a particular client, as well as the same function for different clients. Furthermore, multiple virtual servers  120 - 128  can be created to have different functions. For example, as shown in  FIG. 1 , virtual server  120  is configured as a web  1  server. Virtual server  122  is also configured as a web  1  server. Virtual servers  124 ,  126 , and  128  are configured as database, web store, and finance servers, respectively. 
     According to one or more embodiments of the present invention, the storage system  112  maintains master copies of all information required by any virtual server that can be created. For example, if virtual servers  120  and  122  are created as web servers running the Linux operating system, each one would access the operating system storage portion  114  and retrieve a copy of the operating system in order to boot and initiate operations. Each of the virtual servers  120 - 128  would access the identical copy of the operating system image. According to such embodiments, changes and/or updates to the different operating systems would be made to the physical server  110 . The updated versions would then be stored as master copies in the operating system storage portion  114 . This can significantly reduce the amount of overhead necessary to maintain the virtual servers  120 - 128  because only the master copy needs to be updated for access by the virtual servers  120 - 128 . 
     Once the virtual servers  120 - 128  retrieve the appropriate operating system, they access the configuration storage portion  116  in order to load appropriate application programs (or software applications) and/or information to configure themselves for performing appropriate tasks. For example, if a virtual server  120  is created to function as a web server, then upon loading the appropriate operating system, the virtual server would access the configuration storage portion and retrieve the web configuration applications, and other related information, necessary to function as a web server. The configuration performed by the virtual server  120  can include, for example, assignment of temporary and/or permanent Internet Protocol (IP) addresses, mounting appropriate virtual drive systems and other hardware, allocation of memory, etc., in order to function. The configuration can also include defining and implementing appropriate security protocols to allow users to access the virtual server. According to additional embodiments of the invention, the physical server  110  can create a RAM disk (or other volatile/temporary storage) for storing the configuration information for a newly created virtual server. When the new virtual server loads the operating system image, the contents of the Ram disk (i.e., the stored configuration information) would be simultaneously loaded. 
     Once the virtual server has been created, appropriate software can be loaded from the data storage portion  118 . For example, if a virtual server  120  will function as a web server, then the appropriate web server and firewall applications can be loaded. Similarly, if a virtual server  126  will function as a web store, then the appropriate financial and transactional application programs can be loaded. Once the appropriate application programs have been loaded, the virtual server is ready to begin operating in its designated capacity. According to one or more embodiments, during normal operations, new data that is generated by the virtual servers can also be stored in the backup portion of the data storage portion  118 . The newly generated data can be stored, for example, at predetermined time intervals or once a certain quantity of data has accumulated. The time interval for saving the data, or the amount of data required before saving, can be dependent on the particular application and/or specific user needs. For example, if a client generates a large quantity of business transactions, then such backups (or snapshots) can be taken at shorter intervals such as, for example, hourly or less. If a client does not conduct a great quantity of transactions, then it may be sufficient to create a backup within a three or four hour interval. According to further embodiments of the invention, all data generated by the virtual servers  120 - 128  can be stored in the data storage portion  118 . Such embodiments of the invention can reduce and/or eliminate the need for backups. Further, data loss can also be reduced if the virtual server crashes because there would be no significant information stored in the virtual server. 
     According to one or more embodiments of the present invention, the storage system can be provided as a separate storage server  130  that is distinct, or physically separated, from the physical server  110 . The storage server  130  can be in the form of, for example, a data storage warehouse that includes multiple storage units (such as magnetic drives) to store the appropriate information. According to such embodiments, the physical server  110  would create each virtual server  120 - 128  and assign a specific identity to the virtual servers  120 - 128 . The identity would include the function of the virtual server, the type of operating system that will be used, as well as a temporary and/or permanent network address that can be used in order to access the storage server  130  and load the appropriate information. The virtual servers  120 - 128  access the information across a network  138  such as, for example, the Internet. Furthermore, any upgrades or changes that need to be made to master copies stored on the storage server  130  can be done by the physical server  110  across the network  138 . According to further embodiments of the present invention, a configuration server  140  can also be provided to generate certain hardware profiles for the virtual servers  120 - 128 . The hardware profiles can include, for example, temporary and/or permanent IP addresses (i.e., network addresses), virtual file storage systems, as well as CPU allocation. 
     According to one or more embodiments of the present invention, the configuration server  140  is capable of detecting the current configuration of each virtual server  120 - 128 . This allows the configuration server  140  to customize configuration information so that only essential files are transferred to the virtual servers  120 - 128 . For example, if the operating system of a virtual server  120 - 128  must be upgraded, only certain files would be necessary, and not the entire distribution. By detecting the configuration of the virtual server  120 - 128  in advance, the configuration server  140  is capable of identifying the files necessary for the upgrade and transferring only the necessary files. Similarly, when switching between different implementations of an operating system such as, for example, Red Hat Linux and Debian Linux, the configuration server  140  would identify the current configuration of the virtual sever and transfer only the necessary files. Such embodiments can reduce the amount of time necessary to change and/or upgrade the configuration of the virtual servers  120 - 128 . 
     According to one or more further embodiments of the present invention, the virtual servers  120 - 128  use the data storage portion  118  to maintain all new data that is generated during operation. Thus, such embodiments can reduce the need for separate data backups of the virtual servers  120 - 128 , because the new data is stored directly in the data storage portion  118 . In the event of a system failure, the effected virtual server can easily be recreated from scratch, because there is no significant data stored within the effected virtual server. Additionally, the risk of data loss between backups can be reduced. 
       FIG. 2  illustrates creation of a virtual server according to one or more embodiments of the present invention. At  210 , the physical server creates the virtual server. As part of creating the virtual server, the physical server can execute a script file or command line function. The script and/or command can include parameters necessary to specify the location of files, designate the type of operating system, and define temporary and/or permanent network addresses for the virtual server. The virtual server retrieves an appropriate operating system at  220 . Once the operating system is retrieved, configuration information is retrieved at  230 . The operating system and the configuration information are retrieved from the storage system, as previously discussed. At  240 , the virtual server is configured based on the operating system and the configuration information that has been retrieved. For example, the virtual server can be configured as a web server running the Linux operating system. Various protocols and hardware profiles can also be defined so that the virtual server appears to be a normal physical server. At  250 , application data is loaded by the virtual server. The application data can include, for example, software and data files that are necessary in order to implement the designated functions. At  260 , the virtual server begins performing designated operations/services. 
       FIG. 3  illustrates creation of a virtual server according to one or more embodiments of the present invention. At  310 , the virtual server is created. This can be done, for example, by executing a command line statement to create the virtual server. At  312 , various resources are allocated to the virtual server. Such resources can include, for example, CPU allocation, file system allocation, memory allocation, etc. At  314 , the virtual server is assigned an identity. According to various embodiments of the invention, this identity can correspond to the function that the virtual server will be performing. For example, the virtual server can be created and identified as a web server. According to other embodiments, the identity can also include information regarding the type of operating system that will be used by the virtual server as well as temporary and/or permanent network addresses. 
     At  316 , the virtual server loads the appropriate operating system from the operating system storage portion. At  318 , the virtual server boots the operating system. During the boot process, the virtual server also retrieves configuration information at  320 . At  322 , various temporary and/or permanent IP (or network) addresses are assigned to the virtual server. The temporary and/or permanent IP addresses can be used, for example, to facilitate network communication between other servers and/or users. At  324 , appropriate security rules are applied to the virtual server. Such security rules can define, for example, the type of access that users and other servers will have to the virtual server. At  326 , appropriate application data is loaded by the virtual server. At  328 , the virtual server begins functioning according to its specified designation. 
       FIG. 4  illustrates management of one or more virtual servers according to various embodiments of the present invention. The process begins at a point where the virtual servers have already been created and configured. All appropriate applications have been loaded and the virtual server is operating as designated. At  400 , data generated and/or received by the virtual servers during normal operation is collected. At  410 , it is determined whether the virtual servers will store newly generated data on the physical server. For example, all of the new data generated by the virtual servers could be stored on the data storage device so that backups would not be necessary. If the new data will be stored on the physical server, then it is stored and control passes to  428 . Alternatively, if data will not be stored on the physical server, then control passes to  412 . At  412 , it is determined if the collected data exceeds a predetermined threshold. This determination is made for each virtual server that is being managed. As previously discussed, the threshold can correspond to, for example, a predetermined size limit on the amount of data that has been collected. If the collected data exceeds the threshold, then at  414 , a snapshot of the data (or backup) is created. Operation of the virtual server then resumes. If the collected data does not exceed the predetermined threshold, then control passes to  416 . 
     It is then determined if the time from the last backup has exceeded a predetermined time limit. If the time limit has been exceeded, then a snapshot (or backup) is created at  418 . The operation of the virtual server then resumes and data continues to be collected. However, if the time limit has not been exceeded, then at  420 , it is determined if any of the virtual servers have suffered from a failure. If no failures have occurred then operation resumes. If any failures are detected, however, then at  422  it is determined whether the identified server (or servers) has suffered from a partial or complete failure. If the failure is only partial, then at  424  it is determined whether the virtual server is stable enough to continue operation. If the virtual server is stable, then at  428  data from the most recent snapshot (or backup) is loaded and operation of the virtual server resumes. However, if the virtual server is not operating properly or if a complete failure has occurred, then at  426  the virtual server is rebooted. By rebooting the virtual server, the operating system, configuration information, and application software are all reloaded. Once all of the files have been loaded, the most recent snapshot is loaded by the virtual server at  428 . Further, if newly generated data was stored on the physical server at  410 , then this data would be loaded at  428  instead of the most recent snapshot. At  430 , operation of the virtual server resumes. Control then returns to  410  where data from the virtual servers continue to be collected and management of the virtual servers continues. 
     The foregoing embodiments are provided by way of explanation of the invention, which is not intended to be limited thereto. In fact, those of ordinary skill in the art will appreciate, upon reading the present specification and viewing the present drawings, that various modifications and variations can be made. For example, features illustrated or described as part of one embodiment can be used on other embodiments to yield a still further embodiment. Additionally, certain features may be interchanged with similar devices or features not mentioned yet which perform the same or similar functions. Furthermore, the present invention can be implemented on various computer systems and/or servers using any operating system including, Windows, MacOS, Unix, Linux, etc., and can be applied to any programming language. It is therefore intended that such modifications and variations are included within the totality of the present invention. 
     The many features and advantages of the invention are apparent from the detailed specification, and thus, the appended claims are intended to cover all such features and advantages which fall within the true spirit and scope of the invention. Further, since numerous modifications and variations will become readily apparent to those skilled in the art, the invention should not be limited to the exact construction and operation illustrated and described. Rather, all suitable modifications and equivalents may be considered as falling within the scope of the claimed invention.