VMware スナップショットのベストプラクティス
VMware vSphere 仮想マシンは、ソフトウェア向けに俊敏で汎用性が高く、効率的な環境を提供する強力な機能を備えています。vSphere の非常に便利な機能の一つに、スナップショットを作成し、必要に応じてそのスナップショットを使用して仮想マシンを以前の状態に戻す機能があります。しかし、この技術には限界もあります。
本記事では、VMware スナップショットとその活用事例について解説します。 また、VMwareスナップショットのベストプラクティスについて解説し、VMware vSphere ClientおよびPowerCLIを使用してスナップショットを作成する方法についても説明します。
VMwareスナップショットとは何ですか?
VMwareのスナップショットとは、仮想マシンの特定の時点の状態を表すものであり、この状態は対応するVMファイルに記録されます。スナップショットを使用すると、データやその他の設定とともに、仮想マシンを過去の時点の状態に戻すことができます。VMwareのディスクスナップショットとは、仮想ディスクの変更履歴を対応するスナップショットファイルに記録したものです。
VMスナップショットには以下が含まれます:
- VMディスクの状態、そのマシンのディスクの内容。
- VMのメモリ状態とVMの電源状態、スナップショット作成時点のメモリ使用量であり、これにより仮想マシンの電源状態をキャプチャすることができます。
- VMの設定、デバイスや仮想ネットワークカードなどが含まれます。例えば、セカンダリ仮想NIC(ネットワークインターフェースコントローラ(NIC))がない状態で仮想マシンのスナップショットを作成したとします。その後、セカンダリNICを追加してそのスナップショットにロールバックすると、スナップショットにはデータや状態だけでなく構成情報も含まれているため、NICは削除されてしまいます。
VMのバックアップとスナップショット
バックアップとスナップショットの主な違いは、バックアップがソースVMのファイルから独立したVMのコピーであるのに対し、スナップショットは元のVMに依存している点です。そのため、スナップショットはVMのファイル、状態、設定を含む特定の時点でのVMのバージョンであっても、vSphere VMのバックアップとして使用することはできません。スナップショットをバックアップとして使用すると、障害発生後にデータやVMを復旧できなくなる可能性があります。
- スナップショット それらを作成するために使用されたソース仮想マシンファイルに依存します。 スナップショットは、実際には"ベース"ディスクに対する差分情報の集合であるため、差分ディスクとも呼ばれます。子ディスク(差分ディスク)と、それらが依存するベースディスクとの間にこのような相互関係があるため、スナップショットは"チェーン"と呼ばれることもあります。スナップショットが依存するベースディスクが削除された場合、スナップショットには削除されたデータを再作成するために必要なデータが含まれていません。
- バックアップ これらは独立したデータコピーであり、本番データや仮想マシン内に含まれる仮想ディスクに依存することなく、仮想マシンのファイル、ディスク、および仮想マシン全体の登録情報を再作成することができます。
VMwareスナップショットの活用事例
特に開発環境では、スナップショットが"繰り返し行う"ような迅速な作業によく利用されます。アプリケーションのテスト、アップグレード、アップデート、パッチ適用など、仮想マシン上で特定のソフトウェア処理を実行する前に、スナップショットを作成することがあります。これにより、仮想マシンを以前の状態に素早く戻すことができ、ソフトウェアのアップデートやアップグレードなどを実行する前の状態に戻すことができます。
VMwareは、本番環境でのスナップショットの使用や、スナップショットの長期的な利用を推奨していません。スナップショットは、放置するとパフォーマンスの低下やディスク容量の問題を引き起こす可能性があるため、長期間そのままにしておくことを想定したものではありません。
スナップショットはバックアップそのものではありませんが、一時的なバックアップとして利用することは可能です。例えば、 NAKIVOのソリューション この手法をVMware仮想マシンのバックアップに活用しています。このソリューションは、仮想マシンのスナップショットを取得することで、仮想マシンが稼働中であっても(スナップショット作成時に)一貫性のあるバックアップを作成します。 ホストレベルのVMバックアップ)。VMのバックアップが正常に作成されると、スナップショットは削除されます。
VMwareスナップショットファイルの拡張子
VMwareの実装では、仮想マシンのスナップショットは、スナップショットファイルのインフラストラクチャを構成する以下のファイル群で構成されています:
.vmdk– 生データが含まれるベース仮想マシンディスク。-00000x.vmdk– デルタディスク。これは、仮想ディスクの現在の状態と、前回のスナップショットが作成された時点での状態との差分を含むものです。仮想ディスクの変更内容は、リドゥログとして表現されます。スナップショットに使用される子VMDKディスク内のデータは、Copy-On-Write(書き込み時コピー)メカニズムを用いてSPARSE形式で保存されます。.vmsd– スナップショットのデータベースファイル。スナップショットマネージャーが使用するスナップショット情報が格納されています。このデータベースには、各スナップショットにおけるスナップショットと子ディスク間の関連情報が含まれています。.vmsn– メモリ情報を含む、仮想マシンの現在の状態を保存したファイルです。これにより、 走行中 スナップショットへの復元時の仮想マシンの状態。メモリを含めずに作成されたスナップショットの場合、そのスナップショットへの復元は、 電源が切れている.
デフォルトでは、VMwareのスナップショットファイルはVMディレクトリに保存されます。ただし、 VMX VMの設定ファイル。このオプションは、次のような場合に役立ちます。 VMのディスクパフォーマンス だけでは不十分です。
VMスナップショット技術はどのように機能するのでしょうか?
VMware環境でスナップショットを作成する際にどのようなファイルが生成されるかがわかったところで、vSphereスナップショットの作成の仕組みについて見ていきましょう。
- 次のようなクライアントを使用してスナップショットの作成、削除、または復元をリクエストする場合、 VMware vSphere Client または PowerCLI、リクエストはVMware APIを通じてサーバーに送信されます。
- スナップショットの作成、削除、または復元のリクエストは、対象のVMを実行しているサーバーに送信されます。ただし、これは以下の場合にのみ当てはまります。 vCenter Serverスナップショットの要求がESXiホストに直接送信された場合、この処理はスキップされます。
- もし 仮想マシンのメモリをスナップショットとして取得する このオプションが有効になっている場合、ESXiホストはVMのメモリをディスクに書き出します。この処理中は、VMは停止状態になります。
- ESXiホストは、VMのスナップショットデータベースファイルを変更します(
.vmsd) これにより、VMスナップショットマネージャーの変更が反映されるようになります。 - ESXiホストは、子ディスクファイルに変更を加えるためにVirtual DISK API関数を呼び出します(
-delta.vmdkそして.vmdk)およびディスクチェーン。
スナップショットの作成
スナップショットが作成されると、スナップショット取得時点での仮想ディスクの状態が維持され、VMDKファイルへの書き込みはすべて停止されます。変更内容を記録するために、システムはデータストアに含まれるすべてのVMDKディスクに対して追加のVMDKファイル(デルタディスク)を作成し、そのファイルに変更内容を書き込みます。複数のスナップショットを作成した場合、システムは各スナップショットのVMDKディスクごとにデルタディスクを作成し、スナップショット間の差異を反映します。
スナップショットの連鎖が長くなると、それに対応するデルタディスクファイルによってVMのストレージパフォーマンスが低下します。VMがデータを読み込む必要がある場合、親仮想ディスクのVMDKファイルと関連するデルタVMDKファイル(VMwareスナップショットファイル)を、順番にまとめて読み込む必要があります。これは、スナップショットファイルに記録されたデータ変更(仮想ディスクへの書き込み)の履歴を再構築し、VMに対して要求されたデータを出力するために必要な処理です。スナップショットファイルは時間の経過とともに肥大化します。 VM上でディスク操作(データの書き込みや削除)が頻繁に行われると、スナップショットの増加速度はさらに速くなります。
複数のスナップショットを作成し、任意のスナップショットに復元したり、変更を加えた後に新しいスナップショットを作成したりすることができます。その結果、スナップショットのツリー構造が形成されます。下の画像では、スナップショットを作成した際のツリー構造を確認できます。 スナップショット 3、元の状態に戻った スナップショット 2、そして作成しました スナップショット 3a.
スナップショットの削除
スナップショットを削除すると、システムはスナップショットとそれ以前のディスクの状態との間の変更を統合します。削除されたスナップショットに関する情報を含むデルタディスクのすべてのデータが、元のVMDKディスクに書き込まれます。スナップショットの削除にかかる時間は、前回のスナップショット以降に仮想ディスクに書き込まれたデータ量によって異なります。さまざまな状況におけるスナップショットの削除方法について見ていきましょう。
この例では、図に示されているように、ベースディスク(VMDK)と2つのスナップショットがあります:
- 最初のVMwareスナップショットファイルのサイズは3.3 GBで、2番目のスナップショットのサイズは2.2 GBです。
- スナップショットは対応するデルタVMDKファイルを使用しますが、利便性を高めるため、スナップショットの名前は スナップショット_1 そして スナップショット_2 図において。
- その 現在地 この項目は、VMの現在の状態(スナップショット作成前または作成後)を示しています。
最新のスナップショットを削除する
現在のVMの状態に至るまでのスナップショットチェーンの中で最後のスナップショットである2番目のVMwareスナップショットを削除すると、 スナップショット_2 データは親会社と連結される スナップショット_2 デルタディスク。最初のスナップショットのサイズは、削除された2番目のスナップショットのサイズ分だけ増加します(この例では3.3 GB + 2.2 GB)。
最初のスナップショットを削除する
スナップショットチェーンの最初のスナップショットを削除し、現在のVMの状態が最後のスナップショット後の状態である場合、どうなるでしょうか? スナップショット_1 データがベースディスクに書き込まれ、 スナップショット_2 は保持されます。ベースディスクのサイズは、削除する最初のVMwareスナップショットファイルのサイズ分だけ増加します(この例では20 GB + 3.3 GB)。VMwareスナップショットファイルには(関連する スナップショット_2).
すべてのスナップショットを削除する
すべてのスナップショットを削除すると、VMwareのスナップショットファイルが統合され、データがベースディスクにコミットされます(新しいアルゴリズムが使用されます)。 スナップショット_1 データはまずベースディスクに書き込まれます。その後、 スナップショット_2 データがベースディスクにコミットされます。スナップショットが複数ある場合、以降のすべてのスナップショットに対しても同様の処理が行われます。VMwareスナップショットファイルに記録されたデータ変更が書き込まれると、ベースディスクの容量が増加します。
vSphere 5.0 およびそれ以前のアルゴリズムを使用する場合、VMware スナップショットファイルは、まず親スナップショットディスクにデータを書き込むことで統合されます(スナップショット_2 ~へ スナップショット_1 (この例では)、その後、すべてのスナップショットデータがベースディスクにコミットされます。
現在の状態の後にスナップショットを削除する
前の3つの例では、VMの状態(マークされた 現在地 (図中)は、チェーン内のすべてのスナップショット後の状態を表しています。この例では、VMの状態は最初のスナップショットの後、2番目のスナップショット(この場合は最後のスナップショット)の前となります。
最後のスナップショットを削除すると、チェーン内のそれ以前のスナップショットに影響を与えることなく、そのスナップショットが削除されます。変更は スナップショット_1 この例では、ベースディスクも同様です。もし2番目のスナップショット以降にさらにスナップショット(3番目、4番目、5番目など)が存在する場合、それらのデータ(後続のスナップショットファイルのデータ)も、2番目のVMwareスナップショットファイルのデータとともに削除されます。
VMwareのスナップショットの削除方法
vSphere 6.0 以降、スナップショットを削除する際のスナップショット統合には、スナップショットミラードライバが使用されます。このドライバは、VMware Storage でも使用されます。 vMotion. 一時的なヘルパースナップショットディスクの使用は最小限に抑えられ、ヘルパーディスクがなくてもスナップショットの統合を1回の処理で実行できます。VMの変更はアクティブなVMDKディスクに書き込まれ、VMwareのスナップショット統合プロセス中は書き込み順序が保護されます。
統合プロセス中、アクティブディスクとベースディスクの両方に書き込みが行われ、確認応答が送信されます。
VMware vSphere Client でスナップショットを作成する方法
以下の手順は、vSphere 6.5 の新しい HTML5 vSphere クライアントを使用しています。このワークフローは vSphere 6.7 でも同様です。 vSphere 7.0、7.0U1 および 7.0U2。
- スナップショットを作成したい仮想マシンを右クリックし、[
Snapshots > Take Snapshot.
- その
Take Snapshotダイアログボックスで、スナップショットに名前を付けたり、詳細を追加したい場合は説明を入力したりできます。
- [チェックボックス]
Include the virtual machine’s memoryこれにより、仮想マシンのメモリを含むスナップショットと含まないスナップショットを選択できるようになります。その違いを見てみましょう:- 選択すると
Include the virtual machine’s memory、スナップショットにはVMの内部状態のダンプが含まれます。VMのメモリを含むスナップショットを作成するには、VMが電源投入状態である必要があります。そうでない場合、このオプションは選択できません。電源投入状態のVMのスナップショットを作成することで、VMの稼働中の状態を保存し、いつでもその状態に戻すことができます。 - このオプションが選択されていない場合、スナップショットにはVMの稼働状態は反映されません。スナップショットの状態に戻す必要がある場合、VMは同じデータを含む状態で復元されますが、電源はオフの状態になります。その後、VMの電源は手動でオンにする必要があります。
- 選択すると
- 以下の項目を選択できます
Quiesce guest file system仮想マシン上で書き込み操作が実行されている場合に、データの整合性を維持するためのアプリケーション対応スナップショットを作成するオプション。VMware Toolsこの目的のためには、Sync Driver を含む以下のソフトウェアをインストールする必要があります。 クワイエシング・オプション このスナップショットを使用してVMデータをバックアップするのに適しています。VMware Tools~とともにVMware Snapshot ProviderゲストOS(Windowsゲスト)でVSSスナップショットの作成を開始します。Volume Shadow Copy ServiceゲストOS上のVSSライターはリクエストを受け取り、アプリケーション対応スナップショットを作成するための準備を行います。すべての書き込みトランザクションは、VMメモリからVMディスクに書き込まれます。この処理が完了すると、VSSライターはVMware Toolsに対し、VMがスナップショット作成の準備が整ったことを通知します。
注: [選択] をクリックすると、 仮想マシンのメモリを含める オプション、その Quiesce guest file system 無効になります。VMの電源が入っている場合は、これらのオプションのいずれかを選択できます。
- クリック
Createスナップショットを作成すると、vCenter上で関連するタスクが開始されるのが確認できますRecent Tasksパネル。
vSphereスナップショットの管理方法
- スナップショットを作成した後、右クリックして以下を選択することで、そのスナップショットを管理できます
Snapshots > Manage Snapshots.
- その
Manage Snapshotsダイアログボックスには、仮想マシン上に存在するスナップショットと、以下のオプションが表示されます:
Revert– 既存のスナップショットに戻す。このオプションを使用すると、スナップショットに保存された仮想マシンの状態を復元できます。Edit– スナップショットの名前と説明を編集する。Delete– 選択したスナップショットを削除します。スナップショットをスナップショットマネージャーから削除します。スナップショットが現在の状態よりも前の時点のものである場合、そのスナップショットデータは、親スナップショットディスクまたはVMのベース仮想ディスクに統合されます。Delete All– 現在の仮想マシンのすべてのスナップショットを削除します。
スナップショットの名前、作成日時、ディスク使用量など、その他の関連情報も表示されます。
スナップショットアラームのルール
スナップショットのサイズが大幅に増加すると、VMのディスクパフォーマンスが低下します。そのため、VMware VMのスナップショットサイズを常に監視し、スナップショットがパフォーマンスに悪影響を及ぼす前に、適切な対策を講じたり、スナップショットを削除・統合したりする必要があります。VMware vSphereのスナップショットアラームルールを設定することで、スナップショットのサイズが通知設定で指定された閾値を超えた際に通知を受け取ることができます。ここでは、vSphere ClientでvSphereスナップショット通知を設定する方法について詳しく見ていきましょう。
スナップショットのサイズが30 GBを超えた際に通知が送信されるように設定します。
- 移動
Hosts and Clustersそして、VMを選択します。VMを右クリックし、表示されるメニューから、[Alarms > New Alarm Definition.
- その
New Alarm Definitionウィザードが開きます。Name and Targets. アラーム名を入力してください。例:vSphere snapshot usage説明を入力してください(任意)。選択してくださいVirtual Machineターゲットの種類。クリックNextウィザードの各ステップで、続行してください。
-
Alarm Rule 1. ルールを次のように設定します:- もし
VMware Snapshot Size|is above|30 GB
- それから
- アラームを鳴らし、 S
how as Warning - メール通知を送信する:
ON - 件名: デフォルトの件名を使用できます
- 宛先:: メールアドレスを入力してください
- アラームを鳴らし、 S
- もし
-
Reset Rule 1. リセット ルールは、アラーム ルールの設定と同様の手順で設定できます。リセット ルールは、vSphere スナップショットについて警告または重大な状態が解消された際に、通知メッセージを送信する役割を担います。
-
Review. ルールの設定を確認してください。すべて問題なければ、Create.
PowerCLI での vSphere スナップショットの操作方法については、次のセクションをご覧ください。
PowerCLI を使用したスナップショットの作成方法
vSphere を操作する効果的な方法の一つは、 PowerCLI を使用してPowerCLI を使用すると、スナップショットの作成、削除、および復元を行うことができます。ここでは、そのための基本的な構文を見ていきましょう。
PowerCLI を使用したスナップショットの作成
PowerCLI を使用してスナップショットを作成するには、次の構文を使用します。
get-vm testvm | new-snapshot -Memory -quiesce -name "Test snap"
スナップショットの削除
スナップショットを削除するには、スナップショット名を次のような変数に格納します。 $snap そして、これを使用して該当するスナップショットを削除します:
Remove-Snapshot -Snapshot $snap -RemoveChildren
スナップショットに戻す
作成済みのスナップショットにロールバックするには、次の構文を使用します:
get-vm “testvm" | set-vm -snapshot "Test snap" -confirm:$false
VMware スナップショットの制限事項
vSphereのスナップショットには、知っておくべきいくつかの制限があります。
- 時間の経過とともにスナップショットの数が増えると、問題が生じる可能性があります。スナップショットの管理が困難になったり、ディスク容量を過剰に消費したりする恐れがあります。また、ハードウェア障害に対しては保護されません。
- VMのスナップショットを長期間保持しすぎたり、スナップショットの階層構造が膨大になったり、前回のスナップショット以降にVMやそのゲストOSに多くの変更が加えられたりすると、VMやホストのパフォーマンスに悪影響を及ぼす可能性があります。
- RawディスクおよびRDMの物理モードディスクは、VMwareのスナップショットに対応していません。ただし、仮想互換モードのRDM(Raw Device Mapping)はスナップショットに対応しています。
- 独立ディスクはVMwareのスナップショットに対応していません。スナップショットを作成するには、独立ディスクを使用しているVMの電源をまずオフにする必要があります。VMの電源が入っている場合やサスペンド状態の場合は、スナップショットを作成できません。
- VMwareは、PCI vSphere Direct Path I/Oデバイスに対してスナップショット機能を提供していません。
- また、ゲストOS内でiSCSIイニシエーターを使用しているゲストOSでは、VMwareのスナップショット機能を利用できません。
- バス共有が設定された仮想マシンでは、VMwareスナップショットはサポートされていません。
- VMDKが2TB以上のVMの場合、スナップショットに関連する処理には時間がかかります。
- スナップショットは、VMとともにファイルが失われた場合、スナップショットファイル自体も復元できないため、長期的なデータ保護(バックアップ)や復旧手段としては適していません。
VMware スナップショットのベストプラクティス
スナップショットを扱う際は、以下のVMwareスナップショットのベストプラクティスに従うようにしてください。
- スナップショットをバックアップとして使用しないでください。スナップショットファイルは親仮想ディスクの変更ログに過ぎないため、データ保護や復旧の手法としては不十分です。
- スナップショットチェーンは32個を超えてはなりません。パフォーマンスを向上させるため、スナップショットは2~3個に制限してください。
- VMwareのスナップショットファイルは時間の経過とともに容量が増大し、データストア内の容量を過剰に消費したり、ストレージのオーバーヘッドを引き起こしたりする可能性があります。一般的な推奨事項として、72時間以上経過したスナップショットは保存しないようにしてください。たとえば、PowerCLIでは3日以上経過したスナップショットを表示することができます。
注: 72時間以上経過したスナップショットを表示するコマンド:
Get-VM | Get-Snapshot | Where {$_.Created -lt (Get-Date).AddDays(-3)} | Select-Object VM, Name, Created, SizeMB
- 削除操作は一括で行わないでください。一括削除を行うと、デルタファイルに保存されているすべての変更が、親のVMwareスナップショットファイルまたはベースディスクのVMDKファイルにコミットされてしまう可能性があるためです。
- データの変更が頻繁に行われるI/O負荷の高いデータベースサーバーVMでは、スナップショットを使用する際に特に注意が必要です。スナップショットによってデータストアの容量がすべて埋まってしまう可能性があるためです。
- スナップショットを利用するサードパーティ製ソリューションを使用する際は、スナップショットを定期的に削除するようにしてください。
- スナップショットが保存されたままVMディスクの容量を増やす場合は、十分にご注意ください。スナップショットが破損し、予期せぬデータ損失につながる可能性があります。
- vCenterのアラームとPowerCLIスクリプトを活用して、VMのスナップショットやデータストアの容量使用状況を常に把握しましょう。これにより、VMスナップショットの経過期間も追跡できます。
- お使いの vSphere のバージョンが v5.0 より古い場合は、Storage vMotion を実行する前にすべてのスナップショットを削除してください。Storage vMotion は、vSphere 5.0 以降でスナップショットが作成された仮想マシンでのみサポートされています。それ以前のバージョンでは、データの損失や仮想マシンの利用不能につながる可能性があります。
- VMware vSphere の監視 問題を未然に防ぎ、積極的に解決するための環境。
まとめ
スナップショットは、VMware仮想マシンを既知の状態に復元するための強力な機能です。これには、ディスク上のファイルやメモリ内のデータに加え、スナップショット作成時点での仮想マシンの構成も含まれます。特に開発環境において、コードの統合や更新、あるいは複数回の実行が必要なその他の変更をテストする際、スナップショットを活用することは非常に有益です。 スナップショットにロールバックすることで、正常な既知の状態へ迅速かつ効率的に戻ることができます。
ただし、スナップショットはバックアップではありません。開発環境でのみ使用し、本番環境では使用しないでください。また、パフォーマンスの低下やディスク容量の過剰な消費につながる可能性があるため、仮想マシン上に長期間残しておくべきではありません。使用 NAKIVO Backup & Replication VMware vSphereのデータ、アプリケーション、および仮想マシンを保護します。無料版をダウンロードして、ご自身の環境で本製品をお試しください。
















