
Hyper-V の仮想マシンのエクスポート/インポート ツールセットには、明らかな欠陥があるようです。この評価は間違っているかもしれませんが、そうではないと思います。
ホスト OS の再インストール後にバックアップから復元した VM があります。VM の場所 (およびその VHDX) は、ホストのデフォルト (C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines
およびD:\Virtual Hard Disks
) 外にあります。これらの場所に移動したいのですが、VHDX がかなり大きい (+10TB) ため、標準のインポートでは少なくとも 12 時間のコピー ジョブが必要になります。VHDX は、デフォルトでは同じドライブ (ただし、別のフォルダー) にあるため、VM をシャットダウンして移動するのは簡単です。
構成ファイルをデフォルトの場所にコピーし、インプレース登録を実行しようとしましたが、エラーが発生しました。
言うまでもなく、これはあまり役に立ちません。
手動で新しい VM を作成し、VHDX を指定することもできると思いますが、時間をかけて苦労して構成を作成したので、誤って設定を見逃すリスクは避けたいと考えています。
大きな VHDX をコピーするという面倒な作業をせずに、この VM をデフォルトの場所に配置するにはどうすればよいですか?
答え1
メインの VM 構成ファイル (.vmcx) には、仮想ハード ディスクを含む他のすべてのファイルへのポインターが含まれています。そのため、VM をインプレース登録するには、すべてのファイルが元々配置されていた場所と同じ場所にある必要があります。パスを変更する唯一の方法は、VM を復元またはコピーしてインポートすることです。
仮想ハード ディスクを同じボリューム内の異なるパス間でのみ移動する必要がある場合は、次の回避策を使用して不要なファイル コピーを回避できます。
- VM をその場所に登録します。
- VM から仮想ハード ディスクを削除します (これにより構成のみが削除され、実際の VHDX ファイルは変更されません)。
- Hyper-V 管理ツールを使用して、VM を目的の場所に移動します。移動するディスクがないため、この操作はすぐに完了します。
- 仮想ハード ディスクを手動で目的の場所に移動します。同じボリューム上にあるため、これもすぐに完了します。
- 仮想ハード ディスクを VM に再接続します。
答え2
ホストのデフォルトの場所にない VM をインプレースで登録することと、それをホストのデフォルトの場所に置きたいことは、矛盾しています。インプレース登録とは、VM を現在の場所に登録して実行することを意味します。私はこれを大きな欠陥とは見ていません。考えられる結果は、Microsoft のドキュメントから明らかです。
ホストのデフォルトの場所に登録する場合は、以下にリストされている最後の 2 つのオプションのいずれかを使用します。
インプレース登録– このタイプでは、エクスポート ファイルが仮想マシンを保存して実行する場所にあると想定されます。インポートされた仮想マシンの ID は、エクスポート時と同じになります。このため、仮想マシンが既に Hyper-V に登録されている場合は、インポートを実行する前に削除する必要があります。インポートが完了すると、エクスポート ファイルは実行状態ファイルになり、削除できなくなります。
仮想マシンを復元する– 仮想マシンを選択した場所に復元するか、または既定値の Hyper-V を使用します。このインポート タイプでは、エクスポートされたファイルのコピーが作成され、選択した場所に移動します。インポートされると、仮想マシンの ID はエクスポート時と同じになります。このため、仮想マシンが既に Hyper-V で実行されている場合は、インポートを完了する前に削除する必要があります。インポートが完了すると、エクスポートされたファイルはそのまま残り、削除または再度インポートできます。
仮想マシンをコピーする– これは、ファイルの場所を選択するという点で、復元タイプに似ています。違いは、インポートされた仮想マシンには新しい一意の ID があるため、同じホストに仮想マシンを複数回インポートできることです。
大きな VHDX をコピーするという面倒な作業をせずに、この VM をデフォルトの場所に配置するにはどうすればよいですか?
結局のところ、どのように達成するかに関係なく、VM のファイルがホストのデフォルトの場所にない場合は、それらをホストのデフォルトの場所にコピーまたは移動する必要があります。ファイルが実際にホストのデフォルトの場所にあるためには、ファイルが物理的にホストのデフォルトの場所にある必要があります。