VMware vSphere vCenter、VMware vSphere ESXi Hypervisor を利用しているなら「vMotion」の機能を利用することで、サービスに影響なくメンテナンスが可能になります。
また、仮想マシンが稼働している状態で他の ESXi ホストに移行することを「ライブマイグレーション」と呼びます。
今回は vMotion(ライブマイグレーション)機能について説明します。
vMotionとは?
「vMotion」の機能を使うと稼働中の仮想マシンを、サービスを停止することなく、現在の ESXi ホストから別の ESXi ホストへ移行することができます。
もちろん仮想マシンが「ESXiホストA」から「ESXiホストB」に移動して切り替わる瞬間はネットワークが瞬断することはありますが、ほとんど気が付かないくらいです。
タイミングによっては ping が欠けることもありますし、ping が欠けないこともあります。
しかし、サービスとしてはダウンタイムがゼロと言えるでしょう。
その結果、計画停止の影響を最小限に押さえることができます。
Storage vMotion
また、「Storage vMotion」機能を使うと、稼働中の仮想マシンの実体があるストレージを、サービスを停止することなく別のストレージに移動することもできます。
vMotionのメリットとは?
物理サーバー(ESXiホスト)のメンテナンス(ディスク交換、メモリ増量など)時に仮想マシンを停止する必要がありません。
ESXi ホストが2台あれば、物理サーバーのメンテナンス時にすべての仮想マシンを1台に集めれば、仮想マシンが載っていない物理サーバーは停止してもサービスには影響がありません。
vMotionを利用するための条件
以下、vMotionを利用するための条件です。
- 共有ストレージ(データストア)
- ネットワーク
- 内部仮想スイッチ
- CPUの互換性
- ローカルデバイス
共有ストレージ(データストア)
vMotion では仮想マシンが ESXi ホスト間を移動しますが、仮想マシンの実体(vmdkファイル)が格納されている共有ストレージ(データストア)は移動しません。
そのため仮想マシンを移動したい複数の ESXi ホストがアクセスできる共有のストレージが必要になります。
共有ストレージはFC(ファイバチャネル)や iSCSI や NFS などがあります。
(最近では一般的な企業では iSCSI を使うケースが多いです)
※仮想マシンの実体(xxx.vmdk,xxxx-00000x.vmdk)は下図のようになっています。
vMotion での移行中に、vCenter Server は仮想マシンをポートグループに割り当てます。
共有ストレージを使用して vMotion 用にホストを構成し、仮想マシンが移行元の ESXi ホストと移行先の ESXi ホストの両方にアクセスできるようにします。
ネットワーク
vMotion を利用した仮想マシンの移行では、移行元と移行先の ESXi ホスト両方で、vMotion ネットワークインタフェース(VMkernelポート)を正しく設定する必要があります。
vMotion では仮想マシンのメモリデータをコピーするために、vMotion ネットワークインタフェース(VMkernelポート)のネットワークを利用します。
各ESXiホストで vMotion ネットワークインタフェース(VMkernelポート)を1つ持っている必要があります。
VMkernel ポートで vMotion を利用可能にするためには、ESXi の VMkernel のネットワークの設定(VMkernel アダプタの vmk0,vmk1 など)で vMotion を「有効」に設定する必要があります。
また、移行する ESXi ホストの VMkernel ポートが同一セグメント(同一サブネット)で構成されている必要があります。
【例】
「test01」という仮想マシンをホスト「ESXi01」からホスト「ESXi02」へ vMotion で移行したいとします。
test01 には仮想 NIC(192.168.1.10)が1つ付いています。
この test01 の仮想 NIC は「Port_Services」というポートグループに所属しているとします。
この場合、ESXi02 にも「Port_Services」という同じ名前のポートグループが存在している必要があります。
また、物理的にも同一セグメントに接続されている必要があります。
VMkernel とは?
VMkernel とは、ESXi ホストが利用するネットワークインタフェースです。
- 管理用ポート
- vMotion用ポート
- iSCSI用ポート
- NFS(Network File System)用ポート
など仮想マシンのネットワークとは別のレイヤとして利用します。
内部仮想スイッチ
外部ネットワークへのインタフェースを持たない(内部で閉じたネットワークの)内部仮想スイッチに接続された仮想マシンは vMotion で移動できません。
CPUの互換性
ESXi ホストの搭載されている CPU のタイプが異なる場合は、vMotion で正常に動作するか保証されません。
- CPUベンダー(Intel,AMDなど)
- ビット(32bit,64bit)
- 命令セット
が同じタイプであることが要件です。
ただし CPU のタイプが同じであればクロック数やコア数などは影響しません。
VMware には「EVC(Enhanced vMotion Compatibility)」の機能があります。
EVC の機能により異なる世代の CPU 間でも vMotion で移動させることができます。
しかし上にも書いてあるように異なる CPU ベンダー(IntelとAMD)間では vMotion で移行することはできません。
詳しくは「VMware Compatibility Guide」を確認してください。
ローカルデバイス
共有ディスクがない場合、それぞれの ESXi ホストのローカルディスクに仮想マシンの実体が保存されていますが、一方の ESXi のローカルディスクから、他の ESXi のローカルディスクへ vMotion で移動させることも可能です。
うまくいかない場合のチェック項目
vMotion の設定がうまくいかない場合のチェック項目です。
たとえば vMotion を実行したがエラーになる、そもそも vMotion をする際に想定したネットワークが表示されない等です。
ネットワーク設定を見直す
- vMotion用の「ポートグループ名」が異なっている
- VMkernelのIPアドレス、サブネットの設定ミス
- vMotionが有効化されていない
vmk0で試してみる
通常 vmk0 はマネジメント用のため vMotion では利用しませんが、vMotion がうまくいかない場合は vmk0 で試してみます。
「新規VLAN」作成 &「vmkXX」を作り直し
vMotion 用に新規で VLAN ID を付けて vmkXX を割り当ててみます。
デフォルトでは VLAN ID は「0」になっています。
TCP/IP スタックの見直し
vMotion をする際に想定したネットワークが表示されない場合は、TCP/IP スタックを見直してみます。
vMotion のトラフィックを隔離したい場合に試してみます。
例えば「デフォルトの TCP/IP スタックに割り当てられたゲートウェイとは異なるゲートウェイを利用して仮想マシンを移行したい」場合などです。
VMkernelポートのセグメントを分ける、もしくは同じにしてみる
通常、複数の VMkernel ポートを設定している場合は
管理用セグメント
vMotion用セグメント
レプリケーション用セグメント
など分けますが、うまくいかない場合は同一セグメントにしてみるなど切り分け調査をしてみます。
仮想マシンがCD-ROMをマウントしているか確認する
仮想マシンにOSをインストールした際に、CD-ROM もしくは DVD-ROM のアンマウントを忘れると vMotion に失敗します。
日頃より CD-ROM をマウントしたら、利用後はアンマウントをするようにします。
疑問点
「iSCSI用のネットワーク」と「vMotion用のネットワーク」は一緒だとうまく動かないか? → 検証してみる。
コメント