かつて山市良と呼ばれたおじさんのブログ

セイテクエンジニアのブログ  かつて山市良と呼ばれたおじさんのブログ  メモ. 手間はかかるが金いらずのV2V: VMwareのWindows VMをHyper-Vへ (その1)

 

 

メモ. 手間はかかるが金いらずのV2V: VMwareのWindows VMをHyper-Vへ (その1)

2024年06月04日配信
2024年07月17日更新
執筆者:山内 和朗

 BroadcomによるVMwareの買収は、顧客はもちろん、VMwareのパートナー(リセラーやクラウド事業者)や、VMwareエコシステム全体にさまざまな懸念と混乱を引き起こしているようです。永続ライセンスの廃止と新たなライセンスモデルへの移行、割引プログラムの廃止、無償版VMware ESXiの提供終了、新たなパートナープログラムの開始はいずれも突然かつ説明不足であり、まだ不確定な部分もあります。そのこともあって、この機会にVMwareから離れ、別の仮想化プラットフォームへの移行を検討する動きが広がっているようです。Windows ServerのHyper-Vは、VMwareの移行先の有力な候補の1つです。

 

 Hyper-Vは、当然のことながら、ゲストOSとしてWindowsを実行することに優れていると思います。Windowsとの親和性の高さは第1の特徴ですが、LinuxのVMを実行することも可能です。Linuxカーネルには、Hyper-V用のコンポーネントがマージされているため、追加のコンポーネントをインストールしなくても、Hyper-V上で最適化されて動作します。他の仮想化技術にはないHyper-Vのメリットは、Azureと共通のハイパーバイザーであり、Hyper-VへVMの移行は、Azureへの移行やAzureとの共存が容易であるということに尽きるでしょう。

 

Microsoft提供の純正V2Vツール/サービス

 

 Microsoftが現在提供している、VMware ESXiからHyper-Vへの移行ツール/サービスとしては、次の2つがあります。

 

  • Azure Migrate
  • System Center Virtual Machine Manager

 VMwareからHyper-Vへの移行について、MicrosoftはHyper-V登場時からさまざまなツールやソリューションを提供してきました。しかし、初期に提供されていた便利なツール(Microsoft Virtual Machine Converterなど)は、その当時の移行機会に対して提供されたもので、現在では利用できなくなっているものがあります。時代は先に進んでおり、Azureへの移行を支援する「Azure Migrate」や、MicrosoftからVMwareの製品やサポートをすべて提供するフルマネージドVMware環境「Azure VMware Solution」(Broadcomによる買収後もBroadcomとのパートナー関係を継続するそうです)に主軸を置いています。

 Azure Migrateは、Azure VMへの移行を支援するものですが、移行後のVMイメージをオンプレミスにダウンロードすれば、Hyper-Vのイメージとして使用できるはずです。VMwareからHyper-Vへの直接的なV2V(仮想ー仮想)変換による移行について、Microsoftはプライベートクラウド製品「System Center Virtual Machine Manager(SCVMM)」にその機能を含めていますが、V2V移行のためだけに、SCVMMを導入するわけにもいきません(高機能ですし、高コスト過ぎます)。

Windows Sysinternals DISK2VHDがあるじゃないか

 

 「StarWind V2V Converter」(外部サイト)のような、便利な無料のV2Vツールも存在します。しかし、このブログでは敢えて専用のV2Vツールを使用せずに、VMware ESXiからHyper-Vへ、Windowsゲスト(今回の例ではWindows Server 2019)を実行するVMを移行してみせましょう(画面1)。

画面1
画面1 移行元のVMware ESXi VMで実行中のWindows Server 2019

 最初に、移行元のVMware ESXi VMのファームウェアの種類を調べておきます。ファームウェアの種類は、UEFIまたはレガシBIOSのいずれかのはずです。UEFIの場合はHyperーVの「第2世代仮想マシン」、レガシBIOSの場合はHyper-Vの「第1世代仮想マシン」に移行することができます。ファームウェアの種類を調べるには、「システム情報(msinfo32.exe)」を実行します。「システムの要約|BIOSモード」が「UEFI」であればUEFI(第2世代仮想マシンに移行可能)、「レガシ」であればレガシBIOS(第1世代仮想マシンに移行可能)です。その他、ディスクパーティション構成やネットワークの設定、その他のシステム情報も念のため控えておきます(画面2)。システム情報の取得には、弊社のサーバー設定仕様書自動生成サービス『SSD-Assistance』を是非ご利用してみてください。なお、もう主流ではなくなりましたが、32ビット(x86)のWindowsの場合は、第1世代仮想マシンにのみ移行可能です。

画面2
画面2 移行元のVMware ESXi VMのファームウェアの種類はUEFI。このVMは第2世代のHyper-V VMに移行可能

 今回、Windows VMの移行に使用するのは、Windows Sysinternalsの「Disk2vhd」です。Disk2vhdはもともと、物理マシンのディスクをイメージを取得して、Microsoft Virtual PC用の仮想ハードディスク(VHD形式)にするユーティリティとして登場したものですが、その後、Hyper-VのVHDおよびVHDX形式にも対応しました。このユーティリティを使用して、VMware ESXi上のWindows VMの仮想ハードディスク(.vmdk)を、Hyper-VのVHDX形式に変換するのです。このユーティリティはインストールする必要がなく、単体の実行ファイルとして利用できます。

Windows Sysinternals|Disk2vhd(Microsoft)

DISK2VHDを使用して、オンラインでイメージ化

 

 64ビット(x64)のWindows Serverのディスクイメージを作成するには、VMware ESXiのVMに接続(コンソールやリモートデスクトップ接続)し、「Disk2vhd64.exe」(Sysinternals Liveから入手する場合はhttps://live.sysinternals.com/disk2vhd64.exe)を実行して、NTFSまたはexFAT(※いずれも4GBを超える大きなファイルを作成可能)のUSB外付けハードディスクなどの物理ディスク(VMのコンソールに接続できる場合)やSMB共有上のパスを「VHD file name」を指定します。稼働中のWindowsのディスクイメージをVHDX化するには、実行する際に「Use Vhdx」と「Use Volume Shadow Copy」を有効にします。VHDXに含めるボリュームとしては、最低限、C:ドライブ、回復パーティション(存在する場合)、データドライブ(存在する場合)を選択します。「Create」をクリックすると、ディスクごとにVHDXファイルが作成されます。複数のディスクの場合で、「VHD file name」に指定したファイル名が「filename.vhdx」だった場合、作成先パス内に「filename-0.vhdx」「filename-1.vhdx」...のように複数のVHDXファイルが作成されます。レガシBIOSのVMの場合は、これで完了です。なお、32ビット(x86)のWindows Serverの場合は、「Disk2vhd.exe」(https://live.sysinternals.com/disk2vhd.exe)を使用してください。

 UEFIのVMの場合は、「Disk2vhd64.exe」の実行前後に追加の手順が必要です。それは、通常マウントされていないEFIシステムパーティション(ESP)を一時的にマウントして、VHDXにそのパーティションを含めるようにすることです。この手順を省いてしまうと、出来上がったVHDXからゲストOSは正常に起動できません(画面3)。また、ESP(FAT32)をキャプチャに含める場合、FAT32はVSS非対応であるため「Use Volume Shadow Copy」を有効にすることはできません。

 

C:¥> MOUNTVOL S: /S
C:¥> <パス>¥Disk2vhd64.exe
C:¥> MOUNTVOL S: /D

 

画面3
画面3 稼働中のVMware ESXi VMのWindowsゲストで、DISK2VHD(disk2vhd64.exe)を実行し、オンラインでディスクイメージをVHD化する。UEFIベースの場合はESPボリュームをマウントしてからVHD化すること(その場合、Use Volume Shadow Copyは使用できない)

 この方法の良いところは、オンラインのVMware ESXi VMを稼働中のまま、そしてそのOS環境にまったく手を加えることなく、VMDKをVHDX化することができる点です。DISK2VHDを物理ディスクやSMB共有に配置しておけば、DISK2VHDのダウンロードやコピーも必要ありません。なお、「Windows Serverバックアップ」が利用可能な状態であれば、DISK2VHDを利用せずに、物理ディスクやSMB共有にシステムとデータのフルバックアップを取得し、Hyper-V上に新規作成したVMの空のディスクにバックアップをリストアするという方法で移行することもできます。

 

DISK2VHDを使用して、オフラインでイメージ化

 

 稼働中のOSのディスクイメージをDISK2VHDや「Windows Serverバックアップ」で取得した場合、ボリュームシャドウコピーサービス(VSS)を利用するため、ある時点の整合性のあるディスクイメージを取得することはできますが、そのイメージから起動したOSの初回起動は、前回正常にシャットダウンされていないとみなされ、ログオン時に「シャットダウンイベントの追跡ツール」が表示されます。

 OSやアプリケーションの動作にまったく影響しない、より完全なディスクイメージを取得したいという場合は、第三のOSで起動して、DISK2VHDを実行します。そのため、現在のゲストOSは一時的に利用できない状態になります。また、VMware ESXi VMのローカルコンソールに接続して作業できる必要もあります。第三のOSとしてすぐに利用できるのは、Windowsのローカルの回復パーティションにインストールされる「Windows回復環境(WinRE)」があります。WinREは、[Shift]キーを押しながら再起動操作を実行するか、コマンドプロンプトから以下のコマンドラインを実行します。

 

C:¥> reagentc /boottore
C:¥> shutdown /r /t 0

 

 WinREの「トラブルシューティング」オプションから「コマンドプロンプト」を開始し、ローカル管理者(Administratorなど)でログオンしたら、コマンドプロンプトで次のコマンドラインを実行します。ESPのマウント解除操作は省略できます(画面4、画面5)。WinREでDISK2VHDを実行する場合は、「Use Vhdx」のみを選択し、VHDXのパスを指定して「Create」をクリックします。オフラインイメージをVHDX化するため、「Use Volume Shadow Copy」の選択は不要です(意味がありません)。

 

X:¥> MOUNTVOL S: /S
X:¥> <パス>¥Disk2vhd64.exe

X:¥> WPEUTIL reboot

 

画面4

画面4 WinREの「トラブルシューティング」オプションから「コマンドプロンプト」を開始する

 

画面5
画面5 WinREのコマンドプロンプトからDISK2VHDを実行する。X:(WinREのRAMディスク)と作成先の物理ディスク(この例ではD:¥)は選択しないこと

 
 なお、システムでWinREが無効(disabled)になっている場合は、WinREの代わりに、WindowsのインストールメディアからVMを起動して、[Shift]+[F10]キーを押すことで、「Windowsプレインストール環境(WinRE)」のコマンドプロンプトを呼び出すことができます。
 

次回(その2)へ続く...

 

お勧めの一冊

 DISK2VHDを含むWindows Sysinternalsユーティリティの日本語解説については、少し古い書籍ですが、こちらをお勧めします。Windows Sysinternalsユーティリティは更新を続けていますが、ユーティリティのラインアップや基本的な使い方に変わりはありません。

 

ブックカバーWindows Sysinternals 徹底解説 改訂新版

著者   : Mark E. Russinovich、Aaron Margosis 著
訳者   : 山内和朗
価格   : 6,050 円(税込)
ISBN   : 978-4-8222-9896-8
発行日 : 2017年06月05日
発行元 : 日経BP
頁数   : 740ページ

blog_subscribe

blog_comment

最新記事