US20130007726A1 - Virtual machine disk image installation - Google Patents

Virtual machine disk image installation Download PDF

Info

Publication number
US20130007726A1
US20130007726A1 US13/174,359 US201113174359A US2013007726A1 US 20130007726 A1 US20130007726 A1 US 20130007726A1 US 201113174359 A US201113174359 A US 201113174359A US 2013007726 A1 US2013007726 A1 US 2013007726A1
Authority
US
United States
Prior art keywords
disk image
virtual machine
installation
processor
computer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US13/174,359
Inventor
Indrajit Poddar
Igor Sukharev
Vladislav B. Ponomarev
Yulia Gaponenko
Alexey Miroshkin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US13/174,359 priority Critical patent/US20130007726A1/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATION reassignment INTERNATIONAL BUSINESS MACHINES CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GAPONENKO, YULIA, MIROSHKIN, ALEXEY, PONOMAREV, VLADISLAV B., SUKHAREV, IGOR, PODDAR, INDRAJIT
Priority to US13/460,843 priority patent/US9280336B2/en
Publication of US20130007726A1 publication Critical patent/US20130007726A1/en
Priority to US14/987,501 priority patent/US9875133B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/64Retargetable

Definitions

  • a computing device typically runs one instance of an operating system that has access to the hardware resources of the computing device.
  • a technique known as virtualization permits a computing device to run a number of instances of operating systems.
  • the computing device instantiates a number of such virtual machines, and each virtual machine runs its own instance of an operating system.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • FIG. 5 is a diagram of an example topology model, according to an embodiment of the disclosure.
  • FIG. 6 is a diagram of a system, according to an embodiment of the disclosure.
  • 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.
  • 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.
  • the deployment process installs software components other than the operating system on the virtual machine, completing the process.
  • 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.
  • the software components installed over multiple virtual machines may have intertwined installations.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 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.
  • a first disk image of a first virtual machine 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.
  • 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.
  • a disk image of a virtual machine is a single file that contains the complete contents and directory structure representing a virtual data storage medium or device of the virtual machine.
  • 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.
  • 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.
  • 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 .
  • 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.
  • chroot which are available on the UNIX® 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® is a registered trademark of The Open Group, of San Francisco, Calif.
  • the processor can receive the installable binary files and installation parameters to install these files within the disk image ( 103 ).
  • 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).
  • 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.
  • 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.
  • 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.
  • 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 ).
  • 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.
  • 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.
  • 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 ).
  • 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.
  • Examples of software components that the processor can install include software components that are part of and/or that are interoperable with EclipseTM software.
  • EclipseTM 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.
  • 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.
  • 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 ).
  • 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.
  • 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.
  • a software component may require the network address assigned to the virtual machine, such as an Internet Protocol (IP) address.
  • IP Internet Protocol
  • 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.
  • IP Internet Protocol
  • 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.
  • Examples of such types of scripts include activation scripts written in the Java® command language (JACL) to reconfigure a hostname within a WebSphere® application server installation.
  • Java® is a registered trademark of Oracle Corp., of Redwood Shores, Calif.
  • WebSphere® is a registered trademark of International Business Machines Corp., of Armonk, N.Y.
  • 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.
  • 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.
  • 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.
  • 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 .
  • the virtual machine is now running.
  • the software components are not yet running, because the processor did not completely perform the installation process in part 210 .
  • 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.
  • the processor performs just the remaining part of the installation process that the processor cannot complete without having instantiated the disk image.
  • the processor performs the two parts 210 and 216 of the installation process a different number of times.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 .
  • 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.
  • the method 300 provides for complete installation of the software components prior to instantiating the disk images of the virtual machines.
  • 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 ).
  • 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 ).
  • 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 ).
  • the first installation parameters are those that the processor can know and populated with values prior to instantiating the first disk image.
  • the second installation parameters are those that the processor can know and populate with values prior to instantiating the second disk image.
  • those skilled in the art can extend the method 300 to include such installation parameters, per the method 200 described above.
  • 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
  • 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.
  • 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).
  • one software component can include another software component.
  • a WebSphere® application server middleware company can include a Java® enterprise edition application component.
  • 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.
  • GUI graphical user interface
  • 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.
  • 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.
  • 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.
  • the client needs to know the identity of the application, and the application needs to know the identity of the client.
  • 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.
  • 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.
  • 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.
  • 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.
  • the processor can determine the installation operations of each installation process in part 312 .
  • 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.
  • the processor performs the installation operations of each installation process prior to instantiating the disk images.
  • An installation operation is a discrete instruction that the processor performs, whereas an installation process is a sequence of such installation operations.
  • 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.
  • 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.
  • 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.
  • 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 ).
  • the virtual machines are now running—including the software components that the processor installed on the disk images prior to instantiating the virtual machines.
  • 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.
  • 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.
  • 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 .
  • 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.
  • 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 ).
  • 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 ).
  • 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 ).
  • the first installation parameters can include both offline first installation parameters and online first installation parameters
  • 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.
  • 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.
  • 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.
  • 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 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.
  • 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.
  • 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 .
  • the virtual machines are now running.
  • the software components are not yet running, because the processor did not completely perform the installation processes in part 414 .
  • 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.
  • 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.
  • 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.
  • 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.
  • the processor can perform the embodiments of the methods 100 , 200 , 300 , and 40 together.
  • 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 .
  • 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.
  • 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.
  • the methods 300 and 400 specifically call out creating the topology model and modeling dependencies
  • 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).
  • 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 .
  • FIG. 5 indicate dependencies among the software components 506 , 508 , 510 , and 512 .
  • the software component 508 depends upon the software component 506 within the disk image 502 .
  • the software components 506 and 510 of the disk image 502 each depend on the software component 512 of the disk image 504 .
  • an ordered sequence of installation operations may include the following for the software components 506 , 508 , 510 , and 512 .
  • a processor may perform the installation operations to install the software component 512 .
  • 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 .
  • 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 .
  • 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.
  • 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 .
  • 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 .
  • 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 .
  • the system 600 may also include one or more target computing devices 618 A, 618 B, . . . , 618 N, 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.
  • 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 .
  • 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.”
  • 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.
  • 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.
  • the computer readable storage medium includes 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.
  • 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.
  • 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.
  • 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.
  • the processors may perform one or more of the methods that have been described above.
  • 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).
  • LAN local area network
  • WAN wide area network
  • Internet Service Provider for example, AT&T, MCI, Sprint, EarthLink, MSN, GTE, etc.
  • 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.
  • 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).
  • the functions noted in the block may occur out of the order noted in the figures.
  • 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.

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.

