U.S. patent application number 13/174359 was filed with the patent office on 2013-01-03 for virtual machine disk image installation.
Invention is credited to Yulia Gaponenko, Alexey Miroshkin, Indrajit Poddar, Vladislav B. Ponomarev, Igor Sukharev.
Application Number | 20130007726 13/174359 |
Document ID | / |
Family ID | 47392069 |
Filed Date | 2013-01-03 |
United States Patent
Application |
20130007726 |
Kind Code |
A1 |
Poddar; Indrajit ; et
al. |
January 3, 2013 |
Virtual machine disk image installation
Abstract
A processor copies first and second installable binary files
into first and second disk images of first and second virtual
machines, respectively, before instantiating the images. The
processor can copy first installation parameters and second
installation parameters into the first image. The processor copies
additional first installation parameters and additional second
installation parameters into the second image. The processor at
least partially executes a first installation process, based on the
first installation parameters, to install the first installable
binary files, and a second installation process, based on the
additional second installation parameters, to install the second
installable binary files. The processor at least partially executes
the installation processes in an interleaved manner in relation to
one another, based on dependencies. After instantiating the images,
the processor can execute scripts based on the second installation
parameters and the additional second installation parameters to
complete installation.
Inventors: |
Poddar; Indrajit;
(Sewickley, PA) ; Sukharev; Igor; (Zheleznyaka,
RU) ; Ponomarev; Vladislav B.; (Voronezh, RU)
; Gaponenko; Yulia; (Moscow, RU) ; Miroshkin;
Alexey; (Lazareva, RU) |
Family ID: |
47392069 |
Appl. No.: |
13/174359 |
Filed: |
June 30, 2011 |
Current U.S.
Class: |
717/175 ;
717/174 |
Current CPC
Class: |
G06F 2009/45583
20130101; G06F 8/63 20130101; G06F 9/45558 20130101; G06F 8/64
20130101; G06F 2009/4557 20130101 |
Class at
Publication: |
717/175 ;
717/174 |
International
Class: |
G06F 9/445 20060101
G06F009/445 |
Claims
1. (canceled)
2. (canceled)
3. (canceled)
4. (canceled)
5. (canceled)
6. (canceled)
7. (canceled)
8. (canceled)
9. (canceled)
10. (canceled)
11. A computer program product comprising: a computer-readable
storage medium having computer-readable code embodied therein, the
computer-readable code executable by a processor to install one or
more first software components of a first disk image of a first
virtual machine and to install one or more second software
components of a second disk image of a second virtual machine, the
computer-readable code comprising: first computer-readable code to
permit a topology model of the first software components and of the
more second software components to be created, the topology model
including dependencies between the first software components and
the second software components; second computer-readable code to
generate an ordered sequence of installation operations based on
the dependencies between the first software components and the
second software components; third computer-readable code to at
least partially install the first disk image of the first virtual
machine and the second disk image of the second virtual machine in
an interleaved manner by executing at least some of the
installation operations in the ordered sequence, without
instantiating the first disk image of the first virtual machine and
without instantiating the second disk image of the second virtual
machine.
12. The computer program product of claim 10, wherein the
computer-readable code further comprises: fourth computer-readable
code to determine one or more first installation operations of the
installation operations that can be completed without instantiating
the first disk image of the first virtual machine and without
instantiating the second disk image of the second virtual machine,
such that the fourth computer-readable code is to execute the first
installation operations to partially install the first disk image
of the first virtual machine and the second disk image of the
second virtual machine; fifth computer-readable code to determine
one or more second installation operations of the installation
operations that cannot be completed without instantiating the first
disk image of the first virtual machine and without instantiating
the second disk image of the second virtual machine; sixth
computer-readable code to install one or more first scripts within
the first disk image of the first virtual machine and to install
one or more second scripts within the second disk image of the
second virtual machine, the first scripts to perform the second
installation operations pertaining to the first software components
upon instantiation of the first disk image of the first virtual
machine, the second scripts to perform the second installation
operations pertaining to the second software components upon
instantiation of the second disk image of the second virtual
machine.
13. The computer program product of claim 10, wherein the first
computer-readable code is to permit the topology model to be
created by: permitting a user to select within a first graphical
user interface (GUI) the first disk image of the first virtual
machine, the second disk image of the second virtual machine, the
first software components of the first disk image of the first
virtual machine, and the software components of the second disk
image of the second virtual machine; and, permitting the user to
create the dependencies within a second GUI.
14. A computer program product comprising: a computer-readable
storage medium having computer-readable code embodied therein, the
computer-readable code executable by a processor to install a disk
image of a virtual machine, the computer-readable code comprising:
first computer-readable code to perform an offline installation
process of the disk image of the virtual machine in which a first
part of installation of the disk image of the virtual machine is
performed without instantiating the disk image of the virtual
machine, such that the virtual machine is not running; and, second
computer-readable code to perform an online installation process of
the disk image of the virtual machine in which a remaining part of
the installation of the disk image of the virtual machine is
performed upon the disk image of the virtual machine having been
instantiated.
15. The computer program product of claim 14, wherein the offline
installation process comprises: mounting the disk image of the
virtual image without instantiating the disk image of the virtual
machine; copying one or more installable binary files into the disk
image of the virtual machine; copying one or more first
installation parameters into the disk image of the virtual machine,
the first installation parameters for the first part of the
installation of the disk image of the virtual machine, the first
installation parameters populated with values without the disk
image of the virtual machine having to be instantiated; copying one
or more second installation parameters into the disk image of the
virtual machine, the second installation parameters for the
remaining part of the installation of the disk image of the virtual
machine, the second installation parameters populated with values
upon the disk image of the virtual machine having been
instantiated; copying one or more scripts into the disk image of
the virtual machine, the scripts executed after the disk image of
the virtual machine has been instantiated; performing the first
part of the installation of the disk image of the virtual machine,
based on the first installation parameters, to install the
installable binary files within the disk image of the virtual
machine without instantiating the disk image of the virtual
machine.
16. The computer program product of claim 15, wherein the online
installation process comprises, upon the disk image of the virtual
machine having been instantiated: executing the scripts, based on
the second installation parameters that have now been populated
with values, to perform the remaining part of the installation of
the disk image of the virtual machine.
17. A system comprising: a processor; a computer-readable data
storage medium to store a disk image of a virtual machine; an
installation engine implemented at least by the processor to copy
one or more installable binary files of one or more software
components into the disk image, to copy one or more installation
parameters into the disk image, and to at least partially execute
an installation process based on the installation parameters to
install the installable binary files within the disk image, without
instantiating the disk image.
18. The system of claim 17, wherein the installation parameters are
first installation parameters that are populated with values
without the disk image having to be instantiated, wherein the
installation engine is further to copy one or more second
installation parameters into the disk image, and to copy one or
more scripts into the disk image, wherein the second installation
parameters populated with values upon the disk image of the virtual
machine having been instantiated, and wherein the system further
comprises an activation engine copied by the installation engine
into the disk image, the activation engine to after instantiation
of the virtual machine execute the scripts, based on the second
installation parameters that have now been populated with values,
to complete the installation process.
19. The system of claim 17, wherein the disk image of the virtual
machine is a first disk image of a first virtual machine, the
installable binary files are first installable binary files, the
installation parameters are first installation parameters, and the
installation process is a first installation process, wherein the
computer-readable data storage medium is further to store a second
disk image of a second virtual machine, and wherein the
installation engine is further to copy one or more second
installable binary files into the second disk image, to copy one or
more second installation parameters into the second disk image, and
is to at least partially execute a second installation process
based on the second installation parameters to install the second
installable binary files within the disk image, without
instantiating the second disk image.
20. The system of claim 19, further comprising a modeling engine
implemented at least by the processor to: permit creation of a
topology model of one or more first software components
corresponding to the first installable binary files and of one or
more second software components corresponding to the second
installable binary files, permit modeling of dependencies between
the first software components and the second software components of
the topology, and determine installation operations of the first
installation process and of the second installation process to
generate an ordered sequence of the installation operations based
on the dependencies.
Description
BACKGROUND
[0001] A computing device typically runs one instance of an
operating system that has access to the hardware resources of the
computing device. However, a technique known as virtualization
permits a computing device to run a number of instances of
operating systems. In virtualization, the computing device
instantiates a number of such virtual machines, and each virtual
machine runs its own instance of an operating system.
SUMMARY
[0002] A method of an embodiment of the disclosure includes a
processor copying one or more installable binary files for one or
more software components into a disk image of a virtual machine,
prior to instantiating the disk image of the virtual machine, such
that the virtual machine is not running. The method includes the
processor copying one or more installation parameters into the disk
image of the virtual machine. The installation parameters are for
an installation process to install the installable binary files
within the disk image of the virtual machine. The method includes
the processor at least partially executing the installation
process, based on the installation parameters, to install the
installable binary files within the disk image of the virtual
machine, without instantiating the disk image of the virtual
machine. The method includes the processor instantiating the disk
image of the virtual machine, such that the virtual machine is
running.
[0003] A computer program product of an embodiment of the
disclosure includes a computer-readable storage medium having
computer-readable code embodied therein. A processor executes the
computer-readable code to install one or more first software
components of a first disk image of a first virtual machine and to
install one or more second software components of a second disk
image of a second virtual machine. The computer-readable code
includes first computer-readable code to permit creation of a
topology model of the first software components and of the second
software components. The topology model includes dependencies
between the first software components and the second software
components.
[0004] The computer-readable code includes second computer-readable
code to generate an ordered sequence of installation operations
based on the dependencies between the first software components and
the second software components. The computer-readable code includes
third computer-readable code to at least partially install the
first disk image of the first virtual machine and the second disk
image of the second virtual machine in an interleaved manner, by
executing at least some of the installation operations in the
ordered sequence. Such at least partial installation occurs without
instantiating the first disk image of the first virtual machine and
without instantiating the second disk image of the second virtual
machine.
[0005] A computer program product of another embodiment of the
disclosure includes a computer-readable storage medium having
computer-readable code embodied therein. A processor executes the
computer-readable code to install a disk image of a virtual
machine. The computer-readable code includes first
computer-readable code to perform an offline installation process
of the disk image of the virtual machine in which a first part of
installation of the disk image of the virtual machine occurs
without instantiating the disk image of the virtual machine, such
that the virtual machine is not running. The computer-readable code
includes second computer-readable code to perform an online
installation process of the disk image of the virtual machine in
which a remaining part of the installation of the disk image of the
virtual machine occurs upon instantiating the disk image of the
virtual machine.
[0006] A system of an embodiment of the disclosure includes a
processor, a computer-readable data storage medium, and an
installation engine. The computer-readable data storage medium
stores a disk image of a virtual machine. At least the processor
implements the installation engine. The installation engine copies
one or more installable binary files into the disk image, copies
one or more installation parameters into the disk image, and at
least partially executes an installation process based on the
installation parameters to install the installable binary files
within the disk image, without instantiating the disk image.
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
[0007] The drawings referenced herein form a part of the
specification. Features shown in the drawing illustrate only some
embodiments of the disclosure, and not of all embodiments of the
disclosure, unless the detailed description explicitly indicates
otherwise, and readers of the specification should not make
implications to the contrary.
[0008] FIG. 1 is a flowchart of a method for installing software
components into a disk image of a virtual machine, according to an
embodiment of the disclosure.
[0009] FIG. 2 is a flowchart of a method for installing software
components into a disk image of a virtual machine, according to
another embodiment of the disclosure.
[0010] FIG. 3 is a flowchart of a method for installing software
components into multiple disk images of multiple virtual machines,
according to an embodiment of the disclosure.
[0011] FIG. 4 is a flowchart of a method for installation software
components into multiple disk images of multiple virtual machines,
according to another embodiment of the disclosure.
[0012] FIG. 5 is a diagram of an example topology model, according
to an embodiment of the disclosure.
[0013] FIG. 6 is a diagram of a system, according to an embodiment
of the disclosure.
DETAILED DESCRIPTION
[0014] The following detailed description of exemplary embodiments
of the disclosure refers to the accompanying drawings that form a
part of the description. The drawings illustrate specific exemplary
embodiments in which the disclosure may be practiced. The detailed
description, including the drawings, describes these embodiments in
sufficient detail to enable those skilled in the art to practice
the disclosure. Those skilled in the art may further utilize other
embodiments of the disclosure, and make logical, mechanical, and
other changes without departing from the spirit or scope of the
disclosure. Readers of the following detailed description should,
therefore, not interpret the description in a limiting sense, and
only the appended claims define the scope of the embodiment of the
disclosure.
[0015] As noted in the background section, virtual machines permit
the same hardware of a computing device to run multiple operating
system instances, in accordance with a technique known as
virtualization. An entity like a corporation may deploy thousands
of virtual machines, if not more. The deployment process typically
involves having a disk image of a virtual machine, and copying this
disk image onto a computing device on which the process deploys the
virtual machine.
[0016] The deployment process then instantiates the disk image of
the virtual machine on this computing device. Instantiating the
disk image of the virtual machine involves tying the virtual
machine to the computing device in question, and starting the
virtual machine. After instantiating the virtual machine, resulting
in the virtual machine running, the deployment process installs
software components other than the operating system on the virtual
machine, completing the process.
[0017] This process is laborious, however, when administrators or
other users have to deploy thousands or more of virtual machines.
The deployment process requires copying the disk image for a
virtual machine to each computing device on which the process then
instantiates the image. More significantly, the deployment process
requires instantiating the disk image at each computing device so
that the virtual machine runs on each such computing device, prior
to installing additional software components on the virtual
machine. While administration tools exist to assist in installing
such additional software components, they nevertheless require a
currently running virtual machine prior to installing the software
components on the virtual machine. That is, the administration
tools cannot simply install the software components on the disk
image of the virtual machine prior to instantiating the virtual
machine.
[0018] Furthermore, the software components installed over multiple
virtual machines, in a discrete or distributed fashion, may have
intertwined installations. For instance, the deployment process may
have to partially install a first software component within a first
virtual machine, and then partially install a second software
component within a second virtual machine before the process can
complete installation of the first software component within the
first virtual machine. Such interdependent software component
installation is typically manually intensive.
[0019] Embodiments of the disclosure provide for techniques that
overcome these disadvantages. An embodiment of the disclosure
copies the installable binary files for the software components
into a disk image of a virtual machine, before instantiating the
disk image and thus when the virtual machine is not running. The
embodiment further copies into the disk image the installation
parameters for the installation process to install the installable
binary files within the disk image.
[0020] The installation parameters can include first installation
parameters that the installation process can populate with values
prior to instantiating the disk image of the virtual machine, as
well as second installation parameters that the installation
process cannot populate until the process has instantiated the disk
image. If just first installation parameters are present, then the
embodiment of the disclosure completely executes the installation
process, based on these first installation parameters, to
completely install the installable binary files within the disk
image, without first instantiating the disk image of the virtual
machine. The embodiment can then instantiate the disk image, such
that the virtual machine runs with the installation process having
preinstalled all the desired software components.
[0021] If second installation parameters also exist, however, then
the embodiment of the disclosure partially executes the
installation process to install the installable binary files as
much as possible without first instantiating the disk image. Once
the embodiment has instantiated the disk image, the embodiment
executes previously copied scripts from the disk image, based on
the second installation parameters that now have populated values,
to complete the installation process of the desired software
components. This embodiment, then, installs the software components
without instantiating the disk image to the extent possible, and
after the embodiment has instantiated the disk image, the
embodiment completes installation of the software components.
[0022] As noted above, there may further be two disk images: a
first disk image of a first virtual machine, and a second disk
image of a second virtual machine. Such an embodiment of the
disclosure can perform an installation process of the installable
files for the first disk image in an interleaved manner in relation
to an installation process of the installable files for the second
disk image. This embodiment models dependencies between the
software components for the first disk image and the software
components for the second disk image, and models installation
operations in the installation processes for the disk images to
generate an ordered sequence of these operations based on the
dependencies. As such, the embodiment ultimately properly installs
the installable files for the first and second disk images in their
respective disk images, in a manner that is at least substantially
if not fully automated.
[0023] A disk image of a virtual machine, as this term is used
herein, is a single file that contains the complete contents and
directory structure representing a virtual data storage medium or
device of the virtual machine. For example, a virtual machine may
instantiate a particular operating system. An embodiment of the
disclosure does not start up the virtual machine with no installed
operating system and then install the operating system on the
virtual machine in a manner akin to installing the operating system
on a physical machine or computing device. Rather, a disk image of
the virtual machine includes the files and structure of the
operating system as if the embodiment had installed the operating
system in this manner. As such, this embodiment simply instantiates
the disk image on a physical machine or computing device, so that
the embodiment can start up the virtual machine with the operating
system effectively preinstalled.
[0024] FIG. 1 shows a method 100 for installing software components
other than the operating system into a disk image of a virtual
machine, according to an embodiment of the disclosure. The method
100 relates to the case of one disk image of one virtual machine.
The method 100 further specifically relates to the case in which
the installable binary files of the software components do not
require any installation parameters that are unknown until the
method 100 has instantiated the disk image. As such, the method 100
provides for installation of the software components completely
prior to instantiating the disk image of the virtual machine. A
processor of a computing device, such as a desktop or laptop
computer, among other types of computing devices, can perform the
method 100.
[0025] The processor can mount the disk image of the virtual
machine into a host computing device (102). The disk image of the
virtual machine already includes the files for the operating system
of which the virtual machine is an instance, as if the processor
had started the virtual machine without an operating system and
thereafter had subsequently installed an operating system on the
virtual machine. That is, the virtual machine of the disk image
includes a preinstalled operating system. The host computing device
is a computing device under control of a user who is responsible
for deploying instances of the disk image onto various other
computing devices.
[0026] Commands such as chroot, which are available on the
UNIX.RTM. operating system as well as other operating systems, can
make the mount point of a disk image appear as the root directory
of the host computing device. This permits execution of
installation operations on the host computing device rather than on
the virtual machine instantiated from the disk image. UNIX.RTM. is
a registered trademark of The Open Group, of San Francisco,
Calif.
[0027] The processor can receive the installable binary files and
installation parameters to install these files within the disk
image (103). For instance, a topology model can specify the
installable binary files and/or the installation parameters, as
described in more detail below. The installation process may
further specify the installable binary files that the processor
performs to unpack the actual files representing the software
components, and to install these files in appropriate directories
or folders of the disk image. The installable binary files may
include "setup" files for computer programs (i.e., the software
components in question).
[0028] More generally, an installable binary file is a binary file
in that it is a computer-readable file that contains any type of
data, encoded in binary form for computer storage and/or processing
purposes. An installable binary file is an installable file in that
it is a computer-readable file that the processor uses to install
and/or for installing a corresponding software component. An
installable binary file may thus represent or include the
executable code of a software component, and/or data that the
executable code requires in order to run properly.
[0029] The installation parameters are those that the processor can
know and populate with values prior to the processor instantiating
the disk image. For example, when the processor performs the
installation process, there may be some options as to how the
processor is to install the software components. The installation
parameters may specify these options. The installation parameters
may also include configuration parameters for related software
components. For example, the installation parameters for a client
software component may include the hostname for a server software
component.
[0030] The processor copies into the disk image mounted on the host
computing device the installable binary files for the software
components that the processor is to install within the disk image
of the virtual machine, prior to the processor instantiating the
disk image (104). Likewise, the processor copies the installation
parameters for the installation process into the disk image of the
virtual machine, prior instantiating the disk image (106). By
copying the installation parameters into the disk image, and by
populating them with values, the processor can perform the
installation process in an unattended manner, without user
assistance.
[0031] The processor then executes the installation process, based
on the installation parameters, at the host computing device to
install the installable binary files within the disk image, without
instantiating the disk image (108). As such, the processor installs
the software components within the disk image of the virtual
machine, even though the processor has not yet instantiated the
disk image such that the virtual machine is not currently running.
Stated another way, the disk image now includes the software
components that the processor has installed within the virtual
machine of the disk image, even though the processor has not yet
run the virtual machine because the processor has not yet
instantiated the disk image.
[0032] The processor can dismount the disk image from the host
computing device, and copy the disk image to one or more desired
computing devices at which the processor is to instantiate the disk
image (110). The processor then instantiates the disk image at each
such computing device (112). As such, the virtual
machine--including the software components that the processor had
installed on the disk image prior instantiating the virtual
machine--is now running. The processor does not perform any part of
the installation process once the processor has instantiated the
disk image of the virtual machine.
[0033] Examples of software components that the processor can
install include software components that are part of and/or that
are interoperable with Eclipse.TM. software. Eclipse.TM. is a
trademark of Eclipse Foundation, Inc., of Ottawa, Canada. Examples
of installation parameters that the processor copies into the disk
image in part 106 include, in addition to those mentioned above,
the installation directories of software components.
[0034] FIG. 2 shows a method 200 for installing software components
other than the operating system into a disk image of a virtual
machine, according to another embodiment of the embodiment. A
processor of a computing device can perform the method 200. The
method 200, like the method 100, specifically relates to the case
of one disk image of one virtual machine. However, the method 200
further specifically relates to the case in which the installable
binary files of the software components require some installation
parameters that are unknown and that the processor cannot populate
with values until the processor has instantiated the disk image.
The processor can install the software components in the method 200
to the extent possible prior to instantiating the disk image of the
virtual machine, and then finalize the installation after the
processor has instantiated the disk image.
[0035] The processor can mount the disk image of the virtual
machine into a host computing device (202), as before. The
processor can also receive installable binary files, as well as
first and second installation parameters to install these files
within the disk image, and scripts (203). A topology model can
specify the installation parameters and scripts, as before. The
processor again copies the installable binary files for the
software components that the processor is to install within the
disk image of the virtual machine, into the disk image mounted on
the host computing device, prior to instantiating the disk image
(204), also as before. The processor copies into the disk image the
first and second installation parameters for an installation
process that the processor performs to install the installable
binary files into the disk image of the virtual machine prior to
instantiating the disk image (206). The processor likewise copies
the scripts into the disk image (208).
[0036] The first installation parameters are similar to those
described in relation to part 106 above. That is, the first
installation parameters are those that the processor can know and
populate with values prior instantiating of the disk image. This
type of installation parameter is an offline installation
parameter, because the parameter is known before the processor has
instantiated the disk image and thus when the disk image is
offline. By comparison, the second installation parameters are
those that are unknown and that the processor cannot populate with
values prior to instantiating the disk image of the virtual
machine, but rather that the processor can only know and populate
with values after instantiating the disk image such that the
virtual machine is running. This type of installation parameter is
as an online installation parameter, because the parameter is
unknown before the processor has instantiated the disk image. The
processor only populates the parameter with values after having
instantiated the disk image and thus when the disk image is
online.
[0037] For example, a software component may require the network
address assigned to the virtual machine, such as an Internet
Protocol (IP) address. The processor may not know this network
address until the processor has booted the virtual machine and the
virtual machine is running. Therefore, the network address of the
virtual machine is a second installation parameter, and not a first
installation parameter. The processor thus cannot perform or
execute the portion of the installation process of the
corresponding installable binary files until the processor has
instantiated the disk image of the virtual machine.
[0038] The scripts correspond to the parts of the installation
process that the processor performs after instantiating the disk
image such that the virtual machine is running. For instance, once
the processor has booted the virtual machine, the processor
executes the scripts to complete the installation process that the
processor could not complete prior to instantiating the disk image,
due to the presence of the second installation parameters. The
processor can copy the scripts so that the virtual machine
automatically executes them the first time the processor boots the
virtual machine after the processor has instantiated disk
image.
[0039] Examples of such types of scripts include activation scripts
written in the Java.RTM. command language (JACL) to reconfigure a
hostname within a WebSphere.RTM. application server installation.
Java.RTM. is a registered trademark of Oracle Corp., of Redwood
Shores, Calif. WebSphere.RTM. is a registered trademark of
International Business Machines Corp., of Armonk, N.Y.
[0040] The processor first partially executes the installation
process, based on the first installation parameters, without
instantiating the disk image (210), similar to in part 108 of the
method 100. The difference between part 108 and part 210 is that in
part 108, the processor completely installs the installable binary
files, and thus the software components, as a result of the
processor completely performing the installation process. By
comparison, in part 210 the processor just partially installs the
installable binary files, and thus the software components, as a
result of the processor partially performing the installation
process.
[0041] The processor cannot completely perform the installation
process in part 210, due to the presence of the second installation
parameters. Because the second installation parameters are unknown
and the processor cannot populate them with values prior to
instantiating the disk image, the processor cannot perform a
portion of the installation process until the processor has
instantiated the disk image. Therefore, in part 210, desirably the
processor performs the installation process to install the
installable binary files as much as possible without having to
instantiate the disk image and run the virtual machine.
[0042] The processor can dismount the disk image from the host
computing device and copy the disk image to one or more desired
computing devices (212), as in part 110. The processor then
instantiates the disk image at each such computing device (214), as
in part 112. As such, the virtual machine is now running. However,
unlike in the method 100, the software components are not yet
running, because the processor did not completely perform the
installation process in part 210.
[0043] Rather, once the processor has booted the virtual machine,
the processor executes the scripts that the processor previously
copied to the disk image, based on the second installation
parameters, to complete the installation process (216). Running the
virtual machine results in the second installation parameters
taking on values. Therefore, the processor can complete the
installation process, because the second installation parameters
are now known and thus the processor can populate them with values.
Desirably, in part 216 the processor performs just the remaining
part of the installation process that the processor cannot complete
without having instantiated the disk image.
[0044] The processor performs the two parts 210 and 216 of the
installation process a different number of times. Consider an
example in which the processor is to instantiate a disk image of a
virtual machine on ten different computing devices. The processor
performs part 210 only once, even though the processor will
instantiate the disk image ten times in this example. This is
because the processor performs part 210 before instantiating the
disk image. By comparison, the processor performs part 216 ten
times in this example, once at each computing device. This is
because the processor performs part 216 after instantiating the
disk image.
[0045] At least some parts of the method 200 prior to part 214 are
offline parts of the installation process of the installable binary
files of software components. That is, these parts of the method
200 constitute an offline installation process. This is because the
processor performs these parts before instantiating the disk image
of the virtual machine, and thus when the virtual machine is not
running and is offline. By comparison, part 216 is an online part
of the installation process, because the processor performs part
216 after instantiating the disk image, and thus when the virtual
machine is running and is online. That is, part 216 constitutes an
online installation process.
[0046] FIG. 3 shows a method 300 for installing software components
other than operating systems into disk images of virtual machines,
according to another embodiment of the disclosure. A processor of a
computing device can perform the method 300. The method 300
specifically relates to the case of two disk images of two virtual
machines: a first disk image of a first virtual machine, and a
second disk image of a second virtual machine. Those skilled within
the art, however, can easily extend the method 300 to more than two
disk images of two virtual machines, however.
[0047] Furthermore, the method 300 specifically relates to the case
in which the installable binary files of the software components do
not require any installation parameters that are unknown and that
the processor cannot populate with values until the processor has
instantiated the disk images, as in the method 100. By comparison,
another embodiment of the disclosure, which the detailed
description describes later with reference to a different figure,
relates to the case in which the installable binary files of the
software components require some installation parameters that are
unknown and that a method cannot populate with values until the
first disk image and/or the second disk image has been
instantiated. Thus, the method 300 provides for complete
installation of the software components prior to instantiating the
disk images of the virtual machines.
[0048] The processor can mount the first disk image of the first
virtual machine and the second disk image of the second virtual
machine into a host computing device (302). The processor copies
into the first disk image the first installable binary files for
first software components that the processor is to install within
the first disk image, prior to instantiation of the first disk
image (304). Likewise, the processor copies into the second disk
image the second installable binary files for second software
components that the processor is to install within the second disk
image, prior to instantiation of the second disk image (304).
Similarly, the processor copies into the first disk image first
installation parameters for a first installation process that the
processor is to perform to install the first installable binary
files (306). Likewise, the processor copies into the second disk
image second installation parameters for a second installation
process that the processor is to perform to install the second
installable binary files (306).
[0049] The first installation parameters are those that the
processor can know and populated with values prior to instantiating
the first disk image. Likewise, the second installation parameters
are those that the processor can know and populate with values
prior to instantiating the second disk image. As noted above, in
the specific case of FIG. 3, there are no installation parameters
for either disk image that are unknown and that the processor
cannot populate with values until the processor has instantiated
the disk image in question. However, those skilled in the art can
extend the method 300 to include such installation parameters, per
the method 200 described above.
[0050] The processor creates a topology model of the first and
second software components (308). The first installable binary
files correspond to the first software components, and the second
installable binary files correspond to the second software
components. The topology model has a structure reflecting which
installable binary files correspond to which software components,
and which software components the processor is to install within
each disk image. The topology model also includes the installation
parameters for the installable binary files. The first installation
parameters for the first software components may include some of
the second installation parameters for the second software
components. That is, the first and second software components may
share some of the installation parameters, such that these
installation parameters are both first installation parameters for
the first software components and second installation parameters
for the second software components.
[0051] As an example, a software component may have more than one
installable binary file, such that the processor creates or
generates a containment relationship to indicate that the
installable binary files in question belong to the software
component (i.e., the software component contains these installable
binary files). Another example is that one software component can
include another software component. For example, a WebSphere.RTM.
application server middleware company can include a Java.RTM.
enterprise edition application component.
[0052] A user, such as the user responsible for deploying the disk
images, may create the topology model by using a graphical user
interface (GUI) that the processor provides. The GUI can provide
the user with the ability to create or otherwise select disk
images, and to create or otherwise select and then map software
components to the disk images. The GUI may also provide the user
with the ability to map installable binary files to the software
components to indicate their containment relationships, and specify
the installation parameters for the software components.
[0053] The processor models dependencies between the first and
second software components within the topology model as well (310).
The dependencies typically indicate relationships among distributed
software components, such as client-server and peer-to-peer
relationships. The processor can use the dependencies to infer the
order in which the processor is to install the first software
components in relation to one another, as well as the order in
which the processor is to install the second software components in
relation to one another. The processor can further use the
dependencies to infer the order in which the processor is to
install the first software components are in relation to the second
software components, and vice-versa. The processor can also use the
dependencies to infer which of the installation parameters are both
first installation parameters and second installation parameters.
That is, the processor can use the dependencies to infer which of
the second installation parameters are first installation
parameters, too, and vice-versa.
[0054] For example, consider the following scenario. The first disk
image is for a first virtual machine that runs a database
application. The second disk image is for a second virtual machine
that runs a database client. For the application and the client to
work together, the client needs to know the identity of the
application, and the application needs to know the identity of the
client. The detailed description later presents another scenario,
described with reference to a figure.
[0055] The application and the client may have dependencies as
follows in this example scenario. The processor may first install
the database application within the first disk image to partially
complete the first installation process, which results in the
processor knowing the identity of the database application. The
processor the installs the database client within the second disk
image, using the identity of the database application that the
processor now knows, to entirely complete the second installation
process, which results in the processor knowing the identity of the
client. As such, the processor can then complete the first
installation process, by updating the database application with the
identity of the database client, which the processor now knows.
[0056] A user, such as the user responsible for deploying the disk
images, may create or specify the dependencies using a GUI that the
processor provides. The GUI can provide the user with the ability
to indicate how the software components that the processor is to
install on the disk images are interrelated to one another. For
instance, a user may create lines linking two software components
as a graphical depiction of the client-server and/or peer-to-peer
interdependence of these components, and then indicate how the
components interdepend.
[0057] The processor determines installation operations of the
first and second installation processes to generate an ordered
sequence of the installation operations, based on the modeled
dependencies (312). Whereas parts 308 and 310 may require a user to
assist with the creation of the topology model and the modeling of
the dependencies, the processor may by comparison perform part 312
without user assistance. Once the processor knows the software
components that the processor is to install in each disk image, the
processor can retrieve, generate, or otherwise determine the
installation operations necessary to install the installable binary
files corresponding to the software components.
[0058] As such, the processor can determine the installation
operations of each installation process in part 312. As noted
above, the specific case to which the method 300 relates is that in
which the installation operations are those that the processor can
complete without instantiating either disk image of either virtual
machine. As such, the processor performs the installation
operations of each installation process prior to instantiating the
disk images. The detailed description later presents an embodiment
of the disclosure in which a method completes at least some of the
installation operations after instantiating either disk of either
or both disk images of either or both virtual machines.
[0059] An installation operation is a discrete instruction that the
processor performs, whereas an installation process is a sequence
of such installation operations. For example, an installation
operation may specify that the processor is to create a particular
sub-directory, and another installation operation specify that the
processor is to copy a file into this sub-directory. A third
installation operation may specify that the processor is to update
the file as the sub-directory now stores, with a given
parameter.
[0060] Thereafter, once the processor knows the dependencies among
the software components, the processor can order these installation
operations can be amongst themselves to create or generate an
ordered sequence to perform the installation processes. For
instance, in the example described above, there may be ten
installation operations to install the installable binary files for
the database application within the first disk image, and seven
installation operations to install the installable binary files for
the database client within the second disk image. To preserve the
dependencies noted, the processor may perform the first six
operations for the database application, then perform the seven
operations for the database client, and finally perform the
remaining four operations for the database application.
[0061] As such, the processor executes the first and second
installation processes in an interleaved manner, without
instantiating either disk image, such that the processor performs
the installation operations of the two installation processes in
accordance with the ordered sequence (314). The processor executes
the installation operations of the first installation process based
on the first installation parameters, to install the first
installable binary files within the first disk image of the first
virtual machine. The processor executes the installation operations
of the second installation process based on the second installation
parameters, to install the second installable binary files within
the second disk image of the second virtual machine.
[0062] The processor can dismount disk images dismounted from the
host computing device, and copy the disk images to one or more
(same or different) desired computing devices at which the
processor is to instantiate the disk images (316). The processor
then instantiates the disk images (318). As such, the virtual
machines are now running--including the software components that
the processor installed on the disk images prior to instantiating
the virtual machines. For instance, in the example that has been
described, the processor may instantiate the first disk image on
which the processor has installed the database application on a
server computing device. The processor may instantiate the second
disk image on which the processor has installed the database client
one or more times on each of a number of client computing
devices.
[0063] FIG. 4 shows a method 400 for installing software components
other than operating systems into disk images of virtual machines,
according to another embodiment of the disclosure. A processor of a
computing device may perform the method 400. The method 400, like
the method 300, specifically relates to the case of two disk images
of two virtual machines: a first disk image of a first virtual
machine, and a second disk image of a second virtual machine. Those
skilled in the art can easily extend the method 400 to more than
two disk images of two virtual machines, however.
[0064] Furthermore, the method 400 specifically relates to the case
in which the installable binary files of the software components do
require installation parameters that are unknown and that the
processor cannot populate with values until the processor has
instantiated the disk images, like the method 200. By comparison,
the processor in the method 300 knows all the installation
parameters and can populate them with values even before
instantiating the disk images. Therefore, the method 400 provides
for partial installation of the software components prior to
instantiating the disk images of the virtual machines.
[0065] The processor can mount the first disk image of the first
virtual machine and the second disk image of the second virtual
machine into a host computing device (402), as before. The
processor copies into the first disk image the first installable
binary files for first software components that the processor is to
install within the first disk image, prior to instantiating the
disk images (404). Likewise, the processor copies into the second
disk image the second installable binary files for second software
components that the processor is to install within the second disk
image, prior to instantiating the disk images (404). Similarly, the
processor copies into the first disk image first installation
parameters and first scripts for a first installation process that
the processor is to perform to install the first installable binary
files into the first disk image (406). Likewise, the processor
copies into the second disk image second installation parameters
and second scripts for a second installation process that the
processor is to perform to install the second installable binary
files into the second disk image (406).
[0066] The first installation parameters can include both offline
first installation parameters and online first installation
parameters, and the second installation parameters can include both
offline second installation parameters and online second
installation parameters. The offline first and second installation
parameters are installation parameters that the processor knows and
can populate with values prior to instantiating the disk image. The
online first and second installation parameters are installation
parameters that are unknown and that the processor cannot populate
with values prior to instantiating the disk image.
[0067] The first scripts correspond to the parts of the first
installation process that the processor performs after
instantiating the first disk image such that the first virtual
machine is running. The second scripts correspond to the parts of
the second installation process that the processor performs after
instantiating the second disk image such that the second virtual
machine is running. The first scripts employ the online first
installation parameters, and the second scripts employ the online
second installation parameters. The detailed description describes
the method 400 in relation to the existence of both online first
and online second installation parameters, and thus to the
existence of both first and second scripts. However, those skilled
within the art can appreciate that the method 400 also applies to
the scenario in which there are just online first or online second
installation parameters, such that there are just first or second
scripts.
[0068] The processor, like in the method 300, creates a topology
model of the first and second software components (408). Likewise,
the processor models dependencies between the first and second
software components within the topology model (410), as the
processor does in the method 300. The processor, again as in the
method 300, determines installation operations of the first and
second installation processes to generate an ordered sequence of
the installation operations, based on the modeled dependencies
(412). The installation operations of the ordered sequence can
include image instantiation operations to instantiate a disk image,
as well as activation script execution operations control when the
processor execute these scripts.
[0069] As noted above, the specific case to which the method 400
relates is that in which the processor cannot complete some of the
installation operations without instantiating the disk images of
the virtual machines, because the installation parameters include
online installation parameters in addition to offline installation
parameters. The installation operations that the processor can
complete without instantiating the disk images--because they do not
rely upon online installation parameters--are offline installation
operations, which the processor performs prior to instantiating the
disk images. The installation operations that the processor cannot
complete without instantiating the disk images--because they rely
upon online installation parameters--are online installation
parameters, which the processor performs after instantiating the
disk images.
[0070] The processor partially executes the first and second
installation processes in an interleaved manner, without
instantiating either disk image, such that the processor performs
the offline installation operations of the two installation
processes in accordance with the ordered sequence (414), similar to
in part 314 of the method 300. The difference between part 314 and
part 414 is that in part 314, the processor completely installs the
installable binary files, and thus the software components, as a
result of the processor completely performing the installation
processes. By comparison, in part 414, the processor just partially
installs the installable binary files, and thus the software
components, as a result of the processor just partially performing
installation processes. Similar to in part 210 of the method 200,
the processor can completely perform the installation processes in
part 414, due to the presence of the online first and second
installation parameters.
[0071] The processor can then dismount the disk images from the
host computing device, and copy them to one or more (same or
different) desired computing devices at which the processor is to
instantiate the disk images (416), like in the method 300. The
processor 400 instantiates the disk images (418), like it does in
the method 300. As such, the virtual machines are now running.
However, unlike in the method 300, the software components are not
yet running, because the processor did not completely perform the
installation processes in part 414.
[0072] Rather, once the processor has booted the virtual machines,
the processor executes the scripts that the processor previously
copied to the disk images, based on the online first and second
installation parameters, to complete the installation processes
(420). Running of the virtual machines results in the online first
and second installation parameters taking on values. Therefore, the
processor can complete the installation processes, because the
processor now knows these online installation parameters, and thus
can populate them with values. Desirably, the processor performs in
part 420 just the parts of the first and second installation
processes that the processor cannot complete without instantiating
the disk images, whereas in part 414 the processor performs the
parts of these installation process that the processor can complete
prior to instantiating the disk images instantiation.
[0073] Computer-readable code can implement the methods 100, 200,
300, and 400 that the detailed description has presented. A
computer-readable storage medium can embody the computer-readable
code. As such a processor of the host computing device, or of
another type of device, can thus execute the computer-readable
code, to install one or more disk images of one or more virtual
machines.
[0074] The processor can perform the embodiments of the methods
100, 200, 300, and 40 together. For instance, the processor can
create a topology model and model containments and dependencies
within the method 100 or the method 200, as well as within the
methods 300 and 400. As to the method 100, the topology model
ultimately includes a modeling of the installable binary files
corresponding to the software components and the ordering of
installation operations to install the installable binary files, as
to just one disk image of just one virtual machine. By comparison,
as to the method 200, the topology model ultimately includes the
same type of modeling and ordering, but in relation to more than
one disk image of more than one virtual machine.
[0075] As such, whereas the methods 300 and 400 specifically call
out creating the topology model and modeling dependencies, and
whereas the methods 100 and 200 specifically call out receiving the
installable binary files and the installation parameters (and the
scripts), these processes are interchangeable. That is, the
processor in the methods 100 and 200 can create a topology model
and model dependencies, and the processor in the methods 300 and
400 can receive the installable binary files and the installation
parameters (and the scripts).
[0076] FIG. 5 shows an example scenario of a topology model in
relation to two disk images 502 and 504, according to an embodiment
of the disclosure. The disk image 502 includes software components
506, 508, and 510. The software component 510 contains the software
component 508 within the disk image 502. The disk image 504
includes software component 512.
[0077] Arrows in FIG. 5 indicate dependencies among the software
components 506, 508, 510, and 512. As such, the software component
508 depends upon the software component 506 within the disk image
502. Furthermore, the software components 506 and 510 of the disk
image 502 each depend on the software component 512 of the disk
image 504.
[0078] Therefore, an ordered sequence of installation operations
may include the following for the software components 506, 508,
510, and 512. First, a processor may perform the installation
operations to install the software component 512. Next, the
processor may perform the installation operations to install the
software component 506, since the software component 506 depends on
the software component 512. The processor may then perform the
installation operations to install the software component 508,
because the software component 508 depends on the software
component 506. Finally, the processor may perform the installation
operations to install the software component 510, because the
software component 510 contains the software component 508 and
depends on the software component 512.
[0079] FIG. 6 shows a system 600, according to an embodiment of the
disclosure. The system 600 includes a host computing device 602.
The host computing device 602 includes a processor 604 and a
computer-readable data storage medium 606. Examples of
computer-readable data storage media include magnetic, optical,
semiconductor, volatile, and/or non-volatile media, among other
types of media.
[0080] The computer-readable data storage medium 606 stores an
installation engine 608, an activation engine 610, and a modeling
engine 612. The computer-readable data storage medium 606 also
stores one or more disk images 614 of virtual machines and one or
more installable binary files 616 corresponding to software
components. The engines 608, 610, and 612 can each be or include
computer-readable code that the processor 604 executes to perform
particular functionality in relation to the disk images 614 and the
installable binary files 616, some of which results in the
processor 604 copying the installable binary files 616 into the
disk images 614.
[0081] For instance, the installation engine 608 may perform parts
104, 106, and 108 of the method 100; parts 204, 206, 208, and 210
of the method 200; parts 304, 306, and 314 of the method 300; and,
parts 404, 406, and 414 of the method 400. The activation engine
610 may perform part 216 of the method 200 and part 420 of the
method 400. In this respect, the installation engine 608 copies the
activation engine 610 into the disk images 614 so that the
activation engine 610 can execute the scripts as in parts 216 and
420. The modeling engine 612 may perform parts 308, 310, and 312 of
the method 300, and parts 408, 410, and 412 of the method 400.
[0082] The system 600 may also include one or more target computing
devices 618A, 618B, . . . , 618N, which are collectively referred
to as the target computing devices 618. A network 620
communicatively connects the host computing device 602 to the
target computing devices 618. The network 620 can be or include
intranets, extranets, the Internet, local-area networks, wide-area
networks, wired networks, wireless networks, and/or telephony
networks, among other types of networks.
[0083] Once the processor 604 has suitably prepared the disk images
614 at the host computing device 602 for deployment, the processor
604 can copy or move the disk images 614 to the target computing
devices 618. The processor 604 may instantiate the disk images 614
of the virtual machines at the target computing devices 618.
Instantiation of the disk images 614 at the target computing
devices 618 results in the virtual machines running on the target
computing devices 618.
[0084] Those of ordinary skill within the art can appreciate that a
system, method, or computer program product may embody aspects of
the present disclosure. Accordingly, aspects of the embodiments of
the disclosure may take the form of an entirely hardware
embodiment, an entirely software embodiment (including firmware,
resident software, micro-code, etc.) or an embodiment combining
software and hardware aspects that may all generally be referred to
herein as a "circuit," "module" or "system." Furthermore, aspects
of the present disclosure may take the form of a computer program
product that one or more computer readable medium(s) embody. The
computer readable medium(s) may embody computer readable program
code.
[0085] Those of ordinary skill within the art can utilize any
combination of one or more computer readable medium(s). The
computer readable medium may be a computer readable signal medium
or a computer readable storage medium. A computer readable storage
medium may be, for example, but not limited to, an electronic,
magnetic, optical, electromagnetic, infrared, or semiconductor
system, apparatus, or device, or any suitable combination of the
foregoing. More specific examples (a non-exhaustive list) of the
computer readable storage medium include the following: an
electrical connection having one or more wires, a portable computer
diskette, a hard disk, a random access memory (RAM), a read-only
memory (ROM), an erasable programmable read-only memory (EPROM or
Flash memory), an optical fiber, a portable compact disc read-only
memory (CD-ROM), an optical storage device, a magnetic storage
device, or any suitable combination of the foregoing. In the
context of this document, a computer readable storage medium may be
any tangible medium that can contain, or store a program for use by
or in connection with an instruction execution system, apparatus,
or device.
[0086] A computer readable signal medium may include a propagated
data signal with computer readable program code embodied therein,
for example, in baseband or as part of a carrier wave. Such a
propagated signal may take any of a variety of forms, including,
but not limited to, electro-magnetic, optical, or any suitable
combination thereof. A computer readable signal medium may be any
computer readable medium that is not a computer readable storage
medium and that can communicate, propagate, or transport a program
for use by or in connection with an instruction execution system,
apparatus, or device. An appropriate medium may transmit program
code embodied on a computer readable medium. Such appropriate media
include but are not limited to wireless, wireline, optical fiber
cable, RF, etc., or any suitable combination of the foregoing.
[0087] In general, a computer program product includes a
computer-readable medium on which one or more computer programs are
stored. One or more processor of one or more hardware devices
execute the computer programs from the computer-readable medium to
perform a method. For instance, the processors may perform one or
more of the methods that have been described above.
[0088] The computer programs themselves include computer program
code. Those of ordinary skill within the art may write computer
program code for carrying out operations for aspects of the present
disclosure in any combination of one or more programming languages,
including an object oriented programming language such as Java,
Smalltalk, C++ or the like and conventional procedural programming
languages, such as the "C" programming language or similar
programming languages. The program code may execute entirely on the
user's computer, partly on the user's computer, as a stand-alone
software package, partly on the user's computer and partly on a
remote computer or entirely on the remote computer or server. In
the latter scenario, any type of network may connect the remote
computer to the user's computer. Such networks include a local area
network (LAN) or a wide area network (WAN), or a connection may to
an external computer (for example, through the Internet using an
Internet Service Provider).
[0089] The detailed description has presented aspects of the
present disclosure with reference to flowchart illustrations and/or
block diagrams of methods, apparatus (systems) and computer program
products according to embodiments of the disclosure. Those of
ordinary skill within the art can understand that computer program
instructions can implement each block of the flowchart
illustrations and/or block diagrams, and combinations of blocks in
the flowchart illustrations and/or block diagrams. Providing these
instructions to a processor of a general purpose computer, special
purpose computer, or other programmable data processing apparatus
to produce a machine, can result in execution of the instructions
via the processor of the computer or other programmable data
processing apparatus, to create means for implementing the
functions/acts specified in the flowchart and/or block diagram
block or blocks.
[0090] A computer readable medium may also store these instruction
to direct a computer, other programmable data processing apparatus,
or other devices to function in a particular manner, such that the
instructions stored in the computer readable medium produce an
article of manufacture including instructions which implement the
function/act specified in the flowchart and/or block diagram block
or blocks.
[0091] Those of ordinary skill within the art may also load the
computer program instructions onto a computer, other programmable
data processing apparatus, or other devices to cause the computer,
other programmable apparatus or other devices, to perform a series
of operational steps. The result is a computer implemented process
such that the instructions that execute on the computer or other
programmable apparatus provide processes for implementing the
functions/acts specified in the flowchart and/or block diagram
block or blocks.
[0092] The flowchart and block diagrams in the figures illustrate
the architecture, functionality, and operation of possible
implementations of systems, methods and computer program products
according to various embodiments of the present disclosure. In this
regard, each block in the flowchart or block diagrams may represent
a module, segment, or portion of code, which comprises one or more
executable instructions for implementing the specified logical
function(s). In some alternative implementations, the functions
noted in the block may occur out of the order noted in the figures.
For example, execution of two blocks shown in succession may, in
fact, occur substantially concurrently, or sometimes in the reverse
order, depending upon the functionality involved. Special purpose
hardware-based systems that perform specified functions or acts, or
combinations of special purpose hardware and computer instructions,
can implement each block of the block diagrams and/or flowchart
illustration, and combinations of blocks in the block diagrams
and/or flowchart illustration.
[0093] Although the detailed description has presented specific
embodiments, those of ordinary skill in the art can appreciate that
they can substitute any arrangement calculated to achieve the same
purpose for the specific embodiments shown. This application thus
covers any adaptations or variations of embodiments of the present
disclosure. As such and therefore, only the claims and equivalents
thereof limit this disclosure.
* * * * *