I have ESX free (most recent version 5.X) installed on a standalone server with an internal datastore in a RAID 5 setup. The VMs will be Windows mostly with some Linux and will be dedicated to performing Software builds using Visual Studio and GCC respectively.
Sometimes a branch VM will need to be created, for instance when a certain build requires an SDK update, we will need to have a snapshot of all revisions of the SDK/machine state combination. Sometimes we will need to be able to revert to a VM state as of a particular SDK version. Snapshots would be acceptable for this, except for the fact that we will need to revert a VM to a snapshot, AND keep a running version of the current VM/SDK state, so essentially creating a clone VM for each "snapshot"/SDK version that can be run at the same time as the original VM. At any given time we should not need any more than 2 versions of any VM running at the same time, but at least one of the 2 would need to have a snapshot tree of all the different versions of the SDK, so that one VM is always at the most recent state, and the other one can be brought to any historic state for the purpose of rebuilding an old software package if need be.
What is the best practice here with the time it takes to snapshot/revert to a specific VM state being a factor?