Hyper-V VMのインポートとエクスポート:確実な方法

あなたはHyper-V VMをエクスポートし、それを1つのホストから別のホストに転送する必要がありますか?開発ワークステーションからHyper-VホストへVMをエクスポートする方法についてはどうですか?その場合、正しい場所に来ました!

この記事では、Hyper-V ManagerとPowerShellを使用して仮想マシンをエクスポートおよびインポートする方法を学びます。準備はいいですか?さあ始めましょう!

前提条件

この記事はチュートリアルになります。ステップバイステップで追いたい場合は、次のものが必要です:

  • PowerShell 7またはWindows PowerShell 5.1 – このチュートリアルではPowerShell 7に焦点を当てますが、コマンドはWindows PowerShell 5.1でも機能します。
  • A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
  • A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
  • A local Windows user account in the local administrators group on the Hyper-V host.

Hyper-V VMをエクスポートする手順

コマンドラインが苦手な場合や、単一のVMをディスクに保存するだけの場合は、Hyper-Vマネージャーが堅実な選択肢です。前提として、Hyper-Vホスト上で仮想マシンが実行されていると仮定します:

1. Windows検索メニューで「hyper」と入力します。Hyper-V Managerコンソールが表示されるはずです。そうであれば、それをクリックして開きます。

2. エクスポートするVMを見つけ、右クリックしてエクスポートをクリックします。

Exporting VM using Hyper-V Manager The VM can be offline or running prior to exporting.

3. 次に、VMと構成を保存するフォルダを選択し、エクスポートをクリックします。

Export Virtual Machine Dialog.

保存する場所は、エクスポートされたVMのために十分なストレージ容量を持っている必要があります。これは異なります。ディスクに60GBを割り当てても、VMディスクが60GBに成長したわけではないことを覚えておいてください。

Hyper-Vがエクスポートプロセスを開始すると、Hyper-Vマネージャーウィンドウでエクスポートのステータスが表示されます。

Export Status in Hyper-V Manager

4. これで、すべての必要なファイルが存在することを確認します。3つのサブフォルダーが表示されるはずです。これらのサブフォルダーには、エクスポートされたVMを起動するために必要なすべてのファイルが含まれています。スナップショット、仮想ハードディスク、および仮想マシンです。

Exported VM example
  • スナップショットフォルダーには、VMのスナップショット情報が含まれています。VMのスナップショットがない場合、このフォルダーは空になる場合があります。このフォルダーには、VMCX、VMRS、およびVMGSファイルの拡張子が表示されます。 VMCXバイナリファイルには、エクスポートされたVM固有の構成情報が含まれています。 VMRSバイナリファイルには、VMのランタイム状態情報が含まれています。このファイルがないと、VMは起動できません。最後に、VMGSファイルがあります。このファイルの用途についてはわかりません。わかる方はコメントを残してください。

Hyper-Vの以前の経験がある場合、ファイル拡張子について何か異なる点に気付いたかもしれません。Windows Server 2016以降、Hyper-Vは構成情報にXMLファイルを使用せず、代わりにバイナリファイルに移行しました。 これらの新しい拡張機能について詳しく読む。

もしVMが複数のチェックポイントを持っている場合、VMに対してそれぞれのチェックポイントごとに複数のVMCX、VMRS、VMGSファイルが表示されます。

Snapshots folder example
  • Virtual Hard Disks フォルダには、仮想マシンのすべてのハードディスクイメージファイルまたは *.vhdx が含まれています。 AVHDX または Automatic virtual hard disk ファイルは、仮想マシンのチェックポイントに使用される差分ディスクです。仮想マシンに複数のチェックポイントがある場合、複数のAVHDXファイルが表示されます。
Virtual Hard Disks example
  • Virtual Machines フォルダには、VMを起動するために使用されるVM構成ファイルが含まれています。スナップショットフォルダと同様に、ここにもVMCX、VMRS、VMGSバイナリファイルが表示されます。
Virtual Machines configuration files example

これらのすべてのフォルダが存在し、ファイルが含まれている場合、エクスポートは成功しています。

PowerShellを使用してVMをエクスポートする

コマンドラインが好きな方や、多くのVMをエクスポートする必要がある場合は、PowerShellを使用してVMをエクスポートするのが良い選択肢です。 Hyper-VをPowerShellでエクスポートするには、Export-VM コマンドレットを使用します。これを行うには、Hyper-VホストにいてVMがオフラインであると仮定します。

1. PowerShellコンソールを開きます。

2. Hyper-Vホストにクエリを発行して、VMとエクスポートするVMの名前のインベントリを取得します。このチュートリアルでは、VMの名前がAlpine Linux 01のVMをエクスポートします。

Get-VM
Virtual machine name to be used in Export-VM command

3. VMをエクスポートするフォルダを作成します。このチュートリアルでは、VMをC:\Export_VMにエクスポートします。

New-Item -ItemType Directory -Name 'Exported_VM\' -Path 'C:\'

4. 今、Export-VMコマンドレットを使用して、仮想マシンの名前をNameパラメーターに、保存先のフォルダーのPath、およびPassThruパラメーターを指定して、VMをエクスポートします。

PassThruパラメーターは、エクスポートされるVMオブジェクトを返すオプションです。それ以外の場合、Export-VMは出力を返しません。

Export-VM -Name 'Alpine Linux 01' -Path 'C:\Exported_VM\' -Passthru
Successful export of an offline virtual machine.

VMが実行中の場合、Export-VMはメモリを自動的に保存しません。VMで実行中のメモリの内容を保存したい場合は、Export-VM-CaptureLiveState CaptureSavedStateパラメーターを使用します。メモリをキャプチャするために使用される技術について詳しくはこちら

5. Hyper-VからVMを削除します。心配しないでください!保存されています!

Remove-VM -Name 'Alpine Linux 01'

VMをインポートするためにHyper-Vマネージャーを使用する

VMをエクスポートしたら、災害が発生し、VMが消えてしまいました。心配しないでください!既にディスクにエクスポートされています。それを取り戻しましょう。再度Hyper-Vホストにいると仮定して、次の手順を実行します:

1. Hyper-Vマネージャーを開きます。

2. Hyper-Vマネージャーウィンドウの右側にある仮想マシンのインポートメニューアイテムをクリックします。すると、仮想マシンのインポートウィザードが表示されます。 次へをクリックします。

Import Virtual Machine Wizard

3. 次に、インポートしたいエクスポートされた仮想マシンのパスを入力し、次へをクリックします。このチュートリアルでは、VMはC:\Export_VM\Alpine Linux 01に保存されています。

PowerShellでインポートする場合とは異なり、ウィザードがVMのVMCXファイルを自動的に検出します。

Import Virtual Machine Wizard

4. フォルダー内のVM構成ファイル(この例では、C:\Exported_VM\Alpine Linux 01\Virtual Machines\)をHyper-Vが検出したら、仮想マシンを選択して次へをクリックします。

Import Virtual Machine Wizard

5. 次に、実行するインポートの種類を選択します。まず、詳細なオプションを探ってみましょう。

オプション「仮想マシンを現地に登録する(既存の固有IDを使用)」を選択すると、エクスポートされたVMファイルが最終的な場所にあると仮定し、VMを新しいフォルダーに移動していないということになります。エクスポートされたVMファイルが仮想マシンの実行状態になります。UIDは変更されません。

UIDは、Hyper-Vが仮想マシンを識別するために使用するものです。Hyper-Vが現在登録されている同じUIDを検出すると、エラーが発生します。

仮想マシンを復元する場合、場所を選択するか、エクスポートされた仮想マシンファイルのデフォルトのHyper-V場所を使用できます。

仮想マシンをコピーすると、エクスポートされたVMを復元するのと似ていますが、新しい固有ID(UID)が付与されます。新しいUIDを使用すると、同じ仮想マシンを複数回、同じハイパーバイザーまたは異なるハイパーバイザーに展開できます。

インポート タイプ 仮想マシンのコピー。VMをコピーすると、新しい固有のID(UID)が生成されます。各Hyper-V VMはUIDで識別されます。今はこのオプションで問題ありませんので、をクリックしてください。

Import Virtual Machine Wizard

6. コピーオプションを選択したので、仮想マシンファイルの保存場所を変更できます。このチュートリアルではデフォルトを受け入れるため、をクリックしてください。

Import Virtual Machine Wizard

7. 最後に、ストレージ フォルダとして知られるVMの場所を選択します。ストレージ フォルダはVHDXおよびAVHDXファイルが存在する場所です。このチュートリアルではデフォルトの場所を受け入れて、をクリックしてください。

Import Virtual Machine Wizard

8. サマリー ページを確認し、準備ができたら、完了をクリックしてインポートを開始してください。

Completing Import Virtual Machine Wizard

Hyper-Vがインポートを完了すると、Hyper-V Managerウィンドウに戻り、以下に示すようにインポートされたVMが表示されます。

Imported VM

PowerShellを使用してVMをインポートする

Hyper-V Managerを使用してVMをインポートするのが好きでない場合、問題ありません。PowerShellを使用してください!PowerShellを使用してVMをインポートするには、Import-VM cmdletを使用します。次のシナリオを考慮してください。

あなたはVMをエクスポートし、それがC:\Exported_VM\にあるとします。そして、それが間違って削除されたか、または異なるHyper-Vホストで必要になったかもしれませんか?すでにエクスポートされているので、それは本質的にバックアップされており、簡単にインポートでき、したがってVMを復元できます。

Export-VMがVMをディスクに保存するのに対して、Import-VMコマンドレットはその逆を行います。つまり、VMをディスクから読み取り、Hyper-Vにインポートします。

1. すでにPowerShellコンソールを開いており、VMをエクスポートしたディレクトリ(C:\Exported_VM)にいると仮定します。まず、次のコードを使用してRecurseスイッチを付けてGet-ChildItemコマンドレットを実行し、すべてのファイルをリストアップし、*.vmcx拡張子を持つファイル名をメモしてください。

Get-ChildItem -Recurse | Where-Object -Property Name -CLike *.vmcx

スナップショットがあるかどうかによって複数の.vmcxファイルが表示される場合がありますが、VMを起動するために必要なのはVirtual MachinesフォルダーにあるVMCXファイルだけです。

以下の例のような出力が表示される場合があります:

Exported VM UID example – VM configuration file (vmcx)

2. 次に、Pathパラメータを使用して(前の手順で取得した)VMの構成ファイルを指定してImport-VMコマンドレットを使用します。

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx'

以上です!同じUIDを使用して、VMをその場で登録しました。

Importing a VM in place

3. 今、VMがエクスポートされたときと同じUIDであることを確認してください。.vmcxファイル名。以下のコードを使用して、WMIをクエリしてそれを行うことができます。

(Get-CimInstance -Namespace Root\Virtualization\V2 -ClassName Msvm_VirtualSystemSettingData -Filter "ElementName = 'Alpine Linux 01'").InstanceID
UID Retained

上記の例は、VM構成ファイルからの直接インポートであり、VMは元のUIDを保持しています。本番環境では、古いVMが新しいVMと誤認されないように、新しいUIDを生成したい場合があります。それがCopyパラメータの役割です。

Copyパラメータを使用して仮想マシンをインポートすると、元の場所(C:\Exported_VM\)からファイルがHyper-Vサーバーの構成パスにコピーされます。GenerateNewIdと組み合わせて使用すると、VMは同じHyper-Vサーバーで複数回インポートされ、新しい一意の識別子(UID)が付けられます。

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx' -Copy -GenerateNewId

今回、インポートされたVMにはエクスポート時と同じUIDが含まれていません。スクリーンショットで古いUIDと新しいUIDをご覧ください:

Showing previous UID prior to import vs. new UID created with Copy and GenerateNewID parameters.

Hyper-Vは今回、VMを既定のパスにコピーします。Hyper-Vマネージャーを使用してVMをインポートする際に前述したパスですが、VMには新しいUIDが付与されます。

次の手順

このガイドでは、PowerShellと組み込みのHyper-Vマネージャーを使用してHyper-V VMをエクスポートおよびインポートする方法を学びました。

これで、Hyper-V仮想マシンをエクスポートおよびインポートする方法を知ったので、自動仮想マシンアクティベーション(AVMA)を設定して、Hyper-VでホストされているWindows Server仮想マシンをアクティベートしてみてください。

Source:
https://adamtheautomator.com/export-hyper-v-vm/