IP Library Granted Patent US 8,473,587
Granted Patent B1
US 8,473,587 · App. 12/841,158 · Granted Jun 25, 2013

System and method for caching server images in a hosting system

Inventors: Paul Lappas (San Francisco, CA); John M. Keagy (San Francisco, CA); Justin Kitagawa (Lafayette, CA)
Assignee: Gogrid, LLC
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,473,587
App. No.
12/841,158
Granted
Jun 25, 2013
Kind
B1
Abstract

Some embodiments provide a method that, at a caching network of a hosting and storage system that includes several nodes for hosting virtual machines for users, receives a request for an image of a particular computer system configuration for deployment as a virtual machine on a particular node of the hosting system. The method determines whether the requested image is presently stored on the caching network. When the image is present on the caching network, the method streams the image to the particular node of the hosting system for deployment as a virtual machine on the particular node. When the image is not presently stored on the caching network, the method retrieves a copy of the image from a permanent storage network and then streams the image to the particular node of the hosting system for deployment as a virtual machine on the particular node.

Claims (54)

1. A method comprising:

at a caching network of a hosting and storage system that comprises a plurality of nodes for hosting virtual machines for users, receiving a request for an image of a particular computer system configuration for deployment as a virtual machine on a particular node of the hosting system;

determining whether the requested image is presently stored on the caching network;

when the image is present on the caching network, streaming the image to the particular node of the hosting system for deployment as a virtual machine on the particular node; and

when the image is not presently stored on the caching network, retrieving a copy of the image from a permanent storage network and then streaming the image to the particular node of the hosting system for deployment as a virtual machine on the particular node.

2. The method of claim 1 , wherein the request is received from the particular node.

3. The method of claim 1 , wherein the request is received from a utility management module operating on the particular node, the utility management module for deploying the particular computer system configuration as a virtual machine on the particular node using the image.

4. The method of claim 1 , wherein the caching network comprises a single cache server.

5. The method of claim 1 , wherein the caching network comprises a plurality of cache servers.

6. The method of claim 5 , wherein the cache servers are Squid servers.

7. The method of claim 5 , wherein determining whether the requested image is presently stored on the caching network comprises searching through the plurality of cache servers for the image.

8. The method of claim 7 , wherein searching through the plurality of cache servers comprises:

selecting a first cache server based on a set of scores computed for each of the plurality of cache servers;

determining whether the image is on the first cache server; and

when the image is not on the first cache server, selecting a second cache server based on the set of scores.

9. The method of claim 5 , wherein each cache server comprises a queue of images of computer system configurations.

10. The method of claim 9 further comprising, when the requested image is present in the queue of a particular cache server, moving the requested image to an entry point of the queue of the particular cache server.

11. The method of claim 9 further comprising, when the requested image is not presently stored on the caching network, loading the retrieved image onto a particular cache server at an entry point of the queue of the particular cache server.

12. The method of claim 11 , wherein the retrieved image is loaded onto the particular cache server based on a set of scores computed for each of the plurality of cache servers.

13. The method of claim 1 , wherein the image is streamed to the particular node in equally sized sections.

14. The method of claim 13 , wherein each section is 256 Mb.

15. A method comprising:

at a caching network of a hosting and storage system that comprises a plurality of nodes for hosting virtual machines for users, the caching network comprising a plurality of cache servers, receiving a request for an image of a particular computer system configuration for deployment as a virtual machine on a particular node of the hosting system;

for each cache server in the caching network, calculating a score for the requested image; and

searching through the cache servers for the requested image in an order determined by the calculated scores.

16. The method of claim 15 , wherein the calculated score for the requested image for a particular cache server is based on a name of the requested image and a name of the particular cache server.

17. The method of claim 15 , wherein calculating the score for the requested image for a particular cache server comprises calculating a hash function using a name of the requested image and a name of the particular cache server.

18. The method of claim 15 , wherein searching through the cache servers comprises:

identifying a first cache server having a highest calculated score for the requested image;

determining whether the image is in a memory of the first cache server; and

when the image is not in a memory of the first cache server, identifying a second cache server having a next highest calculated score for the requested image.

19. The method of claim 18 , wherein searching through the cache servers further comprises iteratively identifying a cache server with a next highest calculated score and determining whether the image is in a memory of the identified cache server until the image is found in a particular cache server.

20. The method of claim 19 further comprising streaming the image to the particular node from the particular cache server.

21. A non-transitory computer readable medium storing a computer program for execution by at least one processor, the computer program comprising sets of instructions for:

at a caching network of a hosting and storage system that comprises a plurality of nodes for hosting virtual machines for users, receiving a request for an image of a particular computer system configuration for deployment as a virtual machine on a particular node of the hosting system;

determining whether the requested image is presently stored on the caching network;

when the image is present on the caching network, streaming the image to the particular node of the hosting system for deployment as a virtual machine on the particular node; and

when the image is not presently stored on the caching network, retrieving a copy of the image from a permanent storage network and then streaming the image to the particular node of the hosting system for deployment as a virtual machine on the particular node.

22. The non-transitory computer readable medium of claim 21 , wherein the caching network comprises a plurality of cache servers.

23. The non-transitory computer readable medium of claim 22 , wherein the set of instructions for determining whether the requested image is presently stored on the caching network comprises a set of instructions for searching through the plurality of cache servers for the image.

24. The non-transitory computer readable medium of claim 23 , wherein the set of instructions for searching through the plurality of cache servers comprises sets of instructions for:

selecting a first cache server based on a set of scores computed for each of the plurality of cache servers;

determining whether the image is on the first cache server; and

when the image is not on the first cache server, selecting a second cache server based on the set of scores.

25. A non-transitory computer readable medium storing a computer program for execution by at least one processor, the computer program comprising sets of instructions for:

at a caching network of a hosting and storage system that comprises a plurality of nodes for hosting virtual machines for users, the caching network comprising a plurality of cache servers, receiving a request for an image of a particular computer system configuration for deployment as a virtual machine on a particular node of the hosting system;

for each cache server in the caching network, calculating a score for the requested image; and

searching through the cache servers for the requested image in an order determined by the calculated scores.

26. The non-transitory computer readable medium of claim 25 , wherein the calculated score for the requested image for a particular cache server is based on a name of the requested image and a name of the particular cache server.

27. The non-transitory computer readable medium of claim 25 , wherein the set of instructions for calculating the score for the requested image for a particular cache server comprises a set of instructions for calculating a hash function using a name of the requested image and a name of the particular cache server.

28. The non-transitory computer readable medium of claim 25 , wherein the set of instructions for searching through the cache servers comprises sets of instructions for:

identifying a first cache server having a highest calculated score for the requested image;

determining whether the image is in a memory of the first cache server; and

when the image is not in a memory of the first cache server, identifying a second cache server having a next highest calculated score for the requested image.

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 032970/FRAME 0944 Recorded Jan 22, 2015
From: GOGRID INVESTORS LLC
To: GOGRID, LLC
Reel/Frame 034793/0438 →
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 →
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 24, 2011
From: SERVEPATH, LLC
To: GOGRID, LLC
Reel/Frame 026335/0391 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2011
From: LAPPAS, PAUL; KEAGY, JOHN M.; KITAGAWA, JUSTIN
To: SERVEPATH, LLC
Reel/Frame 026303/0748 →
Continuity (1)
Provisional Application 61346871 · May 20, 2010