IP Library Granted Patent US 8,418,176
Granted Patent B1
US 8,418,176 · App. 12/421,610 · Granted Apr 9, 2013

System and method for adapting virtual machine configurations for hosting across different hosting systems

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 8,418,176
App. No.
12/421,610
Granted
Apr 9, 2013
Kind
B1
Abstract

Some embodiments provide a method for a server hosting environment that includes several nodes, where each node is for using one or more hypervisors in order to host several configurations of several computer systems. The method receives a first configuration of a particular computer system. The first configuration accesses a first set of virtual hardware provided by a first hypervisor of a first node. The method generates a second configuration that is based on the first configuration. The second configuration is operable on a different second hypervisor of a second node in the several nodes. The method installs the second configuration on the second node. The second configuration accesses a second set of virtual hardware provided by the second hypervisor to host the second configuration using the second hypervisor.

Claims (45)

1. For a server hosting environment comprising a plurality of nodes, each node for using one or more hypervisors in order to host a plurality of configurations of a plurality of computer systems, a method comprising:

receiving a first configuration of a particular computer system, wherein said first configuration comprises a first set of device drivers for accessing a first set of virtual hardware provided by a first hypervisor of a first node;

identifying a particular device driver in the first set of device drivers that is not compatible with a second set of virtual hardware provided by a different second hypervisor of a second node in the plurality of nodes;

when a replacement device driver for the particular device driver is not available in a library of device drivers, automatically installing a development environment on a second configuration to generate a new device driver in the development environment; and

installing the new device driver in the first configuration in order to specify a third configuration (i) that is to be hosted on the second hypervisor and (ii) that accesses the second set of virtual hardware provided by the second hypervisor.

2. The method of claim 1 , wherein the second configuration is a development environment that is hosted on the second node by the second hypervisor for generating device drivers that allow configurations to be deployed on the second node.

3. The method of claim 1 , wherein the first node is a node that is not in said plurality of nodes.

4. The method of claim 1 , wherein said first configuration comprises an operating system and a kernel.

5. The method of claim 4 , wherein said first configuration further comprises a set of application programs.

6. The method of claim 1 , wherein said first configuration comprises an operating system and a first kernel that interfaces with (i) virtual hardware provided by the first hypervisor and (ii) said operating system, wherein said second configuration comprises a second kernel that interfaces with (i) virtual hardware provided by the second hypervisor and (ii) the same operating system.

7. The method of claim 6 , wherein said first kernel and second kernel each comprise a plurality of parameters, wherein at least one parameter is the same in the first and second kernels, wherein said plurality of parameters comprises at least one of a kernel version number, a set of device drivers, and a set of scripts.

8. The method of claim 1 , wherein said first configuration comprises a first kernel and an operating system, the method further comprising:

retrieving a different second kernel from a library that stores a plurality of kernels;

replacing the first kernel with the second kernel; and

configuring the operating system to operate with said second set of virtual hardware using said second kernel.

9. The method of claim 1 , wherein said first configuration further comprises an operating and kernel, the method further comprising:

based on the operating system and kernel, identifying the development environment in a library of development environments; and

retrieving the development environment from the library of development environments.

10. The method of claim 9 , wherein the development environment is associated with the operating system, wherein automatically installing the development environment comprises:

retrieving a clean version of the operating system from a library that stores a plurality of clean versions of a plurality of operating systems;

installing the clean version of the operating system and the associated development environment onto said second configuration; and

automatically generating the new device driver based on an existing device driver in the clean version of the operating system.

11. The method of claim 1 further comprising determining whether the particular device driver is available in the device driver library.

12. The method of claim 1 further comprising:

receiving a fourth computer system configuration that accesses a third set of virtual hardware provided by a third hypervisor of a node that is not one of the plurality of nodes;

generating a fifth configuration that is based on the fourth configuration; and

installing said fifth configuration onto one of said nodes in the plurality of nodes.

13. The method of claim 1 , wherein the first configuration comprises an operating system, wherein said third configuration comprises the same operating system.

14. The method of claim 1 , wherein said first hypervisor is one of a type 1 hypervisor and a type 2 hypervisor, wherein said second hypervisor is the other of a type 1 hypervisor and a type 2 hypervisor.

15. The method of claim 1 , wherein said first hypervisor is a same type as the second hypervisor.

16. The method of claim 1 , wherein the second configuration is a dummy configuration for generating the new device driver.

17. The method of claim 1 , wherein said receiving, identifying, and installing are performed automatically without human intervention.

18. A method for enabling migration, in a server hosting environment comprising a plurality of nodes, of a first computer system configuration from a first hosted node comprising a first hypervisor to a second hosted node comprising a second hypervisor, the method comprising:

providing a driver comparator module for identifying, among a first set of device drivers of the first configuration that access a first set of virtual hardware provided by the first hypervisor, a particular device driver that is not compatible with a second set of virtual hardware provided by the second hypervisor of the second node;

providing a driver API module for installing a driver API on a second configuration to generate a new device driver when (i) a replacement device driver for the particular device driver is not available in a library of device drivers and (ii) a development environment is not available for generating a replacement device driver for the particular device driver; and

providing an aggregator module for installing the new device driver in the first configuration to generate a third configuration (i) that is to be hosted on the second hypervisor and (ii) that accesses the second set of virtual hardware provided by the second hypervisor.

19. The method of claim 18 , wherein said first configuration comprises an operating system and a first kernel that interfaces with (i) the first set of virtual hardware provided by the first hypervisor and (ii) said operating system, wherein said second configuration comprises a second kernel that interfaces with (i) the second set of virtual hardware provided by the second hypervisor and (ii) the same operating system.

20. The method of claim 18 , wherein the first configuration comprises an operating system, wherein said third configuration comprises the same operating system.

21. A non-transitory computer readable medium storing a computer program for execution by at least one processor of a node of a server hosting environment comprising a plurality of nodes, each node for using one or more hypervisors in order to host a plurality of configurations of a plurality of computer systems, the computer program comprising sets of instructions for:

receiving a first configuration of a particular computer system, wherein said first configuration comprises a first set of device drivers for accessing a first set of virtual hardware provided by a first hypervisor of a first node;

identifying a particular device driver in the first set of device drivers that is not compatible with a second set of virtual hardware provided by a different second hypervisor of a second node in the plurality of nodes;

when a replacement device driver for the particular device driver is not available in a library of device drivers, automatically installing a development environment on a second configuration to generate a new device driver in the development environment; and

installing the new device driver in the first configuration in order to specify a third configuration (i) that is to be hosted on the second hypervisor and (ii) that accesses the second set of virtual hardware provided by the second hypervisor.

22. The non-transitory computer readable medium of claim 21 , wherein the second configuration is a development environment that is hosted on the second node by the second hypervisor for generating device drivers that allow configurations to be deployed on the second node.

23. The non-transitory computer readable medium of claim 21 , wherein said first configuration comprises an operating system and a first kernel that interfaces with (i) virtual hardware provided by the first hypervisor and (ii) said operating system, wherein said second configuration comprises a second kernel that interfaces with (i) virtual hardware provided by the second hypervisor and (ii) the same operating system.

Assignments (13)
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 7, 2009
From: KEAGY, JOHN MARTIN; CARR, JEFFERY; LAPPAS, PAUL
To: SERVEPATH, LLC
Reel/Frame 023341/0815 →