2020年12月にリリースされた vCenter 7.0u1c で実装された "Advanced Cross vCenter Server vMotion (Migration)" により、vSphere Clinent の GUI から異なる vCenter 間での vMotion が可能になりました。
※ 従来は SSO ドメインの異なる vCenter 間では PowerCLI などから vCenter API を叩く必要がありました。
今回は新機能の "Advanced Cross vCenter Server vMotion (Migration)" 含めて、現在利用可能な仮想マシンの移行機能をご紹介、試してみたいと思います。
"Advanced Cross vCenter Server vMotion (Migration)" に関する公式情報は以下を参照ください。
※ 本投稿で動作確認したものは全ての環境で同様に動く事を保証するものではありません。本番環境での移行を検討する場合は必ずサポートされた構成で事前検証を実施してください。
今回の内容です。
vCenter を跨いだ仮想マシンの移行方法
vCenter を跨いだ仮想マシンの移行方法にはいくつか方法があります。
- 仮想マシンを起動した状態での移行(vMotion 系)
- (1) 同一 vCenter 配下での vMotion
- (2) 同一 SSO 下の vCenter 間での vMotion (vCenter 拡張 Linked Mode 間での Cross vCenter vMotion、従来から vSphere Client で実施可能)
- (3) 異なる SSO の vCenter 間での vMotion (Cross vCenter vMotion without SSO、従来は PowerCLI などが必要) → 今回の Advanced Cross vCenter vMotion の強化ポイント
- (4) クロスクラウド間での vMotion (HCX vMotion など別ライセンス・専用ツールが必要)
- 仮想マシンの停止を伴う移行 (移行元での停止や移行先での再起動が必要な方法)
- (5) 異なる vCenter 間で vSphere Client を利用しての Advanced Cross vCenter Migration → 今回の強化ポイント
- (6) vSphere Replication (+SRM) を利用した異なる vCenter 間での移行 (クラウドや遠隔地移行に最適、SRM と組み合わせた半自動化も可)
- (7) OVF/OVA テンプレートへエクスポート・インポートする(要 VM 停止)
- (8) vCenter Converter Standalone を利用したエクスポート・インポート(要 VM 停止、現在は開発終了)
- (9) 外部データストアを双方のクラスタでマウントして vCenter 間で仮想マシンのインベントリを付け替え (要 VM 停止、手動でのインベントリ操作)
- (10) 3rd Party バックアップソフトウェアやレプリケーションツールを利用した移行
今回は上記太字の "Advanced Cross vCenter Server vMotion (Migration)" に関して試した事を中心にまとめたいと思います。
vMotion の種類について
vMotion には従来からのクラスタ内の仮想マシンのオンラインマイグレーションの他、vSphere 6.0 から実装された vCenter を跨いだ Cross vCenter vMotion (XvC-vMotion)、VMware HCX を利用した Cross Cloud vMotion などがあります。
(異なる仮想スイッチ間の移行をサポートする Cross vSwitch vMotion や L3 ネットワーク跨ぎの vMotion は vSphere 6.0 からサポート)
"Advanced Cross vCenter Server vMotion (Migration)" では異なる SSO ドメインの vCenter を跨いでの vMotion が vSphere Client を利用して操作する事が可能になりました。
それぞれの違いを簡単にイメージにまとめました。
通常の vMotion : クラスタ内 vMotion、クラスタ間 vMotion
- vSphere Client または PowerCLI などで操作可能
- vSphere 6.x 以降では Cross vSwitch vMotion もサポート
- vSphere Standard で利用可能
同一 SSO ドメイン (vCenter 拡張リンクモード) 間の Cross vCenter vMotion
- vSphere Client または PowerCLI などで操作可能
- 要 vSphere Enterprise Plus 相当のエディション
異なる SSO ドメイン間の Cross vCenter vMotion
Advanced Cross vCenter vMotion (Migration) で出来る様になった事
今回幾つかドキュメントに正式に記載がない事含めて試してみました。
- vCenter 7.0u1c からは "Advanced Cross vCenter Server vMotion (Migration)" が vSphere Client で操作可能に
- Cross vCenter vMotion (ライブマイグレーション) には 要 vSphere Enterprise Plus 相当のエディション
- Cross vCenter Migration (コールドマイグレーション) の場合は vSphere Standard でも OK
- vCenter 6.5 / 6.7 の環境との移行がサポートされる様子 (vCenter 6.0u3 の環境は GUI 上にインベントリが表示されず利用不可)
別の vCenter から仮想マシンを移行する「Import」機能
インベントリツリーの任意の箇所からメニュー(右クリックメニュー等)を開くと「Import VMs」というオプションが追加されています。
別の vCenter へ仮想マシンを移行する「Export」機能
Export の機能は従来の「移行(vMotion)」のメニューに新たに「Cross vCenter Server export」というオプションが追加されています(vCenter 7.0u1c 時点では日本語化が追い付いていませんでした)
それぞれのメニューを進めていくと接続先の vCenter のアドレスと認証情報を最初に入力します。
入力した情報は vSphere Client をログアウトするまで保持され、vSphere Client からログアウトすると再度入力が必要となります。
「Import」の場合は移行元のインベントリリストが表示され、複数の仮想マシンを選択して移行する事も可能。
※ vCenter 6.0u3 には認証は通るがインベントリ情報が表示されない。
但し、従来通り PowerCLI を利用した場合は vSphere 6.0u3 環境から vSphere 7.0u1 環境へ vMotion / コールドマイグレーションともに実行できましたので、既存の vSphere 6.0u3 環境からマイグレーションしたいという場合には PowerCLI での移行が今のところ可能となります。
Cross vCenter vMotion を行うための要件・制限・考慮事項
Cross vCenter vMotion は同一 SSO、異なる SSO ともに、幾つかの要件・制限・考慮事項があります。特に以下のポイントはご注意下さい。
- 通常の vMotion と同じくクラスタの EVC レベルは揃える事
- 下位 EVC → 上位 EVC への移行は可能だが、サーバーモデル・CPU モデル、環境によっては時折 NG な場合も起きうるので揃っている方が無難
- 6.7 以降で VM レベル EVC (Per-VM EVC) を利用する場合は vCenter 間の移行時に EVC 設定が保持され、移行のハードルを下げてくれるのでお勧め
- 双方の vSphere Edition は Enterprise Plus 相当である事
- vDS to vDS 間の移行時には vDS のバージョンを揃える事
- vDS to vSS への移行はできない
- 少なくとも既存の vSphere バージョンは 6.0u3 以上である事
各詳細情報は以下の KB などにまとまっております。
また、過去の VMware Japan の公式ブログでも Cross vCenter vMotion でできる事できない事がまとまっています。
vSphere Client では以下の様なエラー
※コールドマイグレーションなら Standard Edition でもエラーは出ない
PowerCLI では以下の様なエラー
PS C:\> Move-VM -VM $vm -Destination $esxi -Datastore $ds -PortGroup $pg
Move-VM : 2021/01/06 15:08:31 Move-VM The operation for the entity "VM" failed with the following message: "License not available to perform the operation.".
The VMware vSphere 6 Standard license for Host esxi60u3-01.vx.local does not include Cross Virtual Center vMotion. Upgrade the license.
vDS のバージョン違いなどネットワーク系のエラー
既定の設定では vMotion 時の仮想マシンネットワークは vSS → vSS、vSS → vDS、vDS → vDS (同一バージョン) のみがサポートされ、
vDS のバージョン違いや、vDS → vSS はエラーとなりますのでご注意下さい。
vDS → vDS のバージョン違い時のエラー
vDS → vSS 時のエラー
コールドマイグレーションの場合は vDS → vDS のバージョン違いがあっても警告のみで移行は行えます。
仮想マシンハードウェアバージョンがサポートされない場合のエラー
上位のバージョンのクラスタから下位のバージョンのクラスタに移行する仮想マシンは、ハードウェアバージョンがサポートされる必要があります。
下位バージョンのクラスタに移行する可能性がある場合はハードウェアバージョンを上げずに運用してください。
"仮想マシンのバージョンが、ホスト「<ESXi>」とのバージョン互換性を持ちません"
Per-VM EVC など vSphere 6.7 から利用できる機能を使う場合は HW Version 14 以上が必要ですが、その場合は下位の vSphere 6.5 への移行が不可となるので注意してください。
EVC レベルが合わず移行できない場合のエラー
クラスタ間で EVC レベルが異なり、特に上位の EVC レベルから 下位の EVC レベルのクラスタに vMotion する場合はエラーとなります。
"ターゲットホストは仮想マシンの現在のハードウェア要件をサポートしていません"
vSphere 6.7 以降であれば Per-VM EVC を利用する事が可能ですので、クラスタ間の EVC を揃えられない時は Per-VM EVC の利用が役立ちます。
Advanced Cross vCenter Server vMotion (Migration) を試してみる
今回の新機能は異なる SSO ドメインに属する vCenter 間での Advanced Cross vCenter Migration (コールドマイグレーション) と Advanced Cross vCenter vMotion (ホットマイグレーション) の二つの移行をサポートします。
検証で用意した環境は以下の4つのバージョンのクラスタ (旧バージョンは My VMware でダウンロード可能な各最新のバイナリ) に、エディションや vSwitch の違い、仮想ハードウェアバージョンの違いを用意してそれぞれの環境間での vMotion / Migration を試してみました。
- vCenter 7.0u1c 環境 (vSphere ESXi 7.0u1)
- vSphere Standard / vSphere Enterprise Plus
- vSS / vDS 6.6
- vCenter 6.7u3b 環境 (vSphere ESXi 6.7u3)
- vSphere Standard / vSphere Enterprise Plus
- vSS / vDS 6.6
- 仮想 HW バージョン 15
- vCenter 6.5u3a 環境 (vSphere ESXi 6.5u3)
- vSphere Standard / vSphere Enterprise Plus
- vSS / vDS 6.5
- 仮想 HW バージョン 13
- vCenter 6.0u3a 環境 (vSphere ESXi 6.0u3)
- vSphere Standard / vSphere Enterprise Plus
- vSS / vDS 6.0
- 仮想 HW バージョン 11
Advanced Cross vCenter Migration (コールドマイグレーション)
- コールドマイグレーションの場合は、Import / Export ともに双方のクラスタ環境が vSphere Standard でも OK
- vCenter 7.0u1c の vSphere Client を利用して移行が可能だったのは vCenter 6.5 以降となる様で、vCenter 6.0u3 は対象外
- PowerCLI を利用した場合は 6.0u3 環境から 7.0u1 環境へコールドマイグレーションは可能
- コールドマイグレーションの利点は、vDS のバージョンがクラスタ間で異なっている場合も UI 上は警告が表示されますが、問題なく移行出来て移行完了後の起動も問題ない
一時的なシステムの停止が可能であればコールドマイグレーションの方が転送も早く進み、vDS のバージョン違いも吸収できる利点がある - コールドマイグレーションの場合は vMotion ネットワークが双方のクラスタで疎通できなくても管理ネットワークがつながれば移行可能
Advanced Cross vCenter vMotion (ホットマイグレーション)
- Cross vCenter vMotion では vSphere Enterprise Plus のライセンスが双方のクラスタに必須 (厳密にいうと移行時に VM が配置されたホストと移行先のホストに必須)
- 仮想マシンネットワークは vSS → vSS、 vSS → vDS、 vDS → vDS (双方同一バージョン) での移行が可能。
- vCenter 7.0u1c の vSphere Client を利用して移行が可能だったのは vCenter 6.5 以降となる様で、vCenter 6.0u3 は対象外
- PowerCLI を利用した場合は 6.0u3 環境から 7.0u1 環境への vMotion は可能 (私の環境では実行できましたが正式にサポートされるものとは限らない)
Storage vMotion を伴わない Cross vCenter vMotion
共有データストアを新旧の vSphere Cluster でマウントしている場合、vCenter を跨ぐ移行であってもデータの移行は行われないため非常に高速な Cross vCenter vMotion が可能です。
NFS データストアなどネットワークストレージを活用して移行時のインパクトを抑え、vMotion の後に改めて新しいストレージ領域に Storage vMotion を行うといった事も可能です。
PowerCLI を利用した Cross vCenter vMotion / Migration
PowerCLI を利用した仮想マシンの移行は通常の vMotion と同じく Move-VM コマンドレットを利用します。
これも vSphere Client を利用した Cross vCenter vMotion と同じく、共有ストレージの有り無しともに移行が可能です。
Cross vCenter vMotion with Storage vMotion
Cross vCenter vMotion with Shared Storage
上記の2パターンの図に Move-VM に渡す値を $XX で取り込んでいますが、
ポイントは移行元、移行先の双方の vCenter に Connect-VIServer コマンドレットで接続しておき、
移行元の vCenter から対象の VM を指定、
移行先の vCenter から配置先のホスト(またはクラスタやリソースプール)、接続先 ポートグループ、保存先データストアなどを渡してあげるだけです。
※ vNIC の数や VMDK が複数別のデータストアへの格納が必要な場合には個別の設定が必要なので注意下さい。
Advanced Cross vCenter vMotion / Migration では複雑な構成の仮想マシンの移行も GUI で適切に設定できるので非常に便利だと思います。
PowerCLI を利用した VM の移行のサンプルは以下の様な形になります。
PS C:\> Connect-VIServer -Server "Old-vCenter" -Credential $cre
PS C:\> Connect-VIServer -Server "New-vCenter" -Credential $cre
PS C:\>
PS C:\> $vm = Get-VM -Server "Old-vCenter" -Name "VM Name"
PS C:\> $ds = Get-Datastore -Server "New-vCenter" -Name "Target Datastore"
PS C:\> $pg = Get-VDSwitch -Server "New-vCenter" | Get-VDPortgroup -Name "Target PortGroup"
PS C:\> $esxi = Get-VMHost -Server "New-vCenter" -name "Target Host"
PS C:\>
PS C:\> Move-VM -VM $vm -Destination $esxi -Datastore $ds -PortGroup $pg
より詳細な設定については Move-VM コマンドレットのヘルプや公式のリファレンス(
URL)を参照ください。
PowerCLI のインストール方法や vCenter への接続方法は本ブログで過去にいくつか投稿しているので併せて参照願います。
vDS のバージョンが異なるクラスタ間での vMotion を実施する
双方の環境で vDS のバージョンが揃えられない場合は KB :
https://kb.vmware.com/s/article/79446 を参照の上で、双方の vCenter に
- vCenter 6.x では
config.migrate.test.NetworksCompatibleOption.AllowMismatchedDVSwitchConfig - vCenter 7.x では
config.vmprov.enableHybridMode
を true で追加する必要あります。
但し、異なる vDS バージョン間での仮想マシンのマイグレーションでは NSX の DFW の設定や NIOC などの設定は移行されない様なので、予め対向の vDS にも同様の設定をしておく必要があります。
また、vCenter の詳細設定の編集はシステムに重大な問題を起こす可能性があるため慎重に行ってください。
推奨は双方の vDS のバージョンを一致させる事です。こちらは限定的な回避策です。
vCenter 6.x への設定
vSphere Client か PowerCLI で設定を追加します
- 名前 : config.migrate.test.NetworksCompatibleOption.AllowMismatchedDVSwitchConfig
- 値 : true
Flash Web Client の場合 (vCenter 6.5 など)
HTML5 Web Client の場合 (vCenter 6.7 など)
PowerCLI の場合
New-AdvancedSetting コマンドレットで vCenter の詳細設定を追加します。
# vCenter への接続
PS C:\> $vc65 = Connect-VIServer -Server "vCenter 6.x" -Credential $cre -Force
# 設定の追加
PS C:\> New-AdvancedSetting -Entity $vc65 -Name config.migrate.test.NetworksCompatibleOption.AllowMismatchedDVSwitchConfig -Value true
Perform operation?
Creating advanced setting 'config.migrate.test.NetworksCompatibleOption.AllowMismatchedDVSwitchConfig' on entity
'vCenter 6.x'.
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y
Name Value Type Description
---- ----- ---- -----------
config.migrate.te... true VIServer
# 設定の確認
PS C:\> Get-AdvancedSetting -Entity $vc65 -Name config.migrate.test.NetworksCompatibleOption.AllowMismatchedDVSwitchConf
ig | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.migrate.test.NetworksCompatibleOption.AllowMismatchedDVSwitchConfig true VIServer
vCenter 7.x への設定
vSphere Client か PowerCLI で設定を追加します
- 名前 : config.vmprov.enableHybridMode
- 値 : true
HTML5 Web Client の場合
PowerCLI の場合
New-AdvancedSetting コマンドレットで vCenter の詳細設定を追加します。
# vCenter への接続
PS C:\> $vc70 = Connect-VIServer -Server "vCenter 7.x" -Credential $cre -Force
# 設定の追加
PS C:\> New-AdvancedSetting -Entity $vc70 -Name config.vmprov.enableHybridMode -Value true
Perform operation?
Creating advanced setting 'config.vmprov.enableHybridMode' on entity 'vCenter 7.x'.
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y
Name Value Type Description
---- ----- ---- -----------
config.vmprov.ena... true VIServer
# 設定の確認
PS C:\> Get-AdvancedSetting -Entity $vc70 -Name config.vmprov.enableHybridMode | Format-Table -AutoSize
Name Value Type Description
---- ----- ---- -----------
config.vmprov.enableHybridMode true VIServer
異なる vDS バージョン間での vMotion の実行
設定が正しく反映されると vDS のバージョンが異なるクラスタ間でも vMotion が行えます。
以下の例では vCenter 6.5u3 + vDS 6.5 環境の仮想マシンを vCenter 7.0u1 + vDS 6.6 環境へ Advanced Cross vCenter vMotion で実施した場合。
vCenter Converter Standalone の現在
vCenter Converter Standalone は 2018年5月の vCenter Converter Standalone 6.2.0.1 (Build 8466193) のリリースを最後に開発が終了し、残念ながら現在はサポートも終了しています。
互換性のある vCenter バージョンは最終リリース日の 2018年5月時点の vCenter 6.7u1 までがリストされていますので、サポートがない状況ですが動く事は動くのでサポート終了している vSphere 5.x などの環境から仮想マシンを V2V で移行する事は可能です。
試しに今回 Cross vCenter vMotion の検証に利用した vSphere 7.0u1 の環境への移行などが可能か試してみたところ、意外にも新しい環境にも仮想マシンの移行が出来ました。
但し、移行後の仮想マシンハードウェアバージョンについては、Converter 6.2 がサポートしているバージョンより新しいものも選べてしまい、正しくコンバートされない可能性があるので注意が必要です。
試しに Version 15 で Per-VM EVC を有効にした仮想マシンを Version 18 に変換して移行したところ、初回起動に失敗し、一度 Per-VM EMC を無効にする事で起動できましたが、
仮想マシンバージョンの表示がおかしいままなので、仮想マシンハードウェアバージョンは変更せずに移行するのが良さそうです。
起動完了後、元々 Windows Server 2016 で作成したゲスト OS 情報もズレてしまい、ハードウェア情報も通常の表示ではない状態となってしまいました。
一応、vSphere 6.0u3 の環境から Version 11 の仮想マシンを vSphere 7.0u1 環境に移行し Version 15 に変換した場合は正しく移行が出来ました。
敢えて Converter を利用しなくても OVF エクスポートなど様々な移行方法を vSphere 環境はサポートしているので、Converter が上手く動かない場合は別の方法を検討してください。