IP Library Patent Application 12032462
Patent Application
App. No. 12/032,462

Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer

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 None
App. No.
12/032,462
Abstract

Various embodiments of a system and method for transferring a virtual machine stored on a server computer system to a client computer system in order to execute the virtual machine locally on the client computer system are disclosed. The system and method may also be operable to transfer the virtual machine back from the client computer system to the server computer system. File differencing techniques may be used in both directions so that only changed data in the virtual machine image file is transferred across the network. The client computer system may be operable to download the virtual machine image file from the server computer system using common communication protocols such as HTTP, HTTPS, or FTP so that the virtual machine can be transferred to the client computer system without needing to be able to access files on the server computer system through a VPN.

Claims (65)

1 . A computer-accessible storage medium storing program instructions executable by a client computer system to implement:

at an initial time, connecting to a server computer system that stores a first version of a virtual machine image file;

downloading a complete copy of the first version of the virtual machine image file from the server computer system to the client computer system using one or more of the following communication protocols: Hypertext Transfer Protocol (HTTP), Hypertext Transfer Protocol over Secure Socket Layer (HTTPS), File Transfer Protocol (FTP);

at a subsequent time, re-connecting to the server computer system, wherein the server computer stores a second version of the virtual machine image file at the subsequent time, wherein the second version of the virtual machine image file includes first changed data that has changed from the first version of the virtual machine image file and first unchanged data that has not changed;

downloading the first changed data of the second version of the virtual machine image file from the server computer system to the client computer system without downloading the first unchanged data;

updating the virtual machine image file stored on the client computer system using the first changed data; and

executing a virtual machine implemented by the virtual machine image file on the client computer system after updating the virtual machine image file.

2 . The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable to implement:

in response to first user input to the virtual machine received while executing the virtual machine on the client computer system, changing the virtual machine image file on the client computer system to produce a third version of the virtual machine image file, wherein the third version of the virtual machine image file includes second changed data that has changed from the second version of the virtual machine image file and second unchanged data that has not changed; and

uploading the second changed data of the third version of the virtual machine image file from the client computer system to the server computer system without uploading the second unchanged data.

3 . The computer-accessible storage medium of claim 2 , wherein the program instructions are further executable to implement:

while executing the virtual machine on the client computer system, receiving second user input requesting to transfer execution of the virtual machine to the server computer system;

ceasing execution of the virtual machine on the client computer system in response to the second user input;

wherein the second changed data of the third version of the virtual machine image file is uploaded from the client computer system to the server computer system in response to the second user input.

4 . The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable to implement:

storing information on the client computer system indicating an expiry date of the virtual machine image file; and

deleting the virtual machine image file from the client computer system in response to determining that the expiry date has been reached.

5 . The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable to implement:

encrypting the virtual machine image file, wherein the virtual machine image file is stored on the client computer system in an encrypted form.

6 . The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable to implement:

receiving from the server computer system a command to delete the virtual machine image file; and

deleting the virtual machine image file from the client computer system in response to the command.

7 . The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable to implement:

after connecting to the server computer system at the initial time but before downloading the complete copy of the first version of the virtual machine image file, establishing a virtualization session to communicate with the virtual machine executing on the server computer system; and

during the virtualization session, receiving user input requesting to transfer execution of the virtual machine from the server computer system to the client computer system, wherein the complete copy of the first version of the virtual machine image file is downloaded from the server computer system in response to the user input.

8 . The computer-accessible storage medium of claim 7 , wherein the program instructions are further executable to implement:

instantiating the virtual machine from the first version of the virtual machine image file on the client computer system after downloading the complete copy of the first version of the virtual machine image file.

9 . The computer-accessible storage medium of claim 1 , wherein the program instructions are further executable to implement:

receiving user input specifying an address of the server computer system;

wherein connecting to the server computer system uses the specified address.

10 . The computer-accessible storage medium of claim 9 ,

wherein receiving the user input specifying the address of the server computer system comprises receiving a uniform resource locator (URL) of the server computer system.

11 . A client computer system comprising:

one or more processors;

memory storing program instructions; and

a non-volatile storage device;

wherein the program instructions are executable by the one or more processors to implement:

at an initial time, connecting to a server computer system that stores a first version of a virtual machine image file;

downloading a complete copy of the first version of the virtual machine image file from the server computer system to the non-volatile storage device of the client computer system using one or more of the following communication protocols: Hypertext Transfer Protocol (HTTP), Hypertext Transfer Protocol over Secure Socket Layer (HTTPS), File Transfer Protocol (FTP);

at a subsequent time, re-connecting to the server computer system, wherein the server computer stores a second version of the virtual machine image file at the subsequent time, wherein the second version of the virtual machine image file includes first changed data that has changed from the first version of the virtual machine image file and first unchanged data that has not changed;

downloading the first changed data of the second version of the virtual machine image file from the server computer system without downloading the first unchanged data;

updating the virtual machine image file stored on the non-volatile storage device of the client computer system using the first changed data; and

executing a virtual machine implemented by the virtual machine image file stored on the non-volatile storage device of the client computer system after updating the virtual machine image file.

12 . The client computer system of claim 11 , wherein the program instructions are further executable to implement:

in response to first user input to the virtual machine received while executing the virtual machine, changing the virtual machine image file stored on the non-volatile storage device of the client computer system to produce a third version of the virtual machine image file, wherein the third version of the virtual machine image file includes second changed data that has changed from the second version of the virtual machine image file and second unchanged data that has not changed; and

uploading the second changed data of the third version of the virtual machine image file to the server computer system without uploading the second unchanged data.

13 . The client computer system of claim 12 , wherein the program instructions are further executable to implement:

while executing the virtual machine, receiving second user input requesting to transfer execution of the virtual machine to the server computer system;

ceasing execution of the virtual machine in response to the second user input;

wherein the second changed data of the third version of the virtual machine image file is uploaded to the server computer system in response to the second user input.

14 . The client computer system of claim 11 , wherein the program instructions are further executable to implement:

storing information indicating an expiry date of the virtual machine image file stored on the non-volatile storage device of the client computer system; and

deleting the virtual machine image file from the non-volatile storage device of the client computer system in response to determining that the expiry date has been reached.

15 . The client computer system of claim 11 , wherein the program instructions are further executable to implement:

encrypting the virtual machine image file, wherein the virtual machine image file is stored on the non-volatile storage device of the client computer system in an encrypted form.

16 . The client computer system of claim 11 , wherein the program instructions are further executable to implement:

after connecting to the server computer system at the initial time but before downloading the complete copy of the first version of the virtual machine image file, establishing a virtualization session to communicate with the virtual machine executing on the server computer system; and

during the virtualization session, receiving user input requesting to transfer execution of the virtual machine from the server computer system to the client computer system, wherein the complete copy of the first version of the virtual machine image file is downloaded from the server computer system in response to the user input.

17 . A method comprising:

at an initial time, connecting to a server computer system that stores a first version of a virtual machine image file;

downloading a complete copy of the first version of the virtual machine image file from the server computer system to a client computer system using one or more of the following communication protocols: Hypertext Transfer Protocol (HTTP), Hypertext Transfer Protocol over Secure Socket Layer (HTTPS), File Transfer Protocol (FTP);

at a subsequent time, re-connecting to the server computer system, wherein the server computer stores a second version of the virtual machine image file at the subsequent time, wherein the second version of the virtual machine image file includes first changed data that has changed from the first version of the virtual machine image file and first unchanged data that has not changed;

downloading the first changed data of the second version of the virtual machine image file from the server computer system to the client computer system without downloading the first unchanged data;

updating the virtual machine image file stored on the client computer system using the first changed data; and

executing a virtual machine implemented by the virtual machine image file on the client computer system after updating the virtual machine image file.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 23, 2013
From: CLEARCUBE TECHNOLOGY, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 031837/0976 →
RELEASE OF SECURITY INTEREST Recorded Oct 27, 2011
From: BRIDGE BANK, NATIONAL ASSOCIATION
To: CLEARCUBE TECHNOLOGY, INC.
Reel/Frame 027135/0663 →
SECURITY INTEREST Recorded Oct 3, 2008
From: CLEARCUBE TECHNOLOGY, INC.
To: BRIDGE BANK, NATIONAL ASSOCIATION
Reel/Frame 021645/0719 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 18, 2008
From: HUSAIN, SYED M. AMIR; UMAIR, MUHAMMAD
To: CLEARCUBE TECHNOLOGY, INC.
Reel/Frame 020521/0285 →