NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

VMware スナップショットの注意点

スナップショットを削除した際、仮想マシンが数分間停止する事象があったので、メモしておきます。
出典:A snapshot removal can stop a virtual machine for long time (1002836)

スナップショット作成時の動作

スナップショットを作成すると、delta.vmdk が作成されます。
例えば、1つの仮想マシンとスナップショットのファイル構成は、下記のとおりです。

  • disk.vmdk with extent disk-flat.vmdk
  • disk-000001.vmdk with extent disk-000001-delta.vmdk

スナップショット作成後、この delta.vmdk で差分情報を収容していきます。

スナップショット削除時の動作

スナップショットを削除、または結合した場合、Consolidate Helper Snapshot と呼ばれるスナップショットが、ディスク I/O に比例して複数作成されます。

  • disk.vmdk with extent disk-flat.vmdk
  • disk-000001.vmdk with extent disk-000001-delta.vmdk
  • disk-000002.vmdk with extent disk-000002-delta.vmdk

delta.vmdk と親ディスクである flat.vmdk は整合性保全のため、Read-only となり、データは、この Consolidate Helper Snapshot へ書き込まれます。しかし、最終的には、この Consolidate Helper Snapshot も flat.vmdk へマージしなければいけないため、この間仮想マシンが停止します。この事から、スナップショットを削除する際は、十分に注意して、ディスク I/O が極力少ない状況下で、実施する事を推奨します。
また、VMware 社は、スナップショットの保持について、72時間(3日)以上、保持しない事を推奨しています。
Best practices for virtual machine snapshots in the VMware environment (1025279)
Use no single snapshot for more than 24-72 hours.

スナップショットによる副作用

データストアに、NetApp ストレージを利用している場合は、次の点にも注意が必要です。
仮想マシンのスナップショットは、512Byte で差分を管理しているため、Partial Write が発生します。
Partial Write とは、4KBbyte 以下のデータに対して書き込みが発生した際(NetApp の仕様上)直接書き込みする事はできないため、対象のブロックを一度読み出し、部分的更新を行ってから、ディスク書き込む処理の事です。このため、スナップショットが存在している場合、無駄な Read が発生していると考えられます。