Monday, June 2, 2008

VMware ESX server 3.x snapshots - introduction

As everybody knows who is in charge of any Virtual Infrastructure installation VMware ESX server allows to do snapshots of virtual machines. Simply, a snapshot of virtual machine is a saving of its current state which provides a way how to return from a future state to the saved states (the wikipedia is a good source for more information). The snapshot of virtual machine is able to keep its memory state, its settings state and its disk state. It is possible to maintain multiple snapshots and so-called "snapshots of snapshots" as well.

What is it useful for? Snapshots can help, for example, with patch management of virtual machines. You take a snapshot, apply the required patches, check the machine behaviour and then you will decide to revert the changes if something goes wrong or you commit them which means to consolidate the snapshot with the virtual machine's virtual disk.

And how is it working at all? When you create a snapshot of virtual machine then new or changing data aren't written to the virtual machine's virtual disk but are redirected to the so-called snapshot delta file. The filename of this file has form of VM_DISK_FILE-*-delta.vmdk. Let's mention when you take a snapshot of virtual machine's memory it will have its own delta file. These delta files are described with metadata stored in files like VM_DISK_NAME.vmsd. Beside this, it is created a snapshot state file for each snapshot of name VM_DISK_NAME-*.vmsn. It stores the actual running state of virtual machine at the time of taking the snapshot (the file is similar to the suspend state file with *.vmss suffix when you suspend the machine).

In the next part we will discuss the question of proper capacity planning to get rid of troubles with growing snapshots.

No comments: