Skip navigation
2019

vSphere 6.0 から vCenter 間での vMotion が可能になりましたが、

標準的な vSphere Web Client / vSphere Client(旧 HTML5 Client)から実行するには

vCenter が同一の PSC / vSphere Single Sign-On(SSO)ドメインに所属している必要があります。

そして vCenter の SSO ドメインが異なる場合の vCenter 間の vMotion は、

API や PowerCLI から実行する必要があります。

vCenter Server インスタンス間の移行の要件

 

そこで、今回は PowerCLI を利用して、できるだけシンプルな構成で

Cross vCenter vMotion を実行してみます。

 

今回の環境。

vCenter 6.7 を 2台用意しました。それぞれ別の SSO ドメインに所属しているので、

それぞれ別の vSphere Client からの管理となっています。

 

移行元の vCenter の名前は、lab-nsxt-vcsa-01.go-lab.jp です。

この vCenter 配下の VM「vm05」を vMotion します。

xvc-vmotion-01.png

 

移行先の vCenter の名前は、infra-vc-01.go-lab.jp です。

xvc-vmotion-02.png

 

PowerCLI 11 を利用します。

PowerCLI> Get-Module -ListAvailable VMware.PowerCLI | select Name,Version

 

Name            Version

----            -------

VMware.PowerCLI 11.0.0.10380590

 

 

PowerCLI による Cross vCenter vMotion の実行。

今回は、PowerCLI のスクリプト実行ではなく、対話的な実行(コマンドラインの手入力)で

できるだけ簡潔に Cross vCenter vMotion を実行してみます。

 

まず、vMotion 元 / 先それぞれの vCenter に接続します。

PowerCLI> $vc_a = Connect-VIServer lab-nsxt-vcsa-01.go-lab.jp

PowerCLI> $vc_b = Connect-VIServer infra-vc-01.go-lab.jp

 

今回は、vCenter のバージョンがそろっています。

PowerCLI> $vc_a | select Name,Version,Build

 

Name                       Version Build

----                       ------- -----

lab-nsxt-vcsa-01.go-lab.jp 6.7.0   10244857

 

 

PowerCLI> $vc_b | select Name,Version,Build

 

Name                  Version Build

----                  ------- -----

infra-vc-01.go-lab.jp 6.7.0   10244857

 

 

vMotion 先として指定するため、ESXi、データストア、ポートグループを取得して、

それぞれ1件ずつ取得できていることを確認しておきます。

確実に移行先 vCenter から取得するため「-Server」で vCenter を明示的に指定しています。

 

データストアを取得します。

PowerCLI> $ds = Get-Datastore -Server $vc_b -Name "vsanDatastore"

PowerCLI> $ds | select Name,Type

 

Name          Type

----          ----

vsanDatastore vsan

 

 

今回の宛先ポートグループは、vDS の分散仮想スイッチです。

PowerCLI> $pg = Get-VDPortgroup -Server $vc_b -Name "dvpg-infra-0000"

PowerCLI> $pg | select Name

 

Name

----

dvpg-infra-0000

 

 

宛先のESXi です。

ちなみに Cross vCenter vMotion の宛先(Move-VM の -Destination)には、

ESXi(VMHost)かリソースプールを指定できます。

PowerCLI> $hv = Get-VMHost -Server $vc_b -Name "infra-esxi-01.go-lab.jp"

PowerCLI> $hv | select Name

 

Name

----

infra-esxi-01.go-lab.jp

 

 

VM「vm05」の現在の配置を確認しておきます。

「-Server」では、移行元の vCenter を指定しています。

PowerCLI> Get-VM -Server $vc_a -Name vm05 | select Name,PowerState,VMHost,@{N="vCenter";E={$_.Uid -replace ".*@|:.*",""}}| fl

 

Name       : vm05

PowerState : PoweredOn

VMHost     : lab-esxi-21.go-lab.jp

vCenter    : lab-nsxt-vcsa-01.go-lab.jp

 

 

それでは vm05 を vMotion します。

オプションで、あらかじめ取得した ESXi、データストア、ポートグループを指定しています。

PowerCLI> Get-VM -Server $vc_a -Name vm05 | Move-VM -Destination $hv -Datastore $ds -PortGroup $pg

 

vMotion 完了後に VM の配置を確認すると、期待通り vCenter 間で移動されたことがわかります。

PowerCLI> Get-VM -Name vm05 | select Name,PowerState,VMHost,@{N="vCenter";E={$_.Uid -replace ".*@|:.*",""}} | fl

 

Name       : vm05

PowerState : PoweredOn

VMHost     : infra-esxi-01.go-lab.jp

vCenter    : infra-vc-01.go-lab.jp

 

 

今回の処理を vSphere Client から見た様子。

ちなみに vMotion タスクの進捗は、PowerCLI で実行した場合でも

vSphere Client から確認することができます。

 

vMotion 実行中の、移行元 vCenter です。

xvc-vmotion-04.png

 

ほぼ同じタイミングでの、移行先 vCenter です。

タスク ステータスの進捗%は、移行元 / 先で一致するわけではありません。

xvc-vmotion-05.png

 

vCenter をまたいで、指定したホストに vMotion されました。

xvc-vmotion-06.png

 

このように、仮想マシンの vNIC や VMDK の構成がシンプルであれば、

対話的に PowerCLI を利用したとしても(PowerCLI スクリプトを作りこむことをしなくても)

簡単に Cross vCenter vMotion できます。

 

またそれぞれの vCenter / ESXi では、従来の vMotion と同様に

vmkポートでの vMotion トラフィックの有効化や、通信経路でのポート解放などを

済ませておく必要があります。

 

以上、PowerCLI で Cross vCenter vMotion を実行してみる話でした。