Currently, hard disks are employed as data storage devices within most computers. These hard disks typically store pictures, music, documents and applications, as well as the operating system that is required for the computer to start or boot and for applications to run. In the last decade, virtual computers, also called virtual machines, have become a workhorse of enterprise computing. A reason for such popularity is that business users, as well as software developers, may request a virtual computer or virtual machine and have the request fulfilled quickly. Thus, it is not necessary to visit a store and buy a physical computer, install the physical computer in a data center, power it up, and then assign the computer to a user.
A virtual machine, simply stated, is a partition of resources such as a central processing unit (CPU), random access memory (RAM) and a hard disk of a physical computer into one or more virtual machines. For example, a new partition can be created in under a minute, and a virtual machine can be provided to a user very quickly. The virtual machine may run, for example, on a back-end server in a data center and be accessed by a user from a desktop.
The virtual machine can run its own operating system, and from the perspective of the operating system, the virtual machine behaves exactly like a physical computer. Many different virtual machines can run simultaneously on the same physical computer. Such partitioning of the resources of a single physical computer into multiple virtual machines allows for greater utilization of the physical computer, because the physical computer can now run multiple applications without such applications interfering with one another, or with the operating system. A virtual machine also has one or more virtual hard disks, each of which functions in exactly the same way as a physical hard disk.
It is common knowledge that in order for a newly acquired physical computer to function properly, it is necessary to initially customize the physical computer, for example, by installing applications, loading data and configuring the physical computer to work according to the user's requirements. This customization of the physical computer typically requires a significant amount of effort and time, and more data typically accumulates on the physical computer over time. For example, when a user acquires a new physical computer, it may be provided with an operating system, such as WINDOWS® or OSX®, but time and effort are required to install applications, such as MICROSOFT OFFICE®. For more advanced usage, installation of all of the required tools on the new computer may take even longer. In addition, the user may have data, such as WORD® documents, EXCEL® files or POWERPOINT® files that are stored elsewhere. Thus, it may also be necessary to upload such data and to configure the new machine to function according to the user's needs. Such setup preparations of the new machine may consume an inordinate amount of time before a user can begin working with it.
The same scenario applies to virtual machines. However, provisioning and unprovisioning or deprovisioning a virtual machine is much simpler. For example, unprovisioning or deprovisioning a virtual machine may take less than a minute. Consequently, a user may want to reduce costs by having a particular virtual machine available for use only when actually needed. For example, a user who employs a virtual machine to process payrolls at the end of each month may need the virtual machine only during the last week of every month.
In an enterprise situation, the cost associated with a virtual machine must be paid on a weekly or monthly basis on what may be characterized as a type of rental. Because virtual machines are so easily obtainable, users may wish to have such machines available only when needed. For example, users who process payrolls at the end of the month may wish to “rent” a virtual machine only at or near the end of each month to perform payroll processing and thereafter return the virtual machine. Thus, users may want to be able to release a virtual machine when not in use, because they do not want to continue to pay “rent”. However, a problem with such an arrangement is that it takes considerable time and effort, to set up a virtual computer exactly the way a user may want it to work.
Accordingly, when a user gives up a virtual machine at the end of the user's processing, the user's concern may be the potential of being required to spend a considerable amount of time in setup preparations when a new virtual machine is obtained. Because of this expensive pattern of installing all of the required tools required to customize a new virtual machine, users may not be willing to give up their virtual machines to save on “rental” costs. Thus, users may be willing to give up their virtual machines only if they are able to retain all the applications, configurations, customizations, and data on which they previously expended considerable time and effort.
The period between such uses may be days, weeks, months, or even years for certain types of work. Users may also want to share their work with co-workers within an organization or even with the entire organization. For example if payroll processing is performed regionally, a user in a particular region may configure a virtual machine with applications for payroll processing and share it with users in other regions. In addition users may want to create virtual machine templates, which they or other users can use to create new virtual machines such that the customization effort is minimized.
In order to protect the initial customization and subsequent accumulation of data, a backup arrangement of some type is typically employed to copy selected folders and files to a location outside the physical computer. Thus, if a physical computer fails or is replaced by a new physical computer, the important files can be restored from the backup arrangement. However, traditional backup arrangements are not designed to address the foregoing types of intermittent availability, sharing, and templating of virtual machines. For example, traditional backup arrangements are slow and typically store a user's content for weeks rather than months or years. Further, traditional backup arrangements typically do not allow sharing of content or storage of templates from which virtual machines can be created.
Although files which a user wishes to protect may be backed up, for example, to some type of backup such as the “cloud”, backing up files may take up to several hours, depending on factors, such as the quantity of data and the location or locations from which the data may have originated outside the computer. A problem with backup in a large enterprise is the length of time required to perform a backup even in the cloud, and the fact that backup is not typically retained for more than a few months.
Further, backup is designed primarily to restore computer data in case of a disaster and is not designed to store the configurations of a computer. Thus, if a virtual machine is deleted, it must typically be rebuilt when needed at a later time, because not only are the configurations not backed up, but also the backed up data is no longer available. Thus, backup is not adequate to meet the need for a solution to the problem of giving up a virtual machine while retaining all of the configurations, applications, and data of the virtual machine.
Currently, host virtualization software, such as VMWARE VSPHERE®, allows creation of templates from which virtual machines may be provisioned. Typically, the responsibilities of a service operation, such as an information technology (IT) department, may include, for example, identifying patterns of use and building such templates. For example, the IT department may build a virtual machine template with an operating system, such as WINDOWS®, and a suite of office applications, such as MICROSOFT OFFICE®, or with an operating system, such as LINUX®, and a document database system, such as MONGODB®.
Users may then provision virtual machines from such templates and avoid the time and effort of themselves installing the operating system and office applications or database system. However, while the creation of such templates by IT departments may reduce users' customization requirements, it cannot accommodate, for example, the creation of thousands of templates by users or the saving of virtual machines as templates by users. While virtual machines may be created from templates, templates are not customized to an exact level for each user. For example, IT personnel in an enterprise may create templates for virtual machines including relatively common applications, such as MICROSOFT OFFICE®, because it may be likely that at least some users may need a virtual machine with such applications. Other templates may include other applications to meet the needs of other users, so there may be a several different template versions.
However, a user who receives a virtual machine created from a template must still perform his or her own personal customizations and/or load data belonging to the user. Further, templates are usually designed and created for use by IT personnel who operate an entity's backend servers, and users typically do not have the technical ability or access to create and publish their own templates. Neither backups nor templates solve the problem of users who wish to give up their virtual machines while retaining all of their configuration, data and programs.
There is a present need for methods and systems for creating a library of virtual hard disks, which enables a user to remove one or more virtual hard disks from the user's virtual machine and “check in” the removed disks into such library. There is a further need for such a library which enables users to clone virtual hard disks that are checked in to the library for use with other virtual machines and to allow other users to clone and use such checked-in hard disks to share such users' work.