Systems and methods for repurposing virtual machines
First Claim
1. A method to be performed by a computing system for providing a virtual machine, the method comprising:
- maintaining, by a virtual machine lifecycle management module, a list of virtual machines that are available for repurposing, the maintaining comprising;
searching for idle virtual machines and archived virtual machines,determining that a virtual machine is unavailable for repurposing because it is reserved,computing an amount of time each virtual machine has been idle;
dynamically determining, whether each of a plurality of virtual machines has been idle for a predetermined period of time;
archiving, a respective virtual machine of the plurality of virtual machines that has been determined to be idle for the predetermined period of time; and
replacing, the respective virtual machine with a stub that refers to the location of the archived virtual machine on a secondary storage;
receiving a request to provide a virtual machine;
receiving a specification for the virtual machine, the specification comprising at least one configuration parameter for the virtual machine, the at least one configuration parameter comprising an association with a value;
determining if a virtual machine on the list meets or exceeds the specification and is available for repurposing;
if there is not a virtual machine that is repurposable or there is not a virtual machine that meets or exceeds the specification, creating a new virtual machine that meets or exceeds the specification;
if one or more virtual machines on the list is available for repurposing and the one or more virtual machines meets or exceeds the specification, then selecting a virtual machine from the one or more virtual machines by;
selecting an idle virtual machine from among the one or more virtual machines based on it being the closest match to the specification, if at least one of the one or more virtual machines is idle, andselecting an archived virtual machine for repurposing based on it being the closest match to the specification, if no virtual machine of the one or more virtual machines is idle;
repurposing the selected virtual machine, if a virtual machine has been selected, the repurposing comprising;
recovering the selected virtual machine from the second storage device, if the selected virtual machine is an archived virtual machine;
reverting the selected virtual machine to a generic state from which a user can modify the selected virtual machine;
associating the selected virtual machine with the user; and
switching permissions or ownership of the selected virtual machine from a previous user to the user; and
updating the list to reflect that the selected virtual machine is unavailable.
4 Assignments
0 Petitions
Accused Products
Abstract
Software, firmware, and systems repurpose existing virtual machines. After a virtual machine is created, the system stores data associated with the virtual machine to permit its later repurposing. Repurposing data includes data associated with the virtual machine when the virtual machine is in a generic state from which it may be configured for use by two or more users/applications. When the system receives a request to create a new virtual machine, rather than create a brand new virtual machine, the system repurposes an existing virtual machine. The system identifies a virtual machine to repurpose, deletes data associated with the identified virtual machine, and loads a saved copy of repurposing data. The system may then load user data or otherwise customize the database and virtual machine.
-
Citations
20 Claims
-
1. A method to be performed by a computing system for providing a virtual machine, the method comprising:
-
maintaining, by a virtual machine lifecycle management module, a list of virtual machines that are available for repurposing, the maintaining comprising; searching for idle virtual machines and archived virtual machines, determining that a virtual machine is unavailable for repurposing because it is reserved, computing an amount of time each virtual machine has been idle; dynamically determining, whether each of a plurality of virtual machines has been idle for a predetermined period of time; archiving, a respective virtual machine of the plurality of virtual machines that has been determined to be idle for the predetermined period of time; and replacing, the respective virtual machine with a stub that refers to the location of the archived virtual machine on a secondary storage; receiving a request to provide a virtual machine; receiving a specification for the virtual machine, the specification comprising at least one configuration parameter for the virtual machine, the at least one configuration parameter comprising an association with a value; determining if a virtual machine on the list meets or exceeds the specification and is available for repurposing; if there is not a virtual machine that is repurposable or there is not a virtual machine that meets or exceeds the specification, creating a new virtual machine that meets or exceeds the specification; if one or more virtual machines on the list is available for repurposing and the one or more virtual machines meets or exceeds the specification, then selecting a virtual machine from the one or more virtual machines by; selecting an idle virtual machine from among the one or more virtual machines based on it being the closest match to the specification, if at least one of the one or more virtual machines is idle, and selecting an archived virtual machine for repurposing based on it being the closest match to the specification, if no virtual machine of the one or more virtual machines is idle; repurposing the selected virtual machine, if a virtual machine has been selected, the repurposing comprising; recovering the selected virtual machine from the second storage device, if the selected virtual machine is an archived virtual machine; reverting the selected virtual machine to a generic state from which a user can modify the selected virtual machine; associating the selected virtual machine with the user; and switching permissions or ownership of the selected virtual machine from a previous user to the user; and updating the list to reflect that the selected virtual machine is unavailable. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A non-transitory computer-readable storage medium storing instructions, which when executed by at least one data processing device, performs a method comprising:
-
maintaining, by a virtual machine lifecycle management module, a list of virtual machines that are available for repurposing, the maintaining comprising; searching for idle virtual machines and archived virtual machines, determining that a virtual machine is unavailable for repurposing because it is reserved, computing the amount of time each virtual machine has been idle; dynamically determining whether each of a plurality of virtual machines has been idle for a predetermined period of time; archiving a respective virtual machine of the plurality of virtual machines that has been determined to be idle for the predetermined period of time; and replacing the respective virtual machine with a stub that refers to the location of the archived virtual machine on a secondary storage; receiving a request to provide a virtual machine; receiving a specification for the virtual machine, the specification comprising at least one configuration parameter for the virtual machine, the at least one configuration parameter comprising an association with a value; determining if a virtual machine on the list meets or exceeds the specification and is available for repurposing, if no virtual machine meets or exceeds the specification or no virtual machine is available, creating a new virtual machine for the user that meets or exceeds the specification for the virtual machine; if one or more virtual machines on the list meets or exceeds the specification and is available for repurposing, selecting a virtual machine from the one or more virtual machines by; selecting an idle virtual machine from among the one or more virtual machines based on it being the closest match to the specification, if at least one of the one or more virtual machines is idle, and selecting an archived virtual machine for repurposing based on it being the closest match to the specification, if no virtual machine of the one or more virtual machines is idle; repurposing the selected virtual machine, if a virtual machine has been selected, the repurposing comprising; recovering the selected virtual machine from the second storage device, if the selected virtual machine is an archived virtual machine; reverting the selected virtual machine to a generic state from which a user can modify the selected virtual machine; associating the selected virtual machine with the user; and switching permissions or ownership of the selected virtual machine from a previous user to the user; and updating the list to reflect that the selected virtual machine is unavailable. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. The non-transitory computer-readable storage medium 9, further comprising:
-
before creating the new virtual machine that meets or exceeds the specification, sending a request to wait for a virtual machine for a limited period of time; and receiving a response to wait for the virtual machine for the limited period of time.
-
-
16. The non-transitory computer-readable storage medium 9, wherein an archived virtual machine is selected, and further comprising:
decompressing or decrypting the archived virtual machine and/or replacing data objects that had been removed from the archived virtual machine by deduplication or single-instancing processes.
-
17. A system for providing a virtual machine, the system comprising:
-
at least one processor; memory coupled to the at least one processor; and a virtual machine lifecycle management module, executing on the at least one processor, performing the steps of; maintaining a list of virtual machines that are available for repurposing, the maintaining comprising; searching for idle virtual machines and archived virtual machines; determining that a virtual machine is unavailable for repurposing because it is reserved; computing the amount of time each virtual machine has been idle; dynamically determining whether each of a plurality of virtual machines has been idle for a predetermined period of time; archiving a respective virtual machine of the plurality of virtual machines that has been determined to be idle for the predetermined period of time; and replacing the respective virtual machine with a stub that refers to the location of the archived virtual machine on a secondary storage; receiving a request to provide a virtual machine; receiving a specification for the virtual machine, the specification comprising at least one configuration parameter for the virtual machine, the at least one configuration parameter comprising an association with a value; determining if a virtual machine on the list meets or exceeds the specification and is available for repurposing; if a virtual machine on the list does not meet or exceed the specification or there is not a virtual machine that is available for repurposing, creating a new virtual machine that meets or exceeds the specification; if one or more virtual machines on the list meets or exceeds the specification and the one or more virtual machines is available for repurposing, selecting a virtual machine from the one or more virtual machines by; selecting an idle virtual machine from among the one or more virtual machines based on it being the closest match to the specification, if at least one of the one or more virtual machines is idle; and selecting an archived virtual machine for repurposing based on it being the closest match to the specification, if no virtual machine of the one or more virtual machines is idle; repurposing the virtual machine; repurposing the selected virtual machine, if a virtual machine has been selected, the repurposing comprising; recovering the selected virtual machine from the second storage device, if the selected virtual machine is an archived virtual machine; reverting the selected virtual machine to a generic state from which a user can modify the selected virtual machine; associating the selected virtual machine with the user; and switching permissions or ownership of the selected virtual machine from a previous user to the user; and updating the list to reflect that the selected virtual machine is unavailable. - View Dependent Claims (18, 19, 20)
-
Specification