Description

    BACKGROUND
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • FIG. 5 is a diagram of an example topology model, according to an embodiment of the disclosure.
  • FIG. 6 is a diagram of a system, according to an embodiment of the disclosure.
  • DETAILED DESCRIPTION
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Commands such as chroot, which are available on the UNIX® 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® is a registered trademark of The Open Group, of San Francisco, Calif.
  • 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).
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Examples of software components that the processor can install include software components that are part of and/or that are interoperable with Eclipse™ software. Eclipse™ 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.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • Examples of such types of scripts include activation scripts written in the Java® command language (JACL) to reconfigure a hostname within a WebSphere® application server installation. Java® is a registered trademark of Oracle Corp., of Redwood Shores, Calif. WebSphere® is a registered trademark of International Business Machines Corp., of Armonk, N.Y.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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® application server middleware company can include a Java® enterprise edition application component.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

Claims (20)

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.
US13/174,359 2011-06-30 2011-06-30 Virtual machine disk image installation Abandoned US20130007726A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US13/174,359 US20130007726A1 (en) 2011-06-30 2011-06-30 Virtual machine disk image installation
US13/460,843 US9280336B2 (en) 2011-06-30 2012-05-01 Virtual machine disk image installation
US14/987,501 US9875133B2 (en) 2011-06-30 2016-01-04 Virtual machine disk image installation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/174,359 US20130007726A1 (en) 2011-06-30 2011-06-30 Virtual machine disk image installation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US13/460,843 Continuation US9280336B2 (en) 2011-06-30 2012-05-01 Virtual machine disk image installation

Publications (1)

Publication Number Publication Date
US20130007726A1 true US20130007726A1 (en) 2013-01-03

Family

ID=47392069

Family Applications (3)

Application Number Title Priority Date Filing Date
US13/174,359 Abandoned US20130007726A1 (en) 2011-06-30 2011-06-30 Virtual machine disk image installation
US13/460,843 Expired - Fee Related US9280336B2 (en) 2011-06-30 2012-05-01 Virtual machine disk image installation
US14/987,501 Expired - Fee Related US9875133B2 (en) 2011-06-30 2016-01-04 Virtual machine disk image installation

Family Applications After (2)

Application Number Title Priority Date Filing Date
US13/460,843 Expired - Fee Related US9280336B2 (en) 2011-06-30 2012-05-01 Virtual machine disk image installation
US14/987,501 Expired - Fee Related US9875133B2 (en) 2011-06-30 2016-01-04 Virtual machine disk image installation

Country Status (1)

Country Link
US (3) US20130007726A1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130007739A1 (en) * 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US20130074068A1 (en) * 2011-09-16 2013-03-21 International Business Machines Corporation Method, System, and Computer Program for Implementing a Customizable Virtual Appliance
US20160048438A1 (en) * 2014-06-27 2016-02-18 Unitrends, Inc. Automated testing of physical servers using a virtual machine
US9454439B2 (en) 2014-05-28 2016-09-27 Unitrends, Inc. Disaster recovery validation
US9983863B2 (en) 2013-07-03 2018-05-29 International Business Machines Corporation Method to optimize provisioning time with dynamically generated virtual disk contents
US20180357130A1 (en) * 2016-01-06 2018-12-13 International Business Machines Corporation Method and system to discover and manage distributed applications in virtualization environments
US20190265988A1 (en) * 2016-07-22 2019-08-29 Intel Corporation Embedded system application installation and execution method and apparatus
CN111880907A (en) * 2020-08-04 2020-11-03 浪潮云信息技术股份公司 Method for starting virtual machine by utilizing ISO (International organization for standardization) aiming at OpenStack platform
US11385919B1 (en) * 2016-07-12 2022-07-12 Amazon Technologies, Inc. Machine image launch system
US11599375B2 (en) * 2020-02-03 2023-03-07 EMC IP Holding Company LLC System and method virtual appliance creation

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8762502B2 (en) * 2011-10-25 2014-06-24 Hewlett-Packard Development Company, L.P. Installation of server-stored disk image on client
US9552211B1 (en) * 2013-03-14 2017-01-24 Nutanix, Inc. Method for performing hot-swap of a storage device in a virtualization environment
US9448807B2 (en) * 2013-04-29 2016-09-20 Global Foundries Inc. Automatic creation, deployment, and upgrade of disk images
US9858154B1 (en) * 2013-08-23 2018-01-02 Acronis International Gmbh Agentless file backup of a virtual machine
US9430212B2 (en) * 2014-02-10 2016-08-30 Netflix, Inc. Automatically generating volume images and launching virtual computing instances
US10296362B2 (en) * 2014-02-26 2019-05-21 Red Hat Israel, Ltd. Execution of a script based on properties of a virtual device associated with a virtual machine
US9218176B1 (en) * 2014-06-13 2015-12-22 International Business Machines Corporation Software deployment in a distributed virtual machine environment
US10091055B2 (en) * 2015-02-13 2018-10-02 Amazon Technologies, Inc. Configuration service for configuring instances
EP3304295A4 (en) 2015-06-05 2018-06-06 Nutanix, Inc. Architecture for managing i/o and storage for a virtualization environment using executable containers and virtual machines
US10055301B2 (en) * 2015-06-15 2018-08-21 Open Text Sa Ulc Systems and methods for content server make disk image operation
US10649679B2 (en) 2016-11-23 2020-05-12 Nutanix, Inc. Containerized application extensions in distributed storage systems
US10761911B2 (en) 2017-02-13 2020-09-01 Nutanix, Inc. Asynchronous application interactions in distributed systems
JP2019115977A (en) * 2017-12-26 2019-07-18 キヤノン株式会社 Image forming device, control method of the same and program

Citations (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666501A (en) * 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
US6145126A (en) * 1997-12-11 2000-11-07 Fujitsu Limited Apparatus and method for installing software and recording medium storing program for realizing the method
US20010029605A1 (en) * 1998-06-19 2001-10-11 Jonathan A. Forbes Software package management
US6501995B1 (en) * 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US20070006218A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Model-based virtual system provisioning
US20070089111A1 (en) * 2004-12-17 2007-04-19 Robinson Scott H Virtual environment manager
US20070234346A1 (en) * 2006-02-22 2007-10-04 Microsoft Corporation Integrated computer server imaging
US20090113418A1 (en) * 2007-10-26 2009-04-30 Sun Microsystems, Inc. Method and apparatus for responsive execution of a platform-independent program on a computing platform that has not been provisioned
US20090144727A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Interpreted multiple product installation
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US7596615B2 (en) * 2006-02-22 2009-09-29 Microsoft Corporation Multi-server automated redundant service configuration
US20100077475A1 (en) * 2008-09-22 2010-03-25 Microsoft Corporation Partial installation based on available privileges
US20100313200A1 (en) * 2009-06-04 2010-12-09 Microsoft Corporation Efficient virtual machine management
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US20110161952A1 (en) * 2009-12-31 2011-06-30 International Business Machines Corporation Porting Virtual Images Between Platforms
US20110173605A1 (en) * 2010-01-10 2011-07-14 Microsoft Corporation Automated Configuration and Installation of Virtualized Solutions
US20110307531A1 (en) * 2010-06-15 2011-12-15 International Business Machines Corporation Converting Images in Virtual Environments
US20120096455A1 (en) * 2010-10-19 2012-04-19 Fujitsu Limited Apparatus and method for management of software
US8185884B2 (en) * 2008-06-23 2012-05-22 Novell, Inc. System and method for offline updation of software in virtual machine (VM) images
US20120210068A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a multi-level cache
US20130007739A1 (en) * 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US20130055251A1 (en) * 2011-08-30 2013-02-28 International Business Machines Corporation Selection of virtual machines from pools of pre-provisioned virtual machines in a networked computing environment

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100258966B1 (en) * 1997-05-02 2000-06-15 윤종용 Method for bios upgrade with serial communication
US6742026B1 (en) * 2000-06-19 2004-05-25 International Business Machines Corporation System and method for providing a distributable runtime
US7162543B2 (en) * 2001-06-06 2007-01-09 Sap Ag Process for synchronizing data between remotely located devices and a central computer system
JP2004220450A (en) * 2003-01-16 2004-08-05 Hitachi Ltd Storage device, its introduction method and its introduction program
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
EP1671200A4 (en) * 2003-04-24 2007-10-17 Secureinfo Corp Automated electronic software distribution and management method and system
US7272732B2 (en) * 2003-06-30 2007-09-18 Hewlett-Packard Development Company, L.P. Controlling power consumption of at least one computer system
US7873684B2 (en) * 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
US7562346B2 (en) * 2003-09-02 2009-07-14 Microsoft Corporation Software componentization for building a software product
US20050273486A1 (en) * 2004-06-03 2005-12-08 Keith Robert O Jr Virtual distributed file system
EP1771785A2 (en) * 2004-07-21 2007-04-11 Softricity, Inc. System and method for extraction and creation of application meta-information within a software application repository
US7698391B2 (en) * 2005-05-16 2010-04-13 Oracle International Corporation Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate
US8074214B2 (en) * 2005-05-19 2011-12-06 Oracle International Corporation System for creating a customized software installation on demand
SE531992C2 (en) * 2006-02-24 2009-09-22 Oniteo Ab Method and system for secure software commissioning
US7653794B2 (en) * 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
KR20080085780A (en) * 2007-03-20 2008-09-24 이상규 Method for virtualizing operating system
US8046767B2 (en) * 2007-04-30 2011-10-25 Hewlett-Packard Development Company, L.P. Systems and methods for providing capacity management of resource pools for servicing workloads
US8543711B2 (en) * 2007-04-30 2013-09-24 Hewlett-Packard Development Company, L.P. System and method for evaluating a pattern of resource demands of a workload
US8918496B2 (en) * 2007-04-30 2014-12-23 Hewlett-Packard Development Company, L.P. System and method for generating synthetic workload traces
US8806479B2 (en) * 2007-06-05 2014-08-12 International Business Machines Corporation Creating an application virtual machine image by isolating installation artifacts in shadow area
US8209719B2 (en) * 2007-08-29 2012-06-26 At&T Intellectual Property I, Lp System for presenting status information associated with a media content processor
US8839221B2 (en) * 2007-09-10 2014-09-16 Moka5, Inc. Automatic acquisition and installation of software upgrades for collections of virtual machines
CA2645716C (en) * 2007-11-21 2017-05-30 Datagardens Inc. Adaptation of service oriented architecture
US7805409B2 (en) 2008-02-21 2010-09-28 Oracle America, Inc. Dynamic composition of an execution environment from multiple immutable file system images
US8458419B2 (en) * 2008-02-27 2013-06-04 International Business Machines Corporation Method for application backup in the VMware consolidated backup framework
GB0803967D0 (en) * 2008-03-03 2008-04-09 Colt Telecom Group Plc Queing System
US8175103B2 (en) * 2008-06-26 2012-05-08 Rockstar Bidco, LP Dynamic networking of virtual machines
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US8255496B2 (en) * 2008-12-30 2012-08-28 Juniper Networks, Inc. Method and apparatus for determining a network topology during network provisioning
US8331362B2 (en) * 2008-12-30 2012-12-11 Juniper Networks, Inc. Methods and apparatus for distributed dynamic network provisioning
US8156301B1 (en) * 2009-05-13 2012-04-10 Symantec Corporation Method and apparatus for synchronizing a physical machine with a virtual machine while the virtual machine is operational
CN102473170B (en) * 2009-07-24 2016-01-27 惠普开发有限公司 Based on the application service supply of virtual machine
US8438349B2 (en) * 2009-08-21 2013-05-07 Symantec Corporation Proxy backup of virtual disk image files on NAS devices
US9477531B2 (en) * 2010-01-27 2016-10-25 Vmware, Inc. Accessing virtual disk content of a virtual machine without running a virtual desktop
US8402228B2 (en) * 2010-06-30 2013-03-19 International Business Machines Corporation Page buffering in a virtualized, memory sharing configuration
US20120054743A1 (en) * 2010-08-31 2012-03-01 Yuji Fujiwara Information Processing Apparatus and Client Management Method
US20120137137A1 (en) * 2010-11-30 2012-05-31 Brickell Ernest F Method and apparatus for key provisioning of hardware devices
US8701105B2 (en) * 2011-05-19 2014-04-15 Sap Ag Downloadable standalone offline application with integrated data for distributed offline processing
US9015432B1 (en) * 2011-06-30 2015-04-21 Emc Corporation Establishing a mapping to a virtual disk
US9519472B2 (en) * 2011-11-23 2016-12-13 Red Hat, Inc. Automation of virtual machine installation by splitting an installation into a minimal installation and customization
US8850146B1 (en) * 2012-07-27 2014-09-30 Symantec Corporation Backup of a virtual machine configured to perform I/O operations bypassing a hypervisor
US9477507B2 (en) * 2013-12-20 2016-10-25 Vmware, Inc. State customization of forked virtual machines
US20150178108A1 (en) * 2013-12-20 2015-06-25 Vmware, Inc. Fast Instantiation of Virtual Machines
US10599457B2 (en) * 2014-02-25 2020-03-24 Red Hat, Inc. Importing and exporting virtual disk images

Patent Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835911A (en) * 1994-02-08 1998-11-10 Fujitsu Limited Software distribution and maintenance system and method
US5666501A (en) * 1995-03-30 1997-09-09 International Business Machines Corporation Method and apparatus for installing software
US6145126A (en) * 1997-12-11 2000-11-07 Fujitsu Limited Apparatus and method for installing software and recording medium storing program for realizing the method
US20010029605A1 (en) * 1998-06-19 2001-10-11 Jonathan A. Forbes Software package management
US6501995B1 (en) * 1999-06-30 2002-12-31 The Foxboro Company Process control system and method with improved distribution, installation and validation of components
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US20070089111A1 (en) * 2004-12-17 2007-04-19 Robinson Scott H Virtual environment manager
US20070006218A1 (en) * 2005-06-29 2007-01-04 Microsoft Corporation Model-based virtual system provisioning
US7596615B2 (en) * 2006-02-22 2009-09-29 Microsoft Corporation Multi-server automated redundant service configuration
US20070234346A1 (en) * 2006-02-22 2007-10-04 Microsoft Corporation Integrated computer server imaging
US20090113418A1 (en) * 2007-10-26 2009-04-30 Sun Microsystems, Inc. Method and apparatus for responsive execution of a platform-independent program on a computing platform that has not been provisioned
US20090144728A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Module based software system linking runtime to install time
US20090144727A1 (en) * 2007-12-04 2009-06-04 Bea Systems, Inc. Interpreted multiple product installation
US8185884B2 (en) * 2008-06-23 2012-05-22 Novell, Inc. System and method for offline updation of software in virtual machine (VM) images
US20100077475A1 (en) * 2008-09-22 2010-03-25 Microsoft Corporation Partial installation based on available privileges
US20100313200A1 (en) * 2009-06-04 2010-12-09 Microsoft Corporation Efficient virtual machine management
US20110113424A1 (en) * 2009-11-09 2011-05-12 Bank Of America Corporation Distribution Of Software Updates
US20120180035A1 (en) * 2009-12-31 2012-07-12 International Business Machines Corporation Porting Virtual Images Between Platforms
US20110161952A1 (en) * 2009-12-31 2011-06-30 International Business Machines Corporation Porting Virtual Images Between Platforms
US20110173605A1 (en) * 2010-01-10 2011-07-14 Microsoft Corporation Automated Configuration and Installation of Virtualized Solutions
US20110307531A1 (en) * 2010-06-15 2011-12-15 International Business Machines Corporation Converting Images in Virtual Environments
US8352415B2 (en) * 2010-06-15 2013-01-08 International Business Machines Corporation Converting images in virtual environments
US20120096455A1 (en) * 2010-10-19 2012-04-19 Fujitsu Limited Apparatus and method for management of software
US20120210068A1 (en) * 2011-02-15 2012-08-16 Fusion-Io, Inc. Systems and methods for a multi-level cache
US20130007739A1 (en) * 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US20130055251A1 (en) * 2011-08-30 2013-02-28 International Business Machines Corporation Selection of virtual machines from pools of pre-provisioned virtual machines in a networked computing environment

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Instance (Computer Science)" , Wikipedia , 12/23/2013 , , page 1 *
"Instantiate" , Merriam-Webster , retrieved 1/24/2014 , , page 1 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280336B2 (en) * 2011-06-30 2016-03-08 International Business Machines Corporation Virtual machine disk image installation
US20130007739A1 (en) * 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US9875133B2 (en) 2011-06-30 2018-01-23 International Business Machines Corporation Virtual machine disk image installation
US20130074068A1 (en) * 2011-09-16 2013-03-21 International Business Machines Corporation Method, System, and Computer Program for Implementing a Customizable Virtual Appliance
US9983863B2 (en) 2013-07-03 2018-05-29 International Business Machines Corporation Method to optimize provisioning time with dynamically generated virtual disk contents
US9990189B2 (en) 2013-07-03 2018-06-05 International Business Machines Corporation Method to optimize provisioning time with dynamically generated virtual disk contents
US9454439B2 (en) 2014-05-28 2016-09-27 Unitrends, Inc. Disaster recovery validation
US9448834B2 (en) * 2014-06-27 2016-09-20 Unitrends, Inc. Automated testing of physical servers using a virtual machine
US20160048438A1 (en) * 2014-06-27 2016-02-18 Unitrends, Inc. Automated testing of physical servers using a virtual machine
US20180357130A1 (en) * 2016-01-06 2018-12-13 International Business Machines Corporation Method and system to discover and manage distributed applications in virtualization environments
US10956272B2 (en) * 2016-01-06 2021-03-23 International Business Machines Corporation Method and system to discover and manage distributed applications in virtualization environments
US11385919B1 (en) * 2016-07-12 2022-07-12 Amazon Technologies, Inc. Machine image launch system
US20190265988A1 (en) * 2016-07-22 2019-08-29 Intel Corporation Embedded system application installation and execution method and apparatus
US10831508B2 (en) * 2016-07-22 2020-11-10 Intel Corporation Embedded system application installation and execution method and apparatus
US11599375B2 (en) * 2020-02-03 2023-03-07 EMC IP Holding Company LLC System and method virtual appliance creation
CN111880907A (en) * 2020-08-04 2020-11-03 浪潮云信息技术股份公司 Method for starting virtual machine by utilizing ISO (International organization for standardization) aiming at OpenStack platform

Also Published As

Publication number Publication date
US20130007739A1 (en) 2013-01-03
US9875133B2 (en) 2018-01-23
US9280336B2 (en) 2016-03-08
US20160147558A1 (en) 2016-05-26

Similar Documents

Publication Publication Date Title
US9875133B2 (en) Virtual machine disk image installation
US10225335B2 (en) Apparatus, systems and methods for container based service deployment
US9684502B2 (en) Apparatus, systems, and methods for distributed application orchestration and deployment
US10430204B2 (en) System and method for cloud provisioning and application deployment
US9882824B2 (en) Cloud application deployment portability
JP6329547B2 (en) System and method for providing a service management engine for use in a cloud computing environment
US9575739B2 (en) Performing unattended software installation
US10713183B2 (en) Virtual machine backup using snapshots and current configuration
US11086662B2 (en) Method and system of migrating applications to a cloud-computing environment
US11231912B2 (en) Post-deployment modification of information-technology application using lifecycle blueprint
CN112585919A (en) Method for managing application configuration state by using cloud-based application management technology
US8464246B2 (en) Automation of mainframe software deployment
US20190082004A1 (en) Systems and methods for instantiating services on top of services
US10721125B2 (en) Systems and methods for update propagation between nodes in a distributed system
US20140007092A1 (en) Automatic transfer of workload configuration
CN107632937B (en) Method and device for testing virtual machine cluster and readable storage medium
US9612803B2 (en) System and method for use of a virtual assembly builder
US20190349428A1 (en) Systems and methods for update propagation between nodes in a distributed system
EP2972856B1 (en) System and method for generic product wiring in a virtual assembly builder environment
CN104503823A (en) P2V (physical to virtual) transferring and configuration method based on OEM (original equipment manufacturer) operating system
CN116783581A (en) Deploying software release on a data center configured in a cloud platform
US20210019195A1 (en) Methods and apparatus to improve cloud management
WO2016029774A1 (en) Virtualization based application storage method and execution method, device and system
US20230305828A1 (en) Virtual upgrade layer-based application upgrade
JP6102441B2 (en) Virtual machine management method and apparatus

Legal Events

Date Code Title Description
AS Assignment

Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PODDAR, INDRAJIT;SUKHAREV, IGOR;PONOMAREV, VLADISLAV B.;AND OTHERS;SIGNING DATES FROM 20110908 TO 20110912;REEL/FRAME:026921/0874

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION