IP Library Granted Patent US 10,365,935
Granted Patent B1
US 10,365,935 · App. 12/421,604 · Granted Jul 30, 2019

Automated system and method to customize and install virtual machine configurations for hosting in a hosting environment

Inventors: John Martin Keagy (San Francisco, CA); Jeffery Carr (San Francisco, CA); Paul Lappas (San Francisco, CA)
Assignee: Open Invention Network LLC
G06F9/45533G06F9/45558
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,365,935
App. No.
12/421,604
Granted
Jul 30, 2019
Kind
B1
Abstract

Some embodiments provide a method for automated configuration of a set of resources for hosting a virtual machine at a particular node in a hosting system. The hosting system includes several nodes for hosting virtual machines. The method, at a first virtual machine operating using a first set of resources of the particular node, receives a user-specified virtual machine configuration for a second virtual machine to be hosted on a second set of resources of the particular node. The method retrieves, to the first virtual machine, a software image from a computer readable hardware medium storing several software images based on the user-specified virtual machine configuration. The method modifies the retrieved software image according to the user-specified virtual machine configuration. The method configures the second set resources using the modified software image.

Claims (47)

1. A method, comprising:

receiving a first user-specified virtual machine configuration for a first virtual machine to be hosted on a first set of resources of a particular hardware node, of a plurality of hardware nodes in a hosting system, and a second user-specified virtual machine configuration for a second virtual machine to be hosted on a second set of resources on the particular hardware node;

based on the first and second user-specified virtual machine configurations, retrieving a first software image and a second software image, each software image comprising a plurality of operating system components and software applications from a computer readable hardware medium storing a plurality of software images;

determining that a set of files from the plurality of operating system components and the software applications is shared between the first and second virtual machines, wherein the first virtual machine and the second virtual machine are each configured without having a separate version of the identified set of files;

configuring the first set of resources using the first software image and the second set of resources using the second software image;

generating a shared partition on the particular hardware node in response to the determining, the shared partition accessible by the first and second virtual machines; and

storing the set of files in the shared partition on the particular hardware node;

wherein the receiving, retrieving, identifying, configuring, and storing, are performed by a third virtual machine operating on a third set of resources of the particular hardware node, the third virtual machine being separate from the first and second user-specified virtual machines hosted on the particular hardware node, the receiving, retrieving, identifying, configuring, and storing performed by executing one or more software scripts based at least in part on instructions from a remote hypervisor management module, the instructions determined based at least in part on the first and second user-specified virtual machine configurations.

2. The method of claim 1 , wherein retrieving the first software image comprises retrieving a compressed software image, the method further comprising decompressing the software image locally at the particular hardware node.

3. The method of claim 1 , wherein the first and second received user-specified virtual machine configurations specify a same operating system, and wherein the identified set of files comprises files for the same operating system of the first and second software images.

4. The method of claim 1 , wherein each of the first and second virtual machines comprises an unshared partition in the storage for storing an unshared set of files.

5. The method of claim 1 , wherein the configuring the first set of resources comprises configuring software resources of the first virtual machine based on at least one of a plurality of customization parameters, the customization parameters comprising: IP addresses, hostnames, and proxy server parameters.

6. The method of claim 5 , wherein the configuring the first set of resources comprises configuring network resources of the first virtual machine.

7. The method of claim 1 further comprising modifying at least one of the retrieved software images based on the received user-specified virtual machine configuration.

8. A utility management module of a hosting system, comprising:

a memory;

a processor coupled to the memory, wherein the processor is configured to:

receive a first user-specified virtual machine configuration for a first virtual machine to be hosted on a first set of resources of a hardware node, of a plurality of hardware nodes in the hosting system, and a second user-specified virtual machine configuration for a second virtual machine to be hosted on a second set of resources on the hardware node;

based on the first and second user-specified virtual machine configurations, retrieve a first software image and a second software image, each software image comprising a plurality of operating system components and software applications from a computer readable hardware medium storing a plurality of software images;

determine that a set of files from the plurality of operating system components and the software applications is shared between the first and second virtual machines, wherein the first virtual machine and the second virtual machine are each configured without having a separate version of the identified set of files;

configure the first set of resources using the first software image and the second set of resources using the second software image;

generate a shared partition on the hardware node in response to the determining, the shared partition accessible by the first and second virtual machines; and

store the identified set of files in the shared partition on the hardware node;

wherein the utility management module comprises a third virtual machine operating on a third set of resources of the hardware node, the third virtual machine being separate from the first and second user-specified virtual machines hosted on the hardware node, and wherein the utility management module is configured to execute one or more software scripts based at least in part on instructions from a remote hypervisor management module, the instructions determined based at least in part on the first and second user-specified virtual machine configurations.

9. The utility management module of claim 8 , wherein the processor is configured to communicate with an application image store comprising a computer readable hardware medium storing a plurality of software application images for addition to a virtual machine hosted by at least one of the plurality of hardware nodes.

10. The utility management module of claim 8 , wherein the processor is configured to communicate with a front end server for providing a graphical user interface from which a user specifies the virtual machine configuration.

11. A non-transitory computer readable hardware medium storing a computer program for execution by a first set of resources of a particular node allocated to a utility management module operating as a virtual machine on the particular node, the computer program comprising:

a set of instructions for receiving a first configuration for a first virtual machine to be hosted on a second set of resources of the particular node, of a plurality of nodes in a hosting system, and a second configuration for a second virtual machine to be hosted on a third set of resources of the particular node;

a set of instructions for retrieving, based on the first and second configurations, a first software image and a second software image, each software image comprising a plurality of operating system components and software applications from a computer readable hardware medium storing a plurality of software images;

a set of instructions for determining that a set of files from the plurality of operating system components and the software applications is shared between the first and second virtual machines, wherein the first virtual machine and the second virtual machine are each configured without having a separate version of the identified set of files;

a set of instructions for configuring the second set of resources using the first software image and the third set of resources using the second software image;

a set of instructions for generating a shared partition on the particular node in response to the determining, the shared partition accessible by the first and second virtual machines; and

a set of instructions for storing the set of files in the shared partition on the particular node;

wherein the instructions for the receiving, retrieving, identifying, configuring, and storing are configured to be performed by executing one or more software scripts based at least in part on instructions from a remote hypervisor management module, the instructions determined based at least in part on the first and second virtual machine configurations.

12. The computer readable hardware medium of claim 11 , wherein the program further comprises a set of instructions for modifying at least one of the retrieved software images.

13. The computer readable hardware medium of claim 12 , wherein the set of instructions for modifying the retrieved software image further comprises a set of instructions for modifying a value for a parameter of the retrieved software image.

14. The utility management module of claim 8 , wherein the processor is configured to communicate with a temporary file system for storing working copies of the user-specified virtual machines prior to installation of the user-specified virtual machines on the subsets of the hardware resources.

15. The utility management module of claim 8 , further comprising:

a configuration manager for (i) parsing through the user-specified virtual machine configurations and (ii) identifying a plurality of scripts for execution in order to configure the separate subsets of hardware resources;

a partitioning module for (i) partitioning the set of hardware resources and (ii) creating one or more file systems to store configuration files and user data of the user-specified virtual machine configurations;

a plurality of configuration modules for (i) configuring the retrieved software images on a temporary file system and (ii) configuring networking drivers for the user-specified virtual machine configurations on the computer; and

a replicator module for copying the retrieved software images on the temporary file system to the subsets of the hardware resources.

16. The utility management module of claim 8 , wherein the processor is further configured to modify the retrieved first software image by deleting at least one software application of the retrieved first software image that is not specified by the user-specified virtual machine configuration.

17. The method of claim 1 , wherein the third virtual machine operates at a same abstraction level as the first and second virtual machines and includes its own operating system components and software applications.

18. The utility management module of claim 8 , wherein the processor is configured to communicate with an operating system image store comprising a computer readable hardware medium storing a plurality of operating system software images for configuring as a virtual machine hosted by at least one of the plurality of hardware nodes.

19. The method of claim 1 , wherein the first and second received user-specified virtual machine configurations specify a same software application, and wherein the identified set of files comprises files for the same software application of the first and second software images.

20. The utility management module of claim 8 , wherein the processor is further configured to modify at least one of the retrieved software images based on the received user-specified virtual machine configuration.

Assignments (14)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2022
From: OPEN INVENTION NETWORK LLC
To: GOOGLE LLC
Reel/Frame 058657/0744 →
RELEASE OF SECURITY INTEREST Recorded Aug 30, 2019
From: CITIBANK, N.A.
To: GOGRID, LLC; DATAPIPE, INC.
Reel/Frame 050224/0321 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2019
From: GOGRID, LLC
To: OPEN INVENTION NETWORK LLC
Reel/Frame 047895/0811 →
SECURITY AGREEMENT Recorded Dec 15, 2017
From: GOGRID, LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 044895/0784 →
RELEASE OF SECURITY INTEREST Recorded Nov 16, 2017
From: TORONTO DOMINION (TEXAS) LLC (SUCCESSOR BY ASSIGNMENT TO MORGAN STANLEY SENIOR FUNDING, INC.)
To: GOGRID, LLC, AS GRANTOR
Reel/Frame 044150/0497 →
RELEASE OF SECURITY INTEREST Recorded Nov 16, 2017
From: TORONTO DOMINION (TEXAS) LLC (SUCCESSOR BY ASSIGNMENT TO MORGAN STANLEY SENIOR FUNDING, INC.)
To: GOGRID, LLC, AS GRANTOR
Reel/Frame 044150/0514 →
RELEASE OF PATENT SECURITY INTEREST RECORDED AT REEL 030602/FRAME 0657 Recorded Jan 22, 2015
From: PARTNERS FOR GROWTH III, L.P.
To: GOGRID, LLC
Reel/Frame 034793/0396 →
RELEASE OF PATENT SECURITY INTEREST RECORDED AT REEL 032970/FRAME 0944 Recorded Jan 22, 2015
From: GOGRID INVESTORS LLC
To: GOGRID, LLC
Reel/Frame 034793/0438 →
PATENT SECURITY AGREEMENT (FIRST LIEN) Recorded Jan 22, 2015
From: GOGRID, LLC
To: TORONTO DOMINION (TEXAS) LLC, SUCCESSOR BY ASSIGNMENT TO MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 034793/0448 →
PATENT SECURITY AGREEMENT (SECOND LIEN) Recorded Jan 22, 2015
From: GOGRID, LLC
To: TORONTO DOMINION (TEXAS) LLC, SUCCESSOR BY ASSIGNMENT TO MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 034793/0483 →
SECURITY INTEREST Recorded May 20, 2014
From: GOGRID, LLC
To: GOGRID INVESTORS LLC
Reel/Frame 032970/0909 →
SECURITY AGREEMENT Recorded Jun 13, 2013
From: GOGRID, LLC
To: PARTNERS FOR GROWTH III, L.P.
Reel/Frame 030602/0657 →
CHANGE OF NAME Recorded May 17, 2011
From: SERVEPATH, LLC
To: GOGRID, LLC
Reel/Frame 026297/0013 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2009
From: KEAGY, JOHN MARTIN; CARR, JEFFERY; LAPPAS, PAUL
To: SERVEPATH, LLC
Reel/Frame 023334/0794 →
Continuity (8)
Provisional Application 61099254 · Sep 23, 2008
Provisional Application 61140838 · Dec 24, 2008
Provisional Application 61140835 · Dec 24, 2008
Provisional Application 61145962 · Jan 20, 2009
Provisional Application 61145965 · Jan 20, 2009
Provisional Application 61159437 · Mar 11, 2009
Provisional Application 61159438 · Mar 11, 2009
Provisional Application 61165900 · Apr 1, 2009
Cited By (1)
US 12,387,116