セイテクエンジニアのブログ かつて山市良と呼ばれたおじさんのブログ メモ. 手間はかかるが金いらずのV2V: VMwareのLinux VMをHyper-Vへ (その2)
2024年07月02日配信
2024年07月03日更新
執筆者:山内 和朗
前回に引き続き、Linuxゲストを実行するVMware ESXi VMのHyper-V VMへの、ddコマンドを使用した移行手順を紹介します。前回は、物理ディスク(USB外付けハードディスク)または、SMB/NFS共有に、ddコマンドを使用して、オンラインまたはオフラインでVMware ESXi VMのディスクイメージをファイル化するところまで完了しました。今回は、そのファイル化したイメージをHyper-V VMの空のディスクにコピーして、Hyper-V VMとして起動できるようにします。
Linuxのディスクイメージを保存したら、Hyper-V VMを新規作成します(画面1)。Windowsの場合と同様に、UEFIベースの場合は「第2世代」、レガシBIOSベースの場合は「第1世代」を選択します。メモリやネットワークは移行元の構成に合わせ、「仮想ハードディスクの接続」ページでは、移行元に合わせた空の仮想ハードディスクを作成して割り当てます(画面2)。ディスクのサイズは、移行元でsudo fdisk -lを実行することで確認できます。最後の「インストールオプション」では、「ブートCD/DVDからオペレーティングシステムをインストールする」を選択し、LinuxのLive DVD、例えば、Ubuntu Server 22.04 LTSのLive DVDのISOを指定します(画面3)
画面1 UEFIベースの場合は「第2世代」、レガシBIOSベースの場合は「第1世代」を選択する
画面2 移行元のVMの構成に合わせて空のVHDXファイルを作成して接続する
画面3 LinuxのLive DVDからインストールを開始するようにインストールメディアを指定する
Hyper-V VMを作成したら、「設定」を開き、コア数やセキュアブート(第2世代の場合)などの設定を調整します。なお、Linuxでセキュアブートを有効にする場合は、Hyper-Vの既定のテンプレート「Microsoft Windows」ではなく、「Microsoft UEFI 証明機関」に変更してください。
また、SCSI(第2世代)またはIDEコントローラー(第1世代)の未使用の場所にハードディライブを追加し、イメージを保存した物理ディスク(ホスト側でオフラインにする必要があります)をパススルー接続します(画面4)。なお、共有にイメージを保存している場合は、物理ディスクにコピーしておいてください。
画面4 ディスクイメージを保存した物理ディスクをホスト側でオフラインにし、Hyper-V VMに接続する
LinuxのLive DVDから起動し、「Try or Install」オプションを選択して起動します。Ubuntu ServerのLive DVDの場合は、言語を選択したあと、[Help]メニューから「Enter Shell」を選択してrootのシェル(#)を起動します(画面5、画面6)。Ubuntu DesktopのLive DVDの場合は、Ubuntuのデスクトップ環境でTerminalを開いて作業してください。
画面5 Ubuntu ServerのLive DVDから起動し、「Try or Install Ubuntu Server」を選択する
画面6 [Help]メニューから「Enter Shell」を選択して、rootのシェル(#)に入る
rootのシェル(#)が起動したら、物理ディスクをマウントし、次のようにddコマンドを実行します。イメージの適用が終了したら、「仮想マシン接続」ツールの「停止」ボタンをクリックして、VMを停止します(画面7)。
# dd if=/<パス>/<ファイル名>.img of /dev/sda status=progress |
画面7 Live DVDから起動したrootのシェル(#)で物理ディスクをマウントし、ddコマンドでイメージを/dev/sdaに適用する
イメージをオンラインで取得した場合、Hyper-V VMに復元したLinuxを初めて起動すると、メンテナンスモード(Maintenance mode)で起動する可能性があります。その場合は、fsckコマンドを実行することで(fsck /dev/sda2など)、ファイルシステムのエラー状態を解消できます。
Linuxが正常起動したら、VMware Toolsをアンインストールします。VMware提供のVMware Toolsの場合は、以下のドキュメントで説明されています。
VMware Tools のアンインストール(VMware Docs by broadcom)
open-vm-toolsを利用している場合は、open-vm-toolsパッケージを削除してください。
$ sudo apt-get --purge remove open-vm-tools |
VMware ESXi VMとHyper-V VMでは、ネットワークインターフェースのデバイス名が異なるため、ネットワークが有効にならないはずです。Ubuntuの場合は、/etc/netplanディレクトリにある.yamlファイルを書き換える必要がありました。VMware環境では「ens###」や「eno###」のデバイス名が使用されますが、Hyper-V VMでは「eth0」や「eth1」が使用されます(画面8)。
画面8 VMware Toolsまたはopen-vm-toolsをアンインストールし、ネットワークを再設定したら、Hyper-V VMへの移行は完了
LinuxのカーネルにはHyper-Vの統合コンポーネント(hv_vmbus、hv_storvsc、hv_netvsc、hv_balloon、hv_utilsなど)がマージされており、仮想マシンバスのサポート、SCSIコントローラーや第2世代のネットワークアダプターといった統合デバイスのサポート、動的メモリのサポート、時刻同期やシャットダウン連携のサポート、時刻同期、ハートビート、KVPデータ交換サービスのサポートなどが標準で利用でき、Hyper-V上で最適化されます。
・・・
メモ. 手間はかかるが金いらずのV2V: VMwareのWindows VMをHyper-Vへ (その1)
メモ. 手間はかかるが金いらずのV2V: VMwareのWindows VMをHyper-Vへ (その2)