1. Technical Field
The present invention relates to a system and method that deploys an operating system in a peer-to-peer network environment. More particularly, the present invention relates to a system and method that uses a hierarchy of client/servers that deploy the operating system to other clients in the peer-to-peer network.
2. Description of the Related Art
A peer-to-peer computer network is a network that relies primarily on the computing power and bandwidth of the participants in the network rather than concentrating it in a relatively low number of servers. Peer-to-peer networks are typically used for connecting nodes via largely ad hoc connections. Peer-to-peer networks are used for many purposes, such as sharing files containing audio, video, data or anything in digital format. In addition, peer-to-peer networks are used to pass real-time data, such as telephony traffic.
One advantage of peer-to-peer networks is that all clients provide resources, including bandwidth, storage space, and computing power. Thus, as nodes arrive and demand on the system increases, the total capacity of the system also increases. This is not true of a client-server architecture with a fixed set of servers, in which adding more clients could mean slower data transfer for all users. The distributed nature of peer-to-peer networks also increases robustness in case of failures by replicating data over multiple peers.
One type of peer-to-peer network are computers arranged in a “grid” environment. A grid environment is an emerging computing model that provides the ability to perform higher throughput computing by taking advantage of many networked computers to model a virtual computer architecture that is able to distribute process execution across a parallel infrastructure. Grids use the resources of many separate computers connected by a network, such as the Internet, to solve large-scale computations. Grids provide the ability to perform computations on large data sets, by breaking them down into many smaller ones, or provide the ability to perform many more computations at once than would be possible on a single computer, by modeling a parallel division of labor between processes.
A challenge in managing large peer-to-peer networks, such as those arranged in a grid environment, is deploying, and updating, the operating systems used by the individual computer systems that make up the peer-to-peer network. One approach is to manually install the operating systems onto the various computer systems. Because many computer systems can be involved, a manual operation of this sort is typically takes considerable time. Another approach is to clone one system's hard drive onto a number of other hard drives and then physically install the cloned drives into the other computer systems. A challenge with this approach is, again, the time needed to clone the hard drives and the need to physically install the cloned drives into the various systems (i.e., requiring physical access to the various computer systems included in the peer-to-peer network).
It has been discovered that the aforementioned challenges are resolved using a system, method and computer program product that identifies, at a first computer system, one or more second computer system identifiers that correspond to a plurality of second computer systems. The first computer system sends, via the computer network, a Wake-on-LAN instruction to each of the second computer systems. The first computer system also boots the second computer systems over the computer network. When the second computer systems are booted, they identify a set of third computer identifiers that corresponds to each of the selected second computer systems. Each of the second computer systems sends, via the computer network, the Wake-on-LAN instruction to each of the third computer systems, and the third computer systems are booted over the computer network from the second computer systems. In one embodiment, a control file lists the first computer system as a “server” of the second computer systems and lists the second computer systems as “servers” of the third computer systems. The control file is transmitted from a server to each of the server's clients. When a client is booted, it checks the control file to determine if the client is also a server to one or more other computer systems.
In one embodiment, the server computer systems listen for boot requests being transmitted by requesters. The servers compare the requesters' identifiers to identifiers in the control file that indicate which clients are being handled by the particular server. If a requestor is one of the clients being managed by the server, then the server responds to the boot request by booting the requestor.
In one embodiment, in addition to booting the client computer systems, the servers also transfer an operating system image to each of the booted second computer systems, with the operating system image corresponding to an operating system. The operating system is then installed on the client computer systems using the transferred operating system images.
In another embodiment, before sending the Wake-on-LAN instructions to the client computer systems, the computer systems are prepared, or “readied.” A ready instruction is received at the computer systems. This causes each computer system to read a control file that determines whether the computer system is a server computer system to other computer systems. If the computer system is a server computer system, then the server computer system sends the ready instruction to its client computer systems. The ready instruction causes the system to set a Wake-on-LAN flag in the computer system, set a boot from LAN flag, and shutdown the computer system. Now, the computer system is prepared to receive a Wake-on-LAN instruction and boot from the network.
The foregoing is a summary and thus contains, by necessity, simplifications, generalizations, and omissions of detail; consequently, those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.
The present invention may be better understood, and its numerous objects, features, and advantages made apparent to those skilled in the art by referencing the accompanying drawings, wherein:
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention, which is defined in the claims following the description.
Second computer systems 120, as shown, identify third computer systems 130 using control file 115. The second computer systems are identified as clients of first computer system 100 and as servers of the various third computer systems 130. The second computer systems act in a manner analogous to the first computer system described above. Second computer systems 120 identify their respective clients (third computer systems 130) by reading control file 115. In the example shown, the second computer system identified as “Device 1” acts as a server for third computer systems 130 (Devices 1A, 1B, 1C, through 1N). Likewise, the second computer system identified as “Device 2” would act as a server for third computer systems 130 (Devices 2A, 2B, 2C, through 2N which are not shown in
Using the methodology described above, any number of computer system levels (e.g., fifth computer systems, sixth computer systems, etc.) can be employed. In this manner, the number of clients serviced by each server can be optimized based on the operating environment. Suppose, for example, that an optimal number of clients to be serviced by an individual server is ten. If the grid or peer-to-peer network has roughly one hundred computer systems, then three levels of computer systems would be used (first computer system 100, second computer systems 120, and third computer systems 130) with the third computer systems being the end nodes. On the other hand, if the grid or peer-to-peer network has one thousand computer systems, then four levels of computer systems would be used (first computer system 100, second computer systems 120, third computer systems 130, and fourth computer systems 340 (seen in
Along with server identifier field 210 are several client identifier fields 220, 230, 240, through 250. Note that the devices that appear in the control file shown in
The next row (row 7) shows a fourth set of computer systems being served by computer systems included in the third computer systems. Device 1A (a third computer system) is shown serving Devices 1A1 through 1AN. Row 8 shows Device 1B serving Devices 1B1 though 1BN, and row 9 shows Device 1C serving Devices 1C1 though 1CN. The ellipses in row 10 indicate that the definition of servers and clients continues until all servers and clients are identified.
As will be further explained in
If the computer system is booting from the network, then decision 420 branches to “yes” branch 425 whereupon, at step 430, the computer system broadcasts a boot request across the computer network. The computer system's server responds and boots the computer system at step 435. Also, during step 435, control file 115 is loaded onto the computer system from the server. At step 440, the operating system is installed by processing an operating system image received from the server. In addition, at step 440, the device's server disables itself as an installer of this client computer system. Returning to decision 420, if the device (computer system) is not booting from the network, then decision 420 branches to “no” branch 445 bypassing steps 430 through 440.
At step 450, the computer system reads control file 115 (see
At predefined process 480, the device handles various requests (see
At step 540, the server listens for client boot requests. When the client computer systems were woken up using the Wake-on-LAN instruction, they powered on and booted using the BIOS stored in the client computer systems which instructed the client computer systems to boot from the network (LAN). As shown in
In one embodiment, the client computer system clears the boot from network flag so that, when the client computer system is re-booted, the client computer system boots using the operating system installed on the client computer system rather than booting from the network. When a new operating system or a new version of the operating system is being deployed, the client computer system is readied for the deployment using the steps shown in
A determination is made as to whether this server is the first server (e.g., first computer system 100, also referred to as Device 0) in the peer-to-peer network or grid (decision 626). If this is the first server, then decision 625 branches to “yes” branch 628 whereupon, at step 630, the first server (first computer system 100) is readied for the new operating system deployment (e.g., by automatically or manually installing the operating system on first computer system 100). At step 635, the first server waits for the clients in the peer-to-peer network to shutdown. Once the clients have been shutdown (i.e., with Wake-on-LAN enabled), the first server runs predefined process 640 which executes the server routine that deploys the operating system (see
Returning to decision 625, if this server is not the first server (e.g., this computer system is one of the second computer systems, etc.), then decision 625 branches to “no” branch 642 whereupon, at step 645, the computer system is readied for the new operating system. This includes setting the device's Wake-on-LAN flag (step 650) so that the device can be woken up by the device's server and, at step 655, setting the device's boot from network flag so that the device will boot from the network rather than booting from an operating system previously installed on the device. At step 660, the device is shutdown. At this point, the device waits to be woken up by the device's server as identified in control file 115.
Turning now to the client's handling of ready instructions, processing commences at 661 whereupon, at step 665, the client receives a ready instruction from the client's server. At step 668, the client reads control file 115 and, at step 670, the client compares its unique identifier (e.g., MAC address, IP address, etc.) to the server identifiers listed in control file 115. A determination is made as to whether this client device is also a server to other devices (decision 675). If this device is also a server to other devices, then decision 675 branches to “yes” branch 678 whereupon, at step 680, the server process is executed (steps 600 through 660). On the other hand, if this device does not act as a server to other devices, then decision 675 branches to “no” branch 682, whereupon, at step 685, the computer system is readied for the new operating system. This includes setting the device's Wake-on-LAN flag (step 688) so that the device can be woken up by the device's server and, at step 690, setting the device's boot from network flag so that the device will boot from the network rather than booting from an operating system previously installed on the device. At step 695, the device is shutdown. At this point, the device waits to be woken up by the device's server as identified in control file 115.
PCI bus 714 provides an interface for a variety of devices that are shared by host processor(s) 700 and Service Processor 716 including, for example, flash memory 718. PCI-to-ISA bridge 735 provides bus control to handle transfers between PCI bus 714 and ISA bus 740, universal serial bus (USB) functionality 745, power management functionality 755, and can include other functional elements not shown, such as a real-time clock (RTC), DMA control, interrupt support, and system management bus support. Nonvolatile RAM 720 is attached to ISA Bus 740. Service Processor 716 includes JTAG and I2C busses 722 for communication with processor(s) 700 during initialization steps. JTAG/I2C busses 722 are also coupled to L2 cache 704, Host-to-PCI bridge 706, and main memory 708 providing a communications path between the processor, the Service Processor, the L2 cache, the Host-to-PCI bridge, and the main memory. Service Processor 716 also has access to system power resources for powering down information handling device 701.
Peripheral devices and input/output (I/O) devices can be attached to various interfaces (e.g., parallel interface 762, serial interface 764, keyboard interface 768, and mouse interface 770 coupled to ISA bus 740. Alternatively, many I/O devices can be accommodated by a super I/O controller (not shown) attached to ISA bus 740.
In order to attach computer system 701 to another computer system to copy files over a network, LAN card 730 is coupled to PCI bus 710. Similarly, to connect computer system 701 to an ISP to connect to the Internet using a telephone line connection, modem 775 is connected to serial port 764 and PCI-to-ISA Bridge 735.
While
One of the preferred implementations of the invention is a client application, namely, a set of instructions (program code) or other functional descriptive material in a code module that may, for example, be resident in the random access memory of the computer. Until required by the computer, the set of instructions may be stored in another computer memory, for example, in a hard disk drive, or in a removable memory such as an optical disk (for eventual use in a CD ROM) or floppy disk (for eventual use in a floppy disk drive), or downloaded via the Internet or other computer network. Thus, the present invention may be implemented as a computer program product for use in a computer. In addition, although the various methods described are conveniently implemented in a general purpose computer selectively activated or reconfigured by software, one of ordinary skill in the art would also recognize that such methods may be carried out in hardware, in firmware, or in more specialized apparatus constructed to perform the required method steps. Functional descriptive material is information that imparts functionality to a machine. Functional descriptive material includes, but is not limited to, computer programs, instructions, rules, facts, definitions of computable functions, objects, and data structures.
While particular embodiments of the present invention have been shown and described, it will be obvious to those skilled in the art that, based upon the teachings herein, that changes and modifications may be made without departing from this invention and its broader aspects. Therefore, the appended claims are to encompass within their scope all such changes and modifications as are within the true spirit and scope of this invention. Furthermore, it is to be understood that the invention is solely defined by the appended claims. It will be understood by those with skill in the art that if a specific number of an introduced claim element is intended, such intent will be explicitly recited in the claim, and in the absence of such recitation no such limitation is present. For non-limiting example, as an aid to understanding, the following appended claims contain usage of the introductory phrases “at least one” and “one or more” to introduce claim elements. However, the use of such phrases should not be construed to imply that the introduction of a claim element by the indefinite articles “a” or “an” limits any particular claim containing such introduced claim element to inventions containing only one such element, even when the same claim includes the introductory phrases “one or more” or “at least one” and indefinite articles such as “a” or “an”; the same holds true for the use in the claims of definite articles.