Why is Time Machine not good for making backups of Virtual Machines?

What is wrong with Time Machine?

Time Machine is an incredibly nice backup program, set it on and forget. That really is pretty amazing and it has done wonderful things for many people.

Unfortunately however it is not very suited for keeping good backups of your virtual machines.
Why is that you say?

Well, there’s quite a list of things, bare with me for a bit.

First off look at what makes up a virtual machine. It is a set of files and some of them (the virtual disks) are quite large. We’re talking gigabytes here. If you have your virtual machine running and Time Machine tries to backup that virtual machine it is really likely that the disk that gets written to your backup media is corrupt. The reason being that the virtual machine can still write data to files that you are still backing up. In other words, the file written out to backup is different from what it is on your machine. That is pretty bad for a backup.

Another issue is that virtual disks are large binary files and when Time Machine comes by it will see the whole disk has changed even if you only changed a small file.
So pretend that you just made a change to a small document and saved it. The file you changed is .. maybe 1MB in size. The update to your Time Machine backup however is gigabytes.

So you do the proper thing and you exclude virtual machines from backups as is suggested at VMware’s Knowledge base best practices for virtual machine backup as well as by many old timers at the VMware Fusion forum.

Next is that even if you copy your shut down virtual machine to a separate folder and then have time machine back it up nicely. It might be OK. A problem arises when your time machine backup disk starts to run out of disk space.
The documentation says it will remove the oldest data first. It does, except when it does not.

Time Machine tends to remove larger files first. That actually makes sense for a lot of media types, just not for virtual disks. The default type for virtual disks nowadays is “split into multiple files”. This means that your virtual disk is built up from big binary files also referred to as disk slices.

If one disk slice is missing from your virtual disk, the risk is real that all of your data on that virtual disk is gone.

If you have decided for not splitting into multiple files then if TM decides to delete the largest file, and your virtual disk happens to be that file then everything is gone.