ESXi(vmk)疎通不能時の対応方法まとめ

スポンサーリンク

vmk疎通不能時のリストア方法についてまとめます。VSS(標準仮想スイッチ)やVDS(分散仮想スイッチ)の設定誤りによってvCenterやvmkへの疎通不能の事故はよくある話です。また、ESXiと接続されるネットワーク機器について、ESXi側かネットワーク機器側のどちらでタグをつけるかの認識相違による事故もよくある話です。このページでは、このような疎通不能事故に冷静に対応できる手法をまとめます。

リモート環境の疎通不能は心理的に焦るものがありますので、今すぐ復旧できる環境にて「わざと間違った設定を入れる」練習をしておくことをオススメします。

ネットワーク設定のロールバック

ロールバックの動作確認

ESXiはvmkへの疎通不能が生じると、一定時間後に設定がロールバックされます。ロールバックが発生する条件は「vSphere ネットワーク ロールバック」を参照ください。

動作確認のため、vmkへ疎通不能となるようなポートグループの設定誤りを投入します。すると、タスクが75%くらいで止まります。

vdsのロールバック 動作確認 01

「操作が完了できません」とのメッセージが出力されます。このような場合は、一定時間後にロールバックが実行され、疎通が回復します。

vdsのロールバック 動作確認 02

ロールバックの無効化

場合によってはロールバックを無効化したい事もあるかもしれません。例えば、ESXiを設定変更した後に、ネットワーク機器を操作するようなシナリオです。このような場合は、ESXiを設定変更した後に疎通不能になるのは意図した挙動ですので、一時的にロールバックを無効にするのも操作例のひとつになります。

ロールバックを無効にするには、「vCenter名」「設定」「詳細設定」「設定の編集」の順に押下します。

vds ロールバックの無効化 01

「config.vpxd.network.rollback」を「false」に変更し、「保存」を押下します。

vds ロールバックの無効化 02

DCUI経由の復旧

VDS(分散仮想スイッチ)のバックアップおよびリストアの有名な方法は「vSphere Distributed Switch 構成のバックアップとリストア」で紹介されるようなvCenter経由での操作です。しかし、vmkすら疎通できない状況になれば、iLOやiDRACのようなコンソール経由での復旧が必要です。以下、コンソール経由の復旧方法をまとめます。

Restore Network Settings

DCUI(ダイレクト コンソール ユーザ インターフェース)経由での復旧も可能です。この操作をすると、VSS(標準仮想スイッチ)とvmkが1つずつ作成されます。

コンソール接続し「F2」押下で以下画面を表示させます。その後、「Network Restore Option」を選びます。

vmk ネットワーク設定の初期化 01

「Restore Network Settings」を選びます。

「Restore Standard Switch」「Restore vDS」はvCenterでVDS(分散仮想スイッチ)を作成している場合のみ表示されるメニューです。

vmk ネットワーク設定の初期化 02

「F11」で設定を反映させます。

vmk ネットワーク設定の初期化 03

Restore vDS

DCUI(ダイレクト コンソール ユーザ インターフェース)経由の操作で、「Restore Standard Switch」または「Restore vDS」を選ぶと、作成済のVSSまたはVDSに対してmvkを付与することができます。

コンソール接続し「F2」押下で以下画面を表示させます。その後、「Network Restore Option」を選びます。

vDSにvmkを付与する復旧手法 01

「Restore vDS」を選びます。

vDSにvmkを付与する復旧手法 02

「Select vDS uplinks」を選びます。

vDSにvmkを付与する復旧手法 03

アップリンクをスペースキーで選んで、エンターでOKです。

「アップリンク 1」のような日本語デフォルト設定のアップリンク名の場合は文字化けします。文字化けを避けるならば英名を使用ください。

vDSにvmkを付与する復旧手法 04

「Please enter a valid VLAN ID (1-4096)」にVLAN IDを入力します。「0」を入力した場合は、VLANタグなしです。その後、「F11」押下で設定反映です。

vDSにvmkを付与する復旧手法 05

再確認の画面です。エンターで設定反映です。

vDSにvmkを付与する復旧手法 06

シェルコンソールを用いたバックアップ

リストア操作を試みる前に、ESXiがどのような状態になっていたかの記録を残したいと思うこともあるかもしれません。そのような場合は、シェルコンソールを使うとよいでしょう。

シェルコンソールを使用するためには、予めTMS(ESXi Shell)を有効にする必要があります。ESXiへhttpsでログインし、TMSを起動し、さらに自動起動を有効にします。

ヴイエムウェア社はセキュリティ上の理由によりTMS-SSHおよびTSMを無効化することを推奨しています。セキュリティ周りの設定は政治層や宗教層への影響を慎重に考える必要がありますので、このサイトで紹介する手法が顧客に受け入れられるかは、顧客文化に大きく依存します。

DCUIを用いた設定バックアップ 01

以下の画面で「Alt + F11」を押下します。すると、シェルコンソールの画面に切り替わります。

