Amazon have announced the availability of a feature that allows vSphere virtual machines (as VMDKs) to be imported into AWS. Today the feature is restricted to systems running Windows 2008 Server Sp2 but will be expanded in the future. Now this concept sounds great but there’s a major drawback here – upload time. A lot of my VMs are multi-gigabyte in size. Uploading them to AWS wouldn’t be a trivial task and of course during this time the VM isn’t available. So “click to the cloud” is getting close but still has issues.
So what would have to be done to allow a VM to be down for the minimum amount of time? I think it wouldn’t be that difficult. Firstly a lot of the data within a VM is static – installation libaries and other files don’t change from day to day. There’s usually a core set of files which are updated continuously. Snapshots provide the facility to manage the upload process as follows:
Take a snapshot of a VM. Upload the snapshot to AWS. While the upload is taking place, the VM will have updates written to a new file, effectively keeping track of changes since the last update. Once the upload is completed, the VM can be shut down and the changes uploaded, reducing the down time to the upload of only changed data. Alternatively another snapshot can be taken and this data uploaded, while new changes are recorded to a third file. Theoretically the process can be repeated indefinitely, each time around the loop the upload time will be shorter and less data will be out of sync. Two things will affect the ability to minimise VM downtime; upload bandwidth to the cloud and rate of change of data.
I’ve signed up to use the vSphere plugin which will enable uploading of the VM image. Today uploading is only available by the API. It will be interesting to see how downtime will be minimised with both options.