回答:
スナップショットを作成すると、最初の仮想ディスクイメージで行われたすべての変更は、実際にはイメージ自体では行われませんが、新しい(スナップショット)ディスクファイルに書き込まれます。仮想ディスクイメージ全体をコピーする必要がないため、このアクションは非常に高速です。これは、コピーオンライトの原則で機能するためです(変更される、つまり、書き込まれたブロックがスナップショットイメージに書き込まれる)。元の仮想ディスクイメージのデータをますます変更すると、スナップショットイメージが大きくなることに注意してください(スナップショットを作成した時点の状態のままです)。ほとんどの場合、元の画像よりもはるかに小さくなりますが、最悪の場合はまったく同じサイズになります(すべてのブロックが変更された場合)。
この新しいスナップショットイメージで実行できるアクションは2つあります。
上記のすべての手順は、複数のスナップショットでも機能します。その場合、元のイメージは1つのスナップショットであり、次のスナップショットはその(最初の)スナップショットのブロックを参照できます。このようにして、簡単に破棄またはマージできる多くのスナップショットを作成できます。
スナップショットを使用して、仮想化ソフトウェアは、CPU状態、RAM、構成(VM内のネットワークカードの数)、およびディスクの4つのことを追跡する必要があります。最初の3つのことは無視します。それらは膨大な量のデータではないため、ソフトウェアは比較的小さなデータ構造のコピーを作成してファイルに保存するだけです。そのため、説明のためにディスクのスナップショットのみを残します。
まず、VMがハードディスクと見なすのは、実際にはホストファイルシステム上の単なるファイルのセットです。スナップショットを作成するために、仮想マシンソフトウェアは特定の時点でVMのディスクを取得して保存し、新しい空のディスクファイルを開き、その後のすべてのディスクアクセスでコピーオンライトスキームを実行します。
ディスクファイルがBigVM.diskであるとします。スナップショットを作成すると、VMソフトウェアはディスクの名前をBigVM-s1.diskに変更し、新しい空のBigVM.diskを作成します。VMの実行中、すべての読み取り要求はBigVM.diskを通過します。そのファイルにVMが必要とするディスクの部分のエントリがない場合、BigVM-s1.diskからのデータが返されます。書き込み時には、データはBigVM-s1.diskではなくBigVM.diskに書き込まれます。同じセクターへの将来の読み取りでは、BigVM-s1.diskに含まれる元のスナップショットではなく、BigVM.diskからデータが返されます。BigVM-s1.diskにはスナップショットの時点でのVMのハードディスクの状態が含まれ、BigVM.diskにはスナップショット以降のディスクへのすべての差分が含まれます。
古いスナップショットに戻すとどうなりますか?VMソフトウェアはBigVM.diskの内容を破棄し、最初からやり直します。新しい空のBigVM.diskは引き続きBigVM-s1.diskを指します。
VMwareスナップショットとその内部での作業は、@ http://www.pcclm.com/2012/02/virtual-machine-snapshots-in-vmware.htmlで最もよく説明されています。