高額な代償:vMotionが帯域を「圧迫」する時
2019年、定期メンテナンス中のある操作ミスで、会社のERPシステムを15分間も停止させてしまったことがあります。当時、ホストのメモリ増設のために5台の仮想マシン(各32GB RAM)をvMotionで一斉に移行しました。vMotionトラフィックを本番用ネットワークと共有させていたため、1Gbpsの帯域が完全に占有されてしまいました。結果、アプリケーションのレイテンシが1msから500msに跳ね上がり、ユーザーから苦情の嵐となりました。
vMotionはまさにリソースを食い尽くす「猛獣」です。明確なネットワーク設計(キャパシティプランニング)を行わないと、ネットワークカードの帯域を使い果たし、ボトルネックを引き起こしてサービスを直接中断させることになります。このような事態を防ぐには、VMware vSphere NIOC設定ガイドを参考に、帯域幅を最適化することが重要です。
一般的な3つのvMotionネットワーク設計シナリオ
利用可能な物理ネットワークカード(NIC)の数に応じて、以下の3つのアプローチから選択できます。
1. すべてを統合(共有スタック)
管理用、vMotion、仮想マシンデータのすべてに単一のvSwitchとペアのUplinkを使用します。
- メリット: セットアップが非常に速く、物理スイッチのポートを節約できます。
- デメリット: 非常に危険です。vMotion実行時に帯域の90-100%を占有する可能性があり、ホストの管理権限を失う(vCenterで「応答なし」と表示される)恐れがあります。
2. VLANによる分離(論理的隔離)
物理ネットワークカードは共有しますが、専用のポートグループとVLAN IDを使用してトラフィックを分離します。
- メリット: ブロードキャストノイズを低減し、よりプロフェッショナルなトラフィック管理が可能です。さらに高度な分離が必要な場合は、Private VLAN(PVLAN)の設定を検討してください。
- 制限事項: これはあくまで「論理的」な分離です。物理ネットワークカードが1Gbpsしかない場合、vMotionは依然として他のデータフローとリソースを競合します。
3. 物理的な完全分離(物理的隔離)
vMotion専用の物理ネットワークカードを用意します。これはエンタープライズシステムの「ゴールデンスタンダード」です。
- メリット: 最大のパフォーマンスを発揮します。10Gbps環境なら、32GB RAMの仮想マシンをユーザーに影響を与えることなく45秒以内に移行できます。これはダウンタイムなしでストレージを移行するStorage vMotionを活用する際にも同様の物理的な考慮が推奨されます。
- デメリット: ハードウェアリソース(NICとスイッチポート)のコストがかかります。
実環境における標準構成
サーバーに4つの10Gbpsポートがある場合は、2つのポートをvMotion専用(ロードバランシング構成)にし、残りの2つのポートを本番環境(Production)に割り当てます。1Gbpsカードしか利用できない場合、仮想マシンの一斉移行が必要なトラブル時にシステムを維持するためには、この物理的な分離が不可欠です。
詳細な実装手順
ステップ1:VMkernelポートの作成
vMotionは通常のポートグループを使用しません。ホスト間の通信用に専用のVMkernel(VMK)インターフェースが必要です。これはミッションクリティカルな環境でVMware vSphere Fault Tolerance (FT) の設定を行う際にも共通する重要なステップです。
- vCenter de Networking -> VMkernel adapters にアクセスします。
- Add Networking を選択し、VMkernel Network Adapter タイプを選びます。
- Port properties セクションで、vMotion にチェックを入れます。これが移行機能を有効にする鍵です。
ステップ2:専用IPアドレス帯域の計画
vMotionをエンドユーザーと同じネットワークセグメントに配置しないでください。トラフィックを完全に隔離するために、専用のサブネット(例:192.168.50.x)を設定します。
# 3ホストクラスターのIP設計例
Host 01: 192.168.50.11 (サブネット: 255.255.255.0)
Host 02: 192.168.50.12
Host 03: 192.168.50.13
ステップ3:Jumbo Frames (MTU 9000) による高速化
デフォルトのMTUは1500です。vMotionのような膨大なデータ転送では、MTUを9000に引き上げることでCPU負荷を軽減し、転送速度を約15-20%向上させることができます。
警告:ESXiから物理スイッチまで、エンドツーエンドでMTU 9000を一貫して設定する必要があります。設定が不一致(疎通が取れない)だと、vMotionが10%程度で「Network unreachable」エラーを吐いて停止することがよくあります。
PowerCLIによる自動化
20台のホストで一つずつマウス操作をする代わりに、設定の統一性を確保するためにスクリプトを使用することをお勧めします。より大規模な環境では、AnsibleによるVMware vSphereの自動化を導入して、Infrastructure as Codeによる管理へ移行するのも一つの手です。
Connect-VIServer vcenter.yourdomain.com
$hosts = Get-VMHost
foreach ($esx in $hosts) {
# vMotion用の新しいVMkernelアダプタを作成
New-VMHostNetworkAdapter -VMHost $esx -PortGroup "vMotion-Net" `
-VirtualSwitch "vSwitch0" -IP 192.168.50.$(($esx.Name).Split('.')[-1]) `
-SubnetMask 255.255.255.0 -VmotionEnabled $true -Mtu 9000
}
現場で役立つTips & Tricks
- Multi-NIC vMotion: 1つのネットワークカードだけに頼らないでください。2つのVMkernelポートを作成し、それぞれに1つのUplinkをActiveとして割り当てます。VMwareは自動的に両方の経路を利用し、転送速度を2倍に高めます。
- 接続テスト: 設定後は、
vmkping -I vmk1 [宛先ホストIP] -s 8972 -dコマンドを使用して、Jumbo Framesが正しく疎通しているか確認してください。 - レイテンシ: vMotionには150ms以下のRTTが必要です。拠点間での長距離vMotion(Long-distance vMotion)を行う場合は、WAN回線の品質を十分に確認してください。
適切なvMotionネットワーク構成は、単にシステムを高速化するだけではありません. それは管理者のプロフェッショナルな設計思想の表れであり、深夜のメンテナンス時でも枕を高くして眠れるようにするための備えなのです。

