頻繁に VM を作っては潰しというような要件を達成する為に最近では専ら Vagrant + VirtualBox という構成が選択されます。僕もノート PC でそういうことする場合には Vagrant 使ってます。
ですがある程度秩序だって仮想化サーバー群を構築する場合 KVM とかの方が都合がいいことが多いでしょう。そのサーバー群の中にテスト用の VM を置くとかなれば KVM な VM を頻繁に内容を変更したり戻したりということが必要になります。
KVM な VM を使って Chef などのプロビジョニングツールのコードのテストを行なう場合、以下のようなプロセスが採られることになると思います。
CI ツールを使って 2-3 が繰り返されることになると思います。で、そのスナップショットを以下のような感じで気軽にやるとだいたい大惨事が起きます。
$ qemu-img snapshot -c test test.qcow2 # スナップショットの作成
$ qemu-img snapshot -a test test.qcow2 # スナップショットの適用
これを何度も繰り返しているとあっさり QCOW2 はぶっ壊れます。本当に糞ですが実際そんなもんです。このあたりの糞さを理由に QCOW2 を使いたくないという人も結構います。
ですが、差分スナップショットを作っては消し作っては消しという方法ですとイメージは壊れませんし、ベースの方のディスクイメージをバックアップすることが出来るので万が一壊れても問題ないです。
$ qemu-img create -b test.qcow2 -f qcow2 test.diff.qcow2
{test.diff.qcow2 から起動してテストを実行したのち VM を終了する}
$ rm test.diff.qcow2
といった具合です。わりとだるいですし Vagrant 使えるなら使っちゃったほうがいい感じしますね。