ESXiでは、既存のポートグループを別のvSwitchに移動するにはどうすればよいですか?
これはしばしば望まれる行動のようですが、すぐにアクセスできる解決策はありません。
したがって、約8つの異なるポートグループ(それぞれに4〜6個のVMが割り当てられている)を持つ1つの大きなvSwitchがあります。ネットワークの変更により、このvSwitchを複数のvSwitchに分割する必要があります(それぞれに独自の物理アダプターがあります)。既存のポートグループ(VLAN IDを含む)を正しい(新しい)vSwitchに移動するだけです。
全体を再構成せずにこれを行う簡単な方法はありますか?これが保存されているXMLファイルがある場合、5秒間のカットアンドペースト操作になります。
免責事項:これは確かにこれを行うためのサポート/推奨される方法ではありません。プロダクションボックスでは行わないでください。安全のために、すべてのVMの電源をオフにし、vSphereを切断して実行しました。
まず、 ESXiコンソールにアクセス する必要があります。次に、これは/etc/vmware/esx.conf
を編集することで簡単に実行できます。
vSwitchごとに、次のようなエントリがあります。
/net/vswitch/child[0000]/name = "vSwitch0"
/net/vswitch/child[0000]/...
/net/vswitch/child[0001]/name = "vSwitch1"
/net/vswitch/child[0001]/...
...
ちなみに、そこでvSwitchの名前を変更できます。
ポートグループは、vSwitchesの下のノードです。
/net/vswitch/child[0000]/portgroup/child[0000]/name = "Management Network"
/net/vswitch/child[0000]/portgroup/child[0000]/...
...
/net/vswitch/child[0000]/portgroup/child[0001]/name = "VM Network"
/net/vswitch/child[0000]/portgroup/child[0001]/...
...
ポートグループをあるvSwitchから別の(---)に移動するには、その下にある/net/vswitch/child[XXXX]/
ノードを変更するだけです(portgroup
の子がすでに存在することを確認してください。つまり、ポートグループをに移動すると別のvSwitchでは、子番号を変更する必要がある場合があります。
注:関連する行(そのポートグループに対応するすべての行)のallの番号を付け直す必要があります。
注2:ポートグループにteamPolicy
エントリが存在する場合、関連するuplinks[nnnn]/pnic =
設定が実際のvmnicN
と一致することを確認する必要がある場合があります。移動先のvswitch。
ファイルを編集した後、ESXiサーバーを再起動しました:$ reboot
。代わりに再起動できるサービスやプロセスがあるかもしれませんが、再起動が最も簡単で安全な方法だと思いました。
それぞれが単一のvmnic
アップリンクを持つ2つのvSwitchと、2つのポートグループがあるとします。
vSwitch0 --> vmnic0
|--portGroupA
|--portGroupB
vSwitch1 --> vmnic1
|--portGroupC
|--portGroupD
esx.conf
の関連エントリは次のようになります。1:
# vSwitch0
/net/vswitch/child[0000]/...
/net/vswitch/child[0000]/name = "vSwitch0"
/net/vswitch/child[0000]/numPorts = "128"
# vSwitch0->portGroupA
/net/vswitch/child[0000]/portgroup/child[0000]/name = "portGroupA"
/net/vswitch/child[0000]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
# vSwitch0->portGroupB
/net/vswitch/child[0000]/portgroup/child[0001]/name = "portGroupB"
/net/vswitch/child[0000]/portgroup/child[0001]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
/net/vswitch/child[0000]/uplinks/child[0000]/pnic = "vmnic0"
# vSwitch1
/net/vswitch/child[0001]/...
/net/vswitch/child[0001]/name = "vSwitch1"
/net/vswitch/child[0001]/numPorts = "128"
# vSwitch1->portGroupC
/net/vswitch/child[0001]/portgroup/child[0000]/name = "portGroupC"
/net/vswitch/child[0001]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic1"
# vSwitch1->portGroupD
/net/vswitch/child[0001]/portgroup/child[0001]/name = "portGroupD"
/net/vswitch/child[0001]/portgroup/child[0001]/teamPolicy/uplinks[0000]/pnic = "vmnic1"
/net/vswitch/child[0001]/uplinks/child[0000]/pnic = "vmnic1"
ここで、portGroupC
をvSwitch1
からvSwitch0
に移動したいので、構成は次のようになります。
vSwitch0 --> vmnic0
|--portGroupA
|--portGroupB
|--portGroupC
vSwitch1 --> vmnic1
|--portGroupD
これを行うために、私たちは:
/net/vswitch/child[0001]/portgroup/child[0000]
で始まるすべてのportGroupC
行を識別します。これらのエントリをvSwitch0
configで上に移動します(必須ではありませんが、編集時にわかりやすくなります)。/net/vswitch/child[0001]
を/net/vswitch/child[0000]
に変更します(そのスイッチに移動するため)。/net/vswitch/child[0000]/portgroup/child[0000]
(portGroupA
)があることを認識し、portGroupC
を/portgroup/child[0002]
に変更します。uplinks[0000]/pnic =
をvmnic1
からvmnic0
に変更します(これは、そのvSwitchにサービスを提供するvmnicであるため)。最終的な構成は次のようになります。
# vSwitch0
/net/vswitch/child[0000]/...
/net/vswitch/child[0000]/name = "vSwitch0"
/net/vswitch/child[0000]/numPorts = "128"
# vSwitch0->portGroupA
/net/vswitch/child[0000]/portgroup/child[0000]/name = "portGroupA"
/net/vswitch/child[0000]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
# vSwitch0->portGroupB
/net/vswitch/child[0000]/portgroup/child[0001]/name = "portGroupB"
/net/vswitch/child[0000]/portgroup/child[0001]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
# vSwitch1->portGroupC
/net/vswitch/child[0000]/portgroup/child[0002]/name = "portGroupC"
/net/vswitch/child[0000]/portgroup/child[0002]/teamPolicy/uplinks[0000]/pnic = "vmnic0"
/net/vswitch/child[0000]/uplinks/child[0000]/pnic = "vmnic0"
# vSwitch1
/net/vswitch/child[0001]/...
/net/vswitch/child[0001]/name = "vSwitch1"
/net/vswitch/child[0001]/numPorts = "128"
# vSwitch1->portGroupD
/net/vswitch/child[0001]/portgroup/child[0000]/name = "portGroupD"
/net/vswitch/child[0001]/portgroup/child[0000]/teamPolicy/uplinks[0000]/pnic = "vmnic1"
/net/vswitch/child[0001]/uplinks/child[0000]/pnic = "vmnic1"
また、portGroupD
をportgroup/child[0001]
から[0000]
に変更したことに注意してください(0エントリがなくなったため)。
1-#
コメントはここでの説明のためだけのものです。それらが実際のファイルで機能するかどうかはわかりませんが、とにかく次の構成で驚かされます。