【VMWare ESXi】図解 vMotionの概要

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

稼働中の仮想マシン(VM)を、ある ESXi ホストから別の ESXi ホストへ移すことを vMotion といいます。vMotion の間も VM は止まらず、サービスを続けたまま移動できます。

たとえば、VM が動いている ESXi ホストの CPU やメモリが足りなくなったときや、メンテナンスのためにホストを止めたいときに、VM を別のホストへ移します。

この記事でわかること
  1. vMotion に必要なネットワークとストレージの構成
  2. vMotion の内部動作(メモリのコピーと切り替え)
  3. vMotion が失敗する、よくある互換性の問題

vMotionの前提構成

ESXi ホスト1で VM が動いていて、この VM を ESXi ホスト2へ vMotion するとします。このとき、ネットワークとストレージは次の構成が前提になります。

項目前提
管理ESXi ホスト1、2 がどちらも vCenter Server で管理されている。各ホストのライセンスに vMotion が含まれている
ストレージVM の実体である仮想ディスク(VMDK ファイルなど)が、外部の共有ストレージ上のデータストアに保存されている。つまり、ESXi ホスト1、2 のどちらからも、そのデータストアの仮想ディスクにアクセスできる必要がある
vMotion 用のネットワーク各ホストの仮想スイッチに、vMotion を有効にした VMkernel ポート(VMkernel アダプタ)があり、ホスト間で上位の物理スイッチ経由で通信できる
VM 用のネットワークESXi ホスト1、2 の仮想スイッチに、同じ VLAN のポートグループが同じ名前(ネットワークラベル)で作られている。移行後の VM は、移行前の IP アドレスと MAC アドレスをそのまま使う
上位スイッチVMFSデータストアESXiホスト1仮想スイッチVMkernelESXiホスト2仮想スイッチVMkernelVMDKVMメモリ
図1 vMotion の前提構成。どちらのホストからも同じデータストアにアクセスできる
補足

共有ストレージがない環境でも、ホストとデータストアを同時に移す方法(vMotion と Storage vMotion の組み合わせ)で移行できます。詳しくは Storage vMotion の記事 を参照してください。この記事では、共有ストレージを使う基本の vMotion を扱います。

仮想ネットワークやデータストアについては、次の記事を参考にしてください。

>> 参考記事:図解 ハイパーバイザの概要

>> 参考記事:図解 仮想ネットワーク・仮想スイッチの概要

>> 参考記事:図解 仮想ストレージ(仮想ディスク、データストア)の概要

vMotionの動作概要

vMotion を実行すると、内部では次の順に処理が進みます。仮想ディスクは共有ストレージにあるので、ホスト間でコピーするのは主に VM のメモリと状態です。

メモリのコピー

vCenter Server が、移行先ホストで VM を動かせるかを確認し、移行先の ESXi ホスト2に VM を受け入れる準備をします。そのうえで、稼働中の VM のメモリの内容を、VMkernel(vMotion ネットワーク)から上位スイッチ経由で ESXi ホスト2へコピーします。

上位スイッチVMFSデータストアESXiホスト1仮想スイッチVMkernelESXiホスト2仮想スイッチVMkernelVMDKVMメモリVMメモリメモリをコピー
図2 稼働中の VM のメモリを、vMotion ネットワーク経由で移行先へコピーする

コピー中に変更されたメモリの記録

コピーしている間も、VM は動き続けてメモリを書き換えます。そこで、コピーを始める前にメモリの書き込みを追跡する仕組みを入れ、コピー中に書き換えられたページ(変更分)を記録します。

上位スイッチVMFSデータストアESXiホスト1仮想スイッチVMkernelESXiホスト2仮想スイッチVMkernelVMDKVMメモリ変更分VMメモリコピー中
図3 コピー中に書き換えられたメモリのページを、変更分として記録する

変更分のコピーを繰り返す

1回目のコピーが終わったら、その間に記録した変更分だけをもう一度コピーします。このコピーの間にも変更は起きるので、変更分のコピーを何回か繰り返します。回を重ねるごとに、コピーする量は小さくなっていきます。

残りの変更分が、ごく短い時間(約0.5秒未満)でコピーし終えられる量になったら、繰り返しをやめて次の切り替えに進みます。

1回目すべてのメモリをコピー2回目1回目の間に変更された分3回目2回目の間に変更された分⋮最後残りわずかになったら一時停止してコピー
図4 変更分のコピーを繰り返し、残りが少なくなったら切り替えに進む

移行元VMの一時停止

残りの変更分が十分に小さくなると、移行元である ESXi ホスト1上の VM を一時停止します。シャットダウンではなく、VM の実行を短時間止める(stun)だけです。

上位スイッチVMFSデータストアESXiホスト1仮想スイッチVMkernelESXiホスト2仮想スイッチVMkernelVMDKVMメモリ変更分一時停止VMメモリ
図5 移行元の VM を一時停止する

残りの変更分と状態のコピー

VM を一時停止したあと、残りのメモリの変更分と、CPU やデバイスの状態を移行先ホストへコピーします。

上位スイッチVMFSデータストアESXiホスト1仮想スイッチVMkernelESXiホスト2仮想スイッチVMkernelVMDKVMメモリ変更分一時停止VMメモリ変更分残りをコピー
図6 一時停止中に、残りの変更分と VM の状態をコピーする

移行先ホストのVMが稼働

移行先の VM は、コピーした状態から実行を再開します。仮想ディスクは同じデータストアのものを使い続け、ネットワークも同じポートグループにつながります。移行先ホストは RARP を送って、上位の物理スイッチに VM の MAC アドレスの新しい位置を知らせます。これで vMotion が完了します。

VM が止まるのは STEP 4〜6 の切り替えの間だけで、通常は1秒に満たない時間です。そのため、ダウンタイムはほぼない状態で VM を移動できます。

上位スイッチVMFSデータストアESXiホスト1仮想スイッチVMkernelESXiホスト2仮想スイッチVMkernelVMDKVMメモリRARPで上位スイッチに通知
図7 移行先ホストで VM が動き始め、RARP で上位スイッチに位置を知らせる

vMotionの移行要件

移行元と移行先の ESXi ホストの間で構成に互換性がないと、vMotion が失敗することがあります。移行の互換性に関するエラーについては、次の記事を確認してください。

>> 参考:Overview of migration compatibility error messages(Broadcom)

よくある互換性の問題を2つ紹介します。

CPUの互換性

vMotion では、ESXi ホスト間で CPU に互換性が必要です。CPU は同じベンダー(Intel 同士、AMD 同士)でなければならず、Intel の CPU から AMD の CPU へは vMotion できません。

ESXiホスト1ESXiホスト2Intel CPUAMD CPUVMVMvMotion できない
図8 CPU のベンダーが違うホストへは vMotion できない

同じベンダーでも、移行先の CPU が VM に同じ命令セットを提供できる必要があります。クロック周波数、キャッシュサイズ、コア数は違っていてもかまいません。世代の違う CPU が混在するクラスタでは、EVC(Enhanced vMotion Compatibility)を有効にすると、クラスタ内のホストが VM に見せる CPU の機能をそろえられます。

移行元ホストのローカルデバイスを参照

VM が移行元ホストのローカルにあるファイルやデバイスを参照していると、移行先ホストからはそのファイルやデバイスにアクセスできないため、vMotion は失敗します。

たとえば、移行元ホストのローカルにある ISO ファイルを仮想 CD/DVD ドライブにつないだ VM を vMotion すると、移行先ホストから ISO ファイルを参照できず、vMotion が失敗します。移行の前に、こうしたデバイスの接続を外してください。

ESXiホスト1ESXiホスト2ISOファイル(ローカル)VMVMvMotion できない
図9 移行元ホストのローカルにある ISO ファイルを参照していると vMotion できない

まとめ

項目ポイント
vMotion とは稼働中の VM を、止めずに別の ESXi ホストへ移す
前提構成vCenter Server で管理、共有ストレージ、vMotion 用の VMkernel ポート、同じ VM 用ポートグループ
動作メモリをコピーし、変更分のコピーを繰り返したあと、一時停止して残りと状態をコピーし、移行先で再開する
失敗しやすい例CPU の互換性がない(Intel と AMD など)、移行元ホストのローカルのファイルやデバイスを参照している

コメント