DCUIを用いた設定バックアップ 02

シェルコンソールへのログイン後、コマンドライン操作が可能です。

TSM無効の場合は、ログインコンソールが現れません。

DCUIを用いた設定バックアップ 03

「esxcfg-vswitch -l」「esxcfg-vmknic -l」でvSwtichとvmkを設定が標準出力されます。これのスクリーンショットを収めることで設定のバックアップとなるでしょう。

esxcfg-vswitch -l
esxcfg-vmknic -l

DCUIを用いた設定バックアップ 04

もし、1画面に収まらないならば、ファイル出力しておけばネットワークの復旧後に、復旧前の設定を追跡することができます。

esxcfg-vswitch -l > /tmp/vswitch.txt
esxcfg-vmknic -l > /tmp/vmknic.txt

DCUIを用いた設定バックアップ 05

vmkの手動復旧

設定誤りの復旧は、可能な限り、自動のロールバックに任せた方が良いでしょう。しかし、状況をよく確認せずに、ESXi設定誤り後にvCenterやネットワーク機器まで変更してしまい収集がつかない状況に遭遇することもあるかもしれません。

そんな状況に備え、コマンドラインでvmkを任意のポートグループに付与する復旧手法を紹介します。想定される障害シナリオとしては、vCenterがESXiより先に移行してしまい、なんとかESXiの設定変更をしてvCenterとESXi間の疎通を回復する(Layer3接続できる)状況を考えます。

詳細説明は「KB1008127」を参照ください。

状況確認

まずは現在の仮想スイッチの設定を確認します。「KB1008127」によると、「esxcli network vswitch dvs vmware list」による確認を勧めていますが、一画面に収まらないため操作に苦戦すると思われます。

[root@esxi142:~] esxcli network vswitch dvs vmware list
DSwitch01
   Name: DSwitch01
   VDS ID: 50 3c ce 2a 4e a7 5b 0c-cc bb a6 db 62 df 11 bf
   Class: cswitch
   Num Ports: 2560
   Used Ports: 5
   Configured Ports: 512
   MTU: 1500
   CDP Status: listen
   Beacon Timeout: -1
   Uplinks: vmnic1, vmnic0
   VMware Branded: true
   DVPort: 
         Client: vmnic0
         DVPortgroup ID: dvportgroup-18
         In Use: true
         Port ID: 14
      
         Client: vmnic1
         DVPortgroup ID: dvportgroup-18
         In Use: true
         Port ID: 15

DSwitch02
   Name: DSwitch02
   VDS ID: 50 3c fb 4a 12 e9 84 78-85 e0 90 df 9d 56 2a 39
   Class: cswitch
   Num Ports: 2560
   Used Ports: 6
   Configured Ports: 512
   MTU: 1500
   CDP Status: listen
   Beacon Timeout: -1
   Uplinks: vmnic2, vmnic3
   VMware Branded: true
   DVPort: 
         Client: vmnic2
         DVPortgroup ID: dvportgroup-21
         In Use: true
         Port ID: 10
      
         Client: vmnic3
         DVPortgroup ID: dvportgroup-21
         In Use: true
         Port ID: 11
      
         Client: vmk0
         DVPortgroup ID: dvportgroup-22
         In Use: true
         Port ID: 0
[root@esxi142:~] 

コンソール経由のESXI操作画面 01

ヴイエムウェア非推奨であるものの、ここはESXi4.X時代以前のコマンドラインesxcfgを使った方が読みやすい出力になります。適宜、旧コマンドを使用した方が操作しやすい場面もあるかと思います。

[root@esxi142:~] esxcfg-vswitch -l
DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch01        2560        5           512               1500    vmnic1,vmnic0

  DVPort ID                               In Use      Client      
  14                                      1           vmnic0      
  15                                      1           vmnic1      

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch02        2560        6           512               1500    vmnic2,vmnic3

  DVPort ID                               In Use      Client      
  10                                      1           vmnic2      
  11                                      1           vmnic3      
  0                                       1           vmk0        

[root@esxi142:~] 

コンソール経由のESXI操作画面 02

vDSからのアップリンク削除

もし物理NIC数に余裕がない場合や物理結線を変更できない場合は、vDSに対するアップリンクを削除し、物理NICの余剰を作らなければなりません。前述の出力の場合を想定し、vmnic0とvmnic1の割り当てを削除する例を紹介します。

構文は以下の通りです。

esxcfg-vswitch -Q <NIC名> -V <ポートID> <分散仮想スイッチ名>

vmnic0とvmnic1を削除します。

esxcfg-vswitch -Q vmnic0 -V 14 DSwitch01
esxcfg-vswitch -Q vmnic1 -V 15 DSwitch01

物理NIC割り当てが解除されたことを確認します。

[root@esxi142:~] esxcfg-vswitch -l
DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch01        2560        1           512               1500              

  DVPort ID                               In Use      Client      
  14                                      0           
  15                                      0           

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch02        2560        6           512               1500    vmnic2,vmnic3

  DVPort ID                               In Use      Client      
  10                                      1           vmnic2      
  11                                      1           vmnic3      
  0                                       1           vmk0        

[root@esxi142:~] 

標準仮想スイッチの作成

もし、標準仮想スイッチが存在しない場合は、リストア時に一時的に使用する標準仮想スイッチとポートグループを作成できます。以下はvlan2のポートグループを作成する例です。

esxcli network vswitch standard add --vswitch-name=vss_tmp
esxcli network vswitch standard portgroup add \
  --portgroup-name=pg_tmp \
  --vswitch-name=vss_tmp
esxcli network vswitch standard portgroup set \
  --portgroup-name=pg_tmp \
  --vlan-id=2

ポートグループが作成されたことを確認します。

[root@esxi142:~] esxcfg-vswitch -l
Switch Name      Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
vss_tmp          2560        1           128               1500              

  PortGroup Name                            VLAN ID  Used Ports  Uplinks   
  pg_tmp                                    2        0                     

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch01        2560        1           512               1500              

  DVPort ID                               In Use      Client      
  14                                      0           
  15                                      0           

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch02        2560        6           512               1500    vmnic2,vmnic3

  DVPort ID                               In Use      Client      
  10                                      1           vmnic2      
  11                                      1           vmnic3      
  0                                       1           vmk0        

[root@esxi142:~] 

前述の手順で作成した標準仮想スイッチにアップリンクを割り当てます。

esxcli network vswitch standard uplink add \
  --uplink-name=vmnic0 \
  --vswitch-name=vss_tmp
esxcli network vswitch standard uplink add \
  --uplink-name=vmnic1 \
  --vswitch-name=vss_tmp

アップリンクが割り当てられたことを確認します。

[root@esxi142:~] esxcfg-vswitch -l
Switch Name      Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
vss_tmp          2560        5           128               1500    vmnic0,vmnic1

  PortGroup Name                            VLAN ID  Used Ports  Uplinks   
  pg_tmp                                    2        0           vmnic0,vmnic1

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch01        2560        1           512               1500              

  DVPort ID                               In Use      Client      
  14                                      0           
  15                                      0           

DVS Name         Num Ports   Used Ports  Configured Ports  MTU     Uplinks   
DSwitch02        2560        6           512               1500    vmnic2,vmnic3

  DVPort ID                               In Use      Client      
  10                                      1           vmnic2      
  11                                      1           vmnic3      
  0                                       1           vmk0        

[root@esxi142:~] 

vmkの作成

以下のようなコマンドでvmkを作成します。

esxcli network ip interface add --interface-name=vmk1 --portgroup-name=pg_tmp
esxcli network ip interface ipv4 set \
  --interface-name=vmk1 \
  --ipv4=192.168.2.141 \
  --netmask=255.255.255.0 \
  --type=static

設定を確認します。

[root@esxi142:~] esxcli network ip route ipv4 list
Network      Netmask        Gateway      Interface  Source
-----------  -------------  -----------  ---------  ------
default      0.0.0.0        192.168.1.1  vmk0       MANUAL
192.168.1.0  255.255.255.0  0.0.0.0      vmk0       MANUAL
192.168.2.0  255.255.255.0  0.0.0.0      vmk1       MANUAL
[root@esxi142:~] 

疎通のためにstatic routeが必要ならば、以下のようなコマンドで操作します

esxcli network ip route ipv4 add \
  --network=192.168.0.0/20 \
  --gateway=192.168.2.1

設定を確認します。

[root@esxi142:~] esxcli network ip route ipv4 list
Network      Netmask        Gateway      Interface  Source
-----------  -------------  -----------  ---------  ------
default      0.0.0.0        192.168.1.1  vmk0       MANUAL
192.168.0.0  255.255.240.0  192.168.2.1  vmk1       MANUAL
192.168.1.0  255.255.255.0  0.0.0.0      vmk0       MANUAL
192.168.2.0  255.255.255.0  0.0.0.0      vmk1       MANUAL
[root@esxi142:~] 

適当なホストからvmkへの疎通が可能であることを確認します。

nec-ix01(config-GigaEthernet1.2)# ping 192.168.2.141
PING 192.168.2.1 > 192.168.2.141 56 data bytes
64 bytes from 192.168.2.141: icmp_seq=0 ttl=64 time=0.846 ms
64 bytes from 192.168.2.141: icmp_seq=1 ttl=64 time=0.450 ms
64 bytes from 192.168.2.141: icmp_seq=2 ttl=64 time=0.453 ms
64 bytes from 192.168.2.141: icmp_seq=3 ttl=64 time=0.411 ms

--- 192.168.2.141 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip (ms)  min/avg/max = 0.411/0.540/0.846
nec-ix01(config-GigaEthernet1.2)# 
タイトルとURLをコピーしました