時々、ゲスト仮想マシン(VM)の1つにOSのアップデートやセキュリティパッチをインストールする必要があります。しかし、アップデートプロセスは時々失敗し、システム障害、構成データの損失、または特定のプログラムのアンインストールにつながることがあります。Microsoft Hyper-Vは、Hyper-Vスナップショットを作成する機会を提供しており、これにより、特定の時点でVMの状態を保存し、システムエラーが発生した場合にシステムを以前の状態に戻すことができます。
このブログ記事では、Hyper-V ManagerまたはPowerShellを使用してHyper-Vスナップショットをマージする方法と、それらを使用する方法について説明します。ただし、Hyper-Vスナップショットの管理方法を学ぶには、まずそれらの背後にある技術を理解する必要があります。
Hyper-Vスナップショットとは何ですか?
A Hyper-V snapshot is a point-in-time copy of a VM, which contains all the information required to restore your data. With the use of Hyper-V snapshots, you can revert the VM to a point when the VM state was captured and the snapshot was taken. Hyper-V snapshot technology is enabled by default when the Hyper-V role is installed on your computer and your first VM is created. Hyper-V snapshots of a selected VM can be taken in any state (Off, Running, Paused, and Saved) and the operation is typically complete in a few seconds.
Hyper-Vスナップショットは現在、Hyper-Vチェックポイントとして知られていますが、これらの用語の両方が同じくらい有効です。
Hyper-Vスナップショットの種類
Microsoft Hyper-Vは、2種類のスナップショットを提供しています:
- プロダクションスナップショットは、ゲストOS内部でバックアップ技術を適用してVMのデータ整合性のスナップショットを作成します。このために、Windows Volume Shadow Copy Service(VSS)またはLinux File System Freezeが使用されます。Hyper-Vプロダクションスナップショットは、アプリケーションとゲストOSのデータ整合性を向上させるため、プロダクション環境の状態をキャプチャするために使用できます。なお、Hyper-Vプロダクションスナップショットは、VMのメモリ状態、そのCPUアクティビティに関する情報、またはハードウェア構成をキャプチャしません。
新しいOSバージョン(Windows Server 2016およびWindows 10)では、製造チェックポイントがチェックポイントタイプのデフォルトオプションです。ただし、Hyper-V ManagerまたはWindows PowerShellで変更できます。
- 標準スナップショット は、特定の時点でのVMの状態、そのCPUアクティビティとメモリ、およびハードウェア構成をキャプチャします。したがって、標準Hyper-Vスナップショットを使用すると、現在のアプリケーションの状態をキャプチャし、VMを特定の時点の状態または条件にロールバックできます。これらは主に開発およびテストシナリオで適用されます。Hyper-V標準スナップショットを作成することは、VSSを認識していないアプリケーションでいくつかのデータ不整合の問題を引き起こす可能性があるため、信頼性の高いバックアップ戦略とは見なされません。
Hyper-Vスナップショットの動作
Hyper-V VMは仮想ディスクに格納されていることをご存知の通りで、それらは.vhd(x)ファイル形式です。同時に、それらのHyper-V VMで作成されたスナップショットファイルは.avhd(x)ファイル形式で格納され、ハードディスクイメージファイルと同じフォルダに保存されます。Hyper-Vスナップショットは基本的に差分仮想ディスクであり、それぞれが対応する親仮想ハードディスクと親子関係を持っています。各VMに最大50のスナップショットを作成できます。すべてのHyper-Vスナップショットは階層的に整理されており、したがってチェックポイントのサブツリーを構成しています。
.avhd(x)ファイルは、ディスク領域を大量に消費しやすく、その結果、VMのパフォーマンスに影響を与える傾向があります。不要な.avhd(x)ファイルを削除したい場合は、Hyper-Vスナップショットを削除する必要があります。このオプションは、実際にスナップショットを削除しているわけではありません。代わりに、Hyper-Vスナップショットとそれらが含むデータを親ディスクまたは別の仮想ディスクに統合するだけです。コンピュータから直接Hyper-Vスナップショットを削除することは推奨されません。Hyper-Vスナップショットを統合した後、すべての.avhd(x)ファイルがディスクから削除されます。これにより、Hyper-Vホスト上で追加のスペースを作成できます。
Hyper-Vスナップショットのマージ方法
以前のブログ投稿の1つで、Hyper-Vスナップショットの管理(作成、適用、名前の変更、有効/無効化など)方法について説明しました。ただし、今回のブログ投稿は、Hyper-Vスナップショットを手動でマージする方法のガイドとして機能します。
Hyper-Vスナップショットをマージするには、Hyper-VマネージャーまたはPowerShellを使用する必要があります。これらのアプローチの両方を以下で説明します。
Hyper-Vマネージャーを使用する
Hyper-Vスナップショットをマージする方法を説明する前に、まずマージされるスナップショットを決定する必要があります。Hyper-Vスナップショットは特定の順序でマージする必要があります:子から親へ。そのため、チェックポイントツリーの構造を確立し、作成順序を確立することが重要です:最新のものから最も古いものへ。
上記のように、各スナップショットは、それより前に作成された別のスナップショットと親子関係にあります。すべてを組み合わせると、チェーンの形で表すことができます。例えば、1つの仮想ハードディスクに3つのスナップショットが作成されました。VMが実行されているメインの仮想ディスクは、最初のチェックポイントの親として機能し、このチェックポイントは2番目のチェックポイントの親として機能し、2番目のチェックポイントは3番目のチェックポイントの親として機能します。
チェックポイント構造を確立するには、次の手順を実行してください:
- Hyper-V マネージャーを開きます。
- 中央ペインで、マージしたいスナップショットのVMを選択します。
- 右側のアクションセクションで、ディスクの調査をクリックします。
- .avhd(x) ファイルを選択し、OKをクリックします。
- 次に、選択した.avhd(x)ファイルの名前、場所、および親の名前を含む仮想ハードディスクの一般的な概要が表示されます。選択した.avhd(x)ファイルの親を特定します。
- マージの順序を識別するために、各.avhd(x)ファイルについて手順3〜5を繰り返してください。
Hyper-V スナップショットをマージするには、次の手順を実行します。
- Hyper-V マネージャーを開きます。
- 必要な VM を選択します。
- ディスクの編集をクリックします。仮想ハード ディスク ウィザードが開きます。次へ
- 参照をクリックして、最新の .avhdx ファイルを選択します。次へをクリックします。次へ
- マージを選択して、差分ディスクに格納されている変更を親ディスクまたは別のディスクにマージします。次へをクリックします。次へ
- 親仮想ハード ディスクにを選択して、完了をクリックします。
- Hyper-V スナップショットのマージ手順を完了するには、すべての .avhd(x) ファイルについて手順 1 ~ 5 を繰り返し、すべての変更を元の親ディスクにマージします。
- 最後のステップは、実装された変更を適用するために VM を再起動することです。
PowerShell を使用します
次の手順を実行する前に、コンピューターが Merge-VHD コマンドレットを有効にしていることを確認してください。そうでない場合、次のエラーが画面に表示されます:コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムとして 'Merge-VHD' が認識されません。
名前のつづりを確認するか、パスが含まれている場合はパスが正しいことを確認してもう一度実行してください。
この問題を解消するには、管理者として PowerShell を開き、次のコマンドを実行します:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Management-PowerShell
すべてが正しく設定されている場合、次の内容が表示されます:
これで、Merge-VHD コマンドレットを実行する準備が整いました。この操作はオフラインで実行されます。
Hyper-V スナップショットをマージするには、次のコマンドを実行します:
Merge-VHD Path = '' DestinationPath = ''
この場合、新しい子ディスクから古い親ディスクにデータがマージされます。画面には、次の内容が表示されます:
操作が完了したら、ゲスト VM をシャットダウンし、システムを再起動してください。Hyper-V マネージャーでは、ディスク チェーンの各レイヤーを個別にマージする必要がありますが、PowerShell を使用すると、単一のコマンドでこのような複雑な操作を実行できます。
Hyper-V スナップショットの使用理由
Hyper-Vスナップショットを使用すると、構成変更を適用する前、新しいソフトウェアをインストールする前、OSの更新を実行する前、セキュリティパッチをアップグレードする前など、VMの状態を保存できます。仮想インフラストラクチャを変更する可能性がある操作を実行する前、またはその操作が失敗する可能性が高い場合は、事前にVMのHyper-Vスナップショットを作成してください。何か問題が発生し、システムを以前の状態に戻す必要がある場合には、これが安全なネットとなります。
ただし、Hyper-Vスナップショットは、開発およびテスト環境で使用した場合に最適な結果をもたらします。それらは効果的で信頼性の高いバックアップの代替手段ではなく、本番環境での使用はお勧めしません。代わりに、複数のデータ保護オプションを含む、完全機能のHyper-Vバックアップソリューションの使用を検討してください。従来のインフラストラクチャメンテナンスと比較して、多くの時間、お金、労力を節約できます。
Source:
https://www.nakivo.com/blog/merge-hyper-v-snapshots-step-step-guide/