【VMWare ESXi】図解 スナップショット(snapshot)の概要

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

仮想マシンでソフトウェアの更新やセキュリティパッチを適用したあと、正常に動かなくなり、元の状態に戻したいことがあります。作業の前にスナップショットを作っておけば、変更前の状態に戻せます。

この記事では、VMware ESXi のスナップショットのしくみを、作成・復元・削除(統合)の順に図で整理します。

この記事でわかること
  1. スナップショットを作ると、メモリと仮想ディスクがどうなるか
  2. スナップショットに戻すとき(復元)の動き
  3. スナップショットの削除と統合、運用上の注意

スナップショットの仕組み

仮想マシンの通常実行時

仮想マシンの OS やアプリケーションのデータの実体は、仮想ディスク(VMDK)ファイルです。仮想ディスクについては、次の記事を参考にしてください。

>> 参考記事:図解 仮想ストレージ(仮想ディスク、データストア)の概要

仮想マシンが起動しているときは、実行中のデータがメモリに展開され、メモリと仮想ディスクの間でデータを読み書きしながら動いています。

仮想マシンメモリ仮想ディスク(VMDK)読み書き
図1 通常の実行中は、メモリと仮想ディスクの間で読み書きする

スナップショット作成時:メモリの状態を保存

スナップショットを作るときは、その時点の仮想ディスクの状態と、メモリの状態を残す必要があります。メモリの状態は、メモリファイル(.vmsn)に保存します。

仮想マシンメモリ仮想ディスク(VMDK)メモリファイル(.vmsn)保存
図2 メモリの状態をメモリファイルに保存する
補足

メモリの状態を含めるかどうかは、スナップショットを作るときに選べます(スナップショット作成画面の「Include virtual machine’s memory」オプション)。メモリを含めたスナップショットに戻すと、仮想マシンは電源オンで動いている状態に戻ります。メモリを含めない場合は、電源オフの状態に戻ります。

仮想ディスクを読み取り専用にする

次に、仮想ディスクの状態を残すため、元の仮想ディスクへの書き込みを止めて読み取り専用にします。

仮想マシンメモリ仮想ディスク(VMDK)メモリファイル(.vmsn)読み取り専用
図3 元の仮想ディスクを読み取り専用にして、その時点の状態を残す

以降の書き込みは差分ディスクへ

では、これ以降に仮想マシンが書き込むデータはどうなるのでしょうか。

新しい書き込みは、差分ディスク(delta、子ディスクとも呼ばれます)に書かれます。差分ディスクは名前のとおり、スナップショット作成後に変わったデータだけを保存する .vmdk ファイルです。変更のないデータは、元の仮想ディスクから読み取ります。

仮想マシンメモリ仮想ディスク(VMDK)メモリファイル(.vmsn)読み取り専用差分ディスク(delta)読み書き読み取り
図4 書き込みは差分ディスクへ。変更のないデータは元の仮想ディスクから読み取る

このように、元の仮想ディスクを読み取り専用にして状態を残し(静止点を取るとも言います)、メモリの状態はメモリファイルに保存します。これがスナップショットです。

スナップショットに関係する主なファイルは次のとおりです。

ファイル中身
.vmsdスナップショットの情報(どのスナップショットがあるか)を記録するファイル
.vmsnスナップショット作成時の仮想マシンの状態。メモリを含めた場合は、メモリの状態も入る
-delta.vmdk
-sesparse.vmdk
差分ディスク。スナップショット作成後の変更を保存する。VMFS6 のデータストアでは SEsparse 形式が既定

スナップショットの復元

スナップショットを作ったあとに、仮想マシンへパッチ適用などの変更をしたものの正常に動かず、元の状態に戻すとします。このときは、スナップショットに戻す(Revert)操作をします。

メモリの状態はメモリファイルから戻し、スナップショット作成後に差分ディスクへ書かれた変更は破棄します。これで、メモリと仮想ディスクがスナップショットを作った時点の状態に戻ります。

仮想マシンメモリ仮想ディスク(VMDK)メモリファイル(.vmsn)読み取り専用差分ディスク(delta)(空)復元スナップショット後の変更は破棄
図5 メモリはメモリファイルから戻し、差分ディスクの変更は破棄する

戻したあともスナップショットは残るので、元の仮想ディスクは読み取り専用のままで、以降の書き込みはまた差分ディスクに書かれます。同じスナップショットに何度でも戻せます。

注意

スナップショットに戻すと、今のディスクとメモリの状態は失われます。今の状態も残しておきたいときは、戻す前にもう1つスナップショットを作っておきます。

スナップショットの削除と統合

スナップショットを作ったまま放置して、仮想マシンでデータの読み書きを続けると、差分ディスクがだんだん大きくなります。

仮想マシンメモリ仮想ディスク(VMDK)メモリファイル(.vmsn)読み取り専用差分ディスク(delta)読み書き
図6 スナップショットを残したままにすると、差分ディスクが大きくなる

読み取るデータが元の仮想ディスクと差分ディスクに分かれるので、性能に影響が出ることもあります。差分ディスクが大きくなり続けると、データストアの容量が足りなくなるおそれもあります。

そのため、スナップショットが不要になったら削除します。スナップショットを削除すると、差分ディスクのデータが元の仮想ディスク(親ディスク)に書き込まれて統合され、差分ディスクとメモリファイルは削除されます。スナップショットが残っていなければ、仮想マシンは元の仮想ディスクに直接読み書きする状態に戻ります。削除しても、仮想マシンの今の状態は変わりません。

仮想マシンメモリ仮想ディスク(VMDK)メモリファイル(.vmsn)削除読み書き可差分ディスク(delta)削除統合
図7 スナップショットの削除で、差分ディスクのデータを元の仮想ディスクに統合する

統合の間は差分のデータを書き込むため、データストアの容量に余裕があるときに行うことをお勧めします。

補足

vSphere Client の「統合(Consolidate)」は、スナップショットの削除がうまく終わらずに差分ディスクが残ってしまったときに、残った差分ディスクをまとめる操作です。通常は「削除」または「すべて削除」で統合まで行われます。

スナップショットを使うときの注意

スナップショットは、仮想マシンの一時的な状態を残して、いざというときに戻すのに便利です。ただし、しくみのとおり、元の仮想ディスクの静止点を取って以降の変更を別ファイルに保存しているだけなので、仮想ディスクのバックアップではありません。元の仮想ディスクが失われると、スナップショットからは復元できません。あくまで、一時的な状態の保存と復元に使ってください。

項目推奨・制限
バックアップスナップショットをバックアップとして使わない
保持期間1つのスナップショットを72時間より長く残さない
数1つのチェーンでサポートされるのは最大32個。性能を考えると2〜3個まで
取得できない構成物理互換モードの RDM、バス共有を設定した仮想マシン、DirectPath I/O のデバイスを使う仮想マシンはスナップショットに対応しない
独立型ディスク独立型(Independent)ディスクを持つ仮想マシンは、電源をオフにしてからスナップショットを作る

メモリの状態をメモリファイルに保存できるので、起動中の仮想マシンのスナップショットも作れます。ただし、上の表のように起動中には作れない構成もあります。また、メモリを含むスナップショットを作るときは、仮想マシンが一時的に停止(stun)します。

まとめ

操作内部の動き
作成メモリの状態をメモリファイルに保存し、元の仮想ディスクを読み取り専用にする。以降の書き込みは差分ディスクへ
復元(戻す)メモリをメモリファイルから戻し、差分ディスクの変更を破棄する。スナップショットは残る
削除差分ディスクのデータを元の仮想ディスクに統合し、スナップショットのファイルを削除する
注意バックアップではない。長く残さず、数を増やしすぎない

参考

>> 参考:Snapshot Files(vSphere 8.0)

現在の状況

この記事を書いた時点では VMware のドキュメントサイト(docs.vmware.com)の「スナップショット ファイル」(vSphere 6.5)を参照していました。現在、VMware のドキュメントは Broadcom の TechDocs(techdocs.broadcom.com)で公開されています。上のリンクは vSphere 8.0 の英語版です。

コメント