見出し画像

ProxmoxにESXiからゲストをインポート


他の仮想基盤製品をProxmoxに移行

よくある話でProxmoxに今まで使っていた仮想マシンを移植したいと思うのは当然のこと。代表例としてESXiで動いている仮想マシンを移行してみる。
細かな部分はこちらを参照して欲しい。

■標準的な移行の説明

■P2V,V2Vに関する説明

ESXiとの接続

まずはESXiに接続してデータストアの情報が見れるようにする。
[データセンタ]-[ストレージ]-[追加]-[ESXi]

[追加]ボタンを押すとリストが展開される

 ID               :接続先のESXiまたはvSphere名
 サーバ  :ESXiorvSphereのIP
 ユーザ名 :rootまたはAdministrator等
 パスワード:rootまたはAdministratorのパスワード
 ノード  :登録先のProxmox名
 有効   :■
 Skip Certificate Verification:■※
 ※外部で証明できる有効な証明書があれば:□

VMwareへの接続情報を登録
「esxi6」が無事に追加された

ESXiからのVMインポート(Windows編)

例として「Win2019」と書いてあるゲストをインポートする

接続先のESXiの状態

仮想ハードウェアの情報はこんな感じ

仮想マシンのプロパティ

それでは早速インポートしてみよう。先ほどESXiの認証情報を使って接続したストレージの配下に仮想マシンの仮想ディスクリストが表示されるので選んでインポートをクリックする。
[データセンタ]-[ノード名]-[ESXi名]-[Virtual Guests]-[インポート]

「Win2019」をインポートしてみる

インポート用の設定ウインドウが開くので以下を参考に設定する。
 VM ID   :既存とぶつからない番号
 ソケット :ESXiからの引継ぎ数または任意の数値
 コア   :ESXiからの引継ぎ数または任意の数値
 メモリ  :ESXiからの引継ぎ数または任意の数値
 名前   :ESXiからの引継ぎ名または任意の名称
 CPU type :既定値(動作可能なタイプに修正)
 OS種別  :既定値
 バージョン:既定値
 Default Storage :インポート先のストレージ
 形式     :qcow2
 Default Bridge  :VM割り当て用のBridge用NIC名
 Live Import  :□インポート後に起動する場合はチェック

ESXi上でゲストが起動していると上記「警告」が表示される。※事前に停止すること。
事前に細かな調整する場合はここ

インポートが開始されるとこんな感じで進捗が表示される。インポート速度はネットワーク帯域とストレージ側の処理性能、今回で言うとESXi側の処理性能、Proxmox側の処理性能によって変わる。もちろんインポートディスクが大きければそれだけ時間もかかるので事前に自分の環境でどのくらいの転送性能がでるのかは、実験しておくと良い。

ちなみに、今回のゲストは・・・150GBで15時間もかかった。前にテストした感じだと1時間もあれば終わってるハズだったんだけど。どうしてだろう?

「インポート」を押下するとこんな感じで進む
複数ディスクがある場合は順番に転送される
最後に「TASK OK」と出てくれば終了
転送後の仮想マシンの状態

【インポートテスト(環境による差が大きい部分)】

 ■インポート構成①
 ・1Gbps1本:NAS→コンバート→NAS
    16GB:  6分
    40GB:13分
  100GB:30分
 ■インポート構成②
 ・1Gbps1本:ESXiローカルSSD→コンバート→NAS
  120GB:30分

【インポート後の対応】

ここは一発インポートした仮想マシンを「開始」してみる。普通に起動するのかと思いきや・・・予想通りの画面である。

Windows系はいきなり起動するとエラーになる

移行直後のハードウェアはこうなってるのでProxmoxで起動できるように再調整する。基本的にハードウェア設定の修正が反映されるタイミングは仮想マシンが再起動ではなくシャットダウンされた状態となるので設定変更タイミングは注意すること。

ここを弄って調整する

①ハードディスク
 [ハードディスク(scsi#)]-[デタッチ]

デタッチすると「未使用のディスク」として表示される

 [未使用のディスク #]-[編集]-[追加]

「バス/デバイス」がIDEになっているのを確認して「追加」

すべてのハードディスクを同じようにIDEとして追加し直す。

(scsi → ide となったことを確認)

②とりあえず、ここまで修正できたら「開始」をクリックする。どうだろう?Windowsのログイン画面が無事に表示されたかな?

ここまでくれば一安心

コンソールから「A」→「■■ ■ (Ctrl+Alt+Delの略)」をクリックする

キーボードショートカットがないのが残念

③VMwareToolsのアンインストール

以前の仮想化ドライバーをアンインストール

④VirtIOドライバーのインストール
 isoは事前にダウンロードして準備しておく。
 https://pve.proxmox.com/wiki/Windows_VirtIO_Drivers

「CD/DVDドライブ」の編集からisoを設定
「virtio-win-gt-x64.msi」を実行

⑤Windowsの「SCSIコントローラ」をVirtIO SCSIに変更
 ここは仮想マシンをシャットダウンしてから実施する。

選択して「編集」をクリック
「VirtIO SCSI」を選択
「VirtIO SCSI」になったことを確認

⑥WindowsのハードディスクをSCSIタイプに変更
詳しくはこちらを参照
■Windows 用準仮想化ブロック ドライバー
https://pve.proxmox.com/wiki/Paravirtualized_Block_Drivers_for_Windows

単純にハードディスクタイプをSCSIに修正するだけではブルースクリーンとなって正常に起動できないので以下の手順を踏む。この部分を詳しく書いた記事があまりなかったので手探りで調べてみた。

「VirtIO Block」のディスクを一時的に追加する

VirtIO Block で 1GBの小さなディスクを作成
追加されたことを確認する

仮想マシンを起動して追加したディスクが「ディスクの管理」に表示されることを確認する。ディスクとして認識できればOKなのでフォーマット等は必要ない。

1GBのディスクが認識されたことを確認

仮想マシンをシャットダウンして初めに追加した1GBのディスクを削除してから元のOSディスクタイプを「VirtIO Block」に修正する。

ディスクを再登録する順番は要注意。起動用ディスクから登録する。

仮想マシンを起動すると今度はSCSIドライバー起動としてサクッと起動が完了する。IDEに対してずいぶんと起動時間が短縮される。

起動後のディスクのプロパティでは「Red Hat VirtIO SCSI Disk Device」として表示された。

SCSIタイプとして認識されたことを確認
デバイスマネージャーでも確認

⑦ネットワークデバイス
 [ネットデバイス(net0)]-[編集]-[モデル]
 ・Intel E1000 → VirtIO(準仮想化)

モデルを「VirtIO(準仮想化)」に変更

⑧その他
 ・Windowsのライセンス認証を要求されるので再認証を実施する
 ・デバイスマネージャー等でエラーとなったものを修正する
 ・イベントログでエラーとなったものを修正する

VMwareTools がアンインストールできなくなった場合

以下のPowerShellスクリプトを保存して実行する。実行後に再起動すればアンインストールは完了する。

「Continue(y/n):」がでたら「y」
完了したら再起動

Remove_VMwareTools.ps1


ESXiからのVMインポート(Linux編)

例として「CUPS」と書いてあるゲストをインポートする
ちなみにCUPSはプリントサーバです。我が家でスマートフォンやChromeBookから一般プリンターを使うために踏み台にしています。
https://www.cups.org/

接続先のESXiの状態

仮想ハードウェアの情報はこんな感じ

仮想マシンのプロパティ

それでは早速インポートしてみよう。先ほどESXiの認証情報を使って接続したストレージの配下に仮想マシンの仮想ディスクリストが表示されるので選んでインポートをクリックする。
[データセンタ]-[ノード名]-[ESXi名]-[Virtual Guests]-[インポート]

「CUPS」をインポートしてみる

インポート用の設定ウインドウが開くので以下を参考に設定する。
 VM ID   :既存とぶつからない番号
 ソケット :ESXiからの引継ぎ数または任意の数値
 コア   :ESXiからの引継ぎ数または任意の数値
 メモリ  :ESXiからの引継ぎ数または任意の数値
 名前   :ESXiからの引継ぎ名または任意の名称
 CPU type :既定値(動作可能なタイプに修正)
 OS種別  :既定値
 バージョン:既定値
 Default Storage :インポート先のストレージ
 形式     :qcow2
 Default Bridge  :VM割り当て用のBridge用NIC名
 Live Import  :□インポート後に起動する場合はチェック

「SATA」を使ってると「警告」が表示される?
事前に細かな調整する場合はここ

インポートが開始されると進捗が表示される。ちなみに、今回のゲストは・・・16GBで42分かかった。前にテストした感じだと6分もあれば終わってるハズだった。環境の違いか?

最後に「TASK OK」と出てくれば終了
転送後の仮想マシンの状態

【インポート後の対応】

ここは一発インポートした仮想マシンを「開始」してみる。普通に起動する・・・おそらく元からSCSI系のドライバーでディスクが認識されていることが理由らしい。

Linux系はいきなり起動してもOKらしい

移行直後のハードウェア設定については少し最適化しておく。基本的にハードウェア設定の修正が反映されるタイミングは仮想マシンが再起動ではなくシャットダウンされた状態となるので設定変更タイミングは注意すること。

ここを弄って調整する

①「SCSIコントローラ」をVirtIO SCSIに変更
 ここは仮想マシンをシャットダウンしてから実施する。

選択して「編集」をクリック
「VirtIO SCSI」を選択
「VirtIO SCSI」になったことを確認

②ネットワークデバイス
 [ネットデバイス(net0)]-[編集]-[モデル]
 ・Vmware vmxnet3 → VirtIO(準仮想化)

モデルを「VirtIO(準仮想化)」に変更

仮想マシンを起動してコンソールを開いて以下のコマンドを実行してインターフェースを認識しているか確認する。

# ip add
「enp6s18」が認識されたNIC

エディタでネットワーク設定を編集する

cd /etc/netplan
sudo vi  00-installer-config.yaml
 :ens160 → enp6s18

編集前がこの状態

ESXiの時は「ens160」として認識

編集後はこの状態

「enp6s18」に変更するだけ

ネットワーク設定を有効化する

sudo netplan apply

Pingを実行してネットワークが開通したことを確認する

ping 192.168.1.254

今回はインターネットに接続できる環境なのでチョイチョイとエージェントをインストールしてみる。

sudo apt install -y qemu-guest-agent
sudo systemctl enable qemu-guest-agent
sudo systemctl start qemu-guest-agent

できればエージェントをインストールしておきたいが、できなかった場合はそのまま使うことになるかな。


この記事が気に入ったらサポートをしてみませんか?