Hyper-Vの仮想マシンでは、仮想マシンの特定時点の状態を保存できるチェックポイント(スナップショット)と呼ばれる機能が搭載されています。
この機能を使えば、仮想マシンに対して何らかの変更を加えるときなど(ゲストOSに更新プログラムを適用するなど)に、あらかじめチェックポイントを作成しておくことで、万が一何らかの問題が発生した際に、簡単にチェックポイントを取得した時点に仮想マシンの状態を戻すことができます。
そこでここでは、Windows 10のHyper-Vを例に、チェックポイント機能の使い方を解説します。
目次
チェックポイントとは
チェックポイントは、仮想マシンの特定時点の状態を保存するための機能で、仮想マシンに対して何らかの変更を加えるとき(ゲストOSに更新プログラムを適用するなど)に、チェックポイントを作成しておくことで、万が一何らかの問題が発生した際に、簡単にチェックポイントを取得した時点に仮想マシンの状態を戻すことができます。
なお、チェックポイントを取得すると、元の仮想ハードディスクは読み取り専用になり、チェックポイント作成以降の変更は差分ディスクに保存されます。
そのため、チェックポイントを取得したまま仮想マシンを稼働し続けていると、差分ディスクの容量どんどん大きくなり、仮想マシンのパフォーマンスやホスト全体のパフォーマンス低下を招くことがあるため、チェックポイントはあくまでも一時的に利用し、利用し終わったら速やかに削除します。
自動チェックポイント
「自動チェックポイント」は、仮想マシンの起動時に自動的にチェックポイントを作ってくれる機能で、Windows 10のHyper-Vではデフォルトで「オン」に設定されています。
これにより、チェックポイントを作成し忘れていて、ゲストOSへ加えた変更を戻せなくなったという状況を防ぐことができます。
ですが、自動チェックポイントがオンだと仮想マシンの起動に時間がかかるため、チェックポイントが不要だったり、必要に応じて手動で作成したい場合は、オフに切り替えておきましょう。
標準チェックポイントと運用チェックポイントの違い
チェックポイントには「標準チェックポイント」と「運用チェックポイント」の2種類があり、どちらのチェックポイントを作成するかは、仮想マシンの設定で選択できます。
標準チェックポイントは、ゲストOSやアプリケーションの実行状態も保存し、運用チェックポイントはゲストOSの状態だけを保存します。
たとえば、ゲストOSが起動しており、何らかのアプリケーション画面を開いている状態で標準チェックポイントを作成し、作成したチェックポイントを適用すると、ゲストOSが起動しており、アプリケーション画面も開いた状態に戻ります。
対して、同じ状態で運用チェックポイントを作成し、作成したチェックポイントを適用すると、ゲストOSはシャットダウンされた状態で戻ります。
チェックポイントの使い方
チェックポイントは、Hyper-Vマネージャーで操作する方法と、PowerShellコマンドレットで操作する方法があります。
Hyper-Vマネージャーで操作する
チェックポイントの設定
チェックポイントの設定は、仮想マシンの設定画面から行います。
まず、対象の仮想マシンを選択して、画面右側の操作メニューから「設定」を選択します。
仮想マシンの設定画面が表示されるので、画面左側のメニューから「チェックポイント」を選択し、チェックポイントの種類や自動チェックポイントを利用するかを選択します。
チェックポイントを作成する
チェックポイントを作成するときは、対象の仮想マシンを選択した状態で、画面右側の操作メニューから「チェックポイント」をクリックします。
稼働中の仮想マシンのチェックポイントを作成するときは、少し時間がかかりますが、無事にチェックポイントが作成されると、画面中央下部に取得したチェックポイントが表示されます。
作成したチェックポイントの名前は、デフォルトでは仮想マシン名とタイムスタンプで構成され、チェックポイントの名前は変更することができます。
また、チェックポイントは複数作成することができ、Aとういう状態でチェックポイントを作成し、さらにBという状態でチェックポイントを作成するといったことができます。
チェックポイントの時点に戻す
特定のチェックポイントの取得時点に仮想マシンの状態を戻したいときは、戻したい時点のチェックポイントを選択した状態で、画面右側のメニューから「適用」をクリックします。
「チェックポイントの適用」画面が表示されるので、現在の状態を保存してからチェックポイントを適用するときは「チェックポイント作成して適用」をクリックし、現在の状態を保存する必要がないときは「適用」をクリックします。
チェックポイントを削除する
特定のチェックポイントだけを削除するときは、対象となるチェックポイントを選択した状態で、画面右側のメニューから「チェックポイントの削除」をクリックします。
特定のチェックポイントとそれに続く後続のチェックポイントをまとめて削除するときは、対象となるチェックポイントを選択した状態で、画面右側のメニューから「チェックポイントサブツリーの削除」をクリックします。
なお、チェックポイントの削除は、その時点までの変更が親ディスクに統合(マージ)されることを意味しており、チェックポイント取得時点からの変更量が多いほど削除処理に時間がかかります。
PowerShellで操作する
PowerShellで操作するときは、管理者権限でPowerShellを起動してコマンドを実行します。
チェックポイントの設定
標準チェックポイントに設定するには、次のようにコマンドを実行します。
PS C:\> Set-VM -Name <仮想マシン名> -CheckpointType Standard
運用チェックポイントに設定するには、次のようにコマンドを実行します。
PS C:\> Set-VM -Name <仮想マシン名> -CheckpointType Production
チェックポイントを無効にするには、次のようにコマンドを実行します。
PS C:\> Set-VM -Name <仮想マシン名> -CheckpointType Disabled
自動チェックポイントを有効($true)/無効($false)にするには、次のようにコマンドを実行します。
PS C:\> Set-VM -Name <仮想マシン名> -AutomaticCheckpointsEnabled $true
チェックポイントを作成する
チェックポイントを作成するときは、次のようにコマンドを実行します。
PS C:\> Checkpoint-VM -Name <仮想マシン名>
チェックポイント作成時に、チェックポイントの名前も指定したいときは、次のようにコマンドを実行します。
PS C:\> Checkpoint-VM -Name <仮想マシン名> -SnapshotName <チェックポイントの名前>
なお、作成したチェックポイントの名前を後から変更するときは「Rename-VMSnapshot」コマンドレットを使って変更できます。
チェックポイントの時点に戻す
特定のチェックポイントの時点に仮想マシンの状態を戻すときは、まず取得済みのチェックポイントの一覧を表示し、適用するチェックポイントの名前を確認します。
PS C:\> Get-VMSnapshot -VMName <仮想マシン名>
つぎに、以下のコマンドを実行してチェックポイントを適用します。
PS C:\> Restore-VMSnapshot -Name "<チェックポイントの名前>" -VMName <仮想マシン名>
なお、上のコマンドを実行すると、本当に実行してよいかの確認が求められますが、確認を省略したいときは「-Confirm:$false」オプションを付加して実行します。
PS C:\> Restore-VMSnapshot -Name "<チェックポイントの名前>" -VMName <仮想マシン名> -Confirm:$false
チェックポイントを削除する
特定のチェックポイントだけを削除するときは、以下のようにコマンドを実行します。
PS C:\> Remove-VMSnapshot -VMName <仮想マシン名> -Name "<チェックポイントの名前>"
特定のチェックポイントとそれに続く後続のチェックポイントをまとめて削除するときは、以下のようにコマンドを実行します。
PS C:\> Remove-VMSnapshot -VMName <仮想マシン名> -Name "<チェックポイントの名前>" -IncludeAllChildSnapshots
すべてのチェックポイントを削除するときは、以下のようにコマンドを実行します。
PS C:\> Remove-VMSnapshot -VMName <仮想マシン名>