VMware ESXi がデバイスに割り当てる名称の順序について
search cancel

VMware ESXi がデバイスに割り当てる名称の順序について

book

Article ID: 322016

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

この記事では、ESXi 5.5 以降で、最近のサーバ システムの様々な I/O ポートに対して短縮名(エイリアス名またはデバイス名と呼ばれます)を割り当てるために使用する新しいアルゴリズムについて説明します。また、必要に応じてエイリアス名を変更する方法についても説明します。ESXi では、より改良された、均一的で、安定的かつ予測可能な方法でデバイスに名称を割り当てるようになりました。
 
このドキュメントは主にネットワーク デバイスの命名規則について解説しますが、ここで記載するコンセプトやアルゴリズムは、ストレージ アダプタやグラフィック デバイスでも同様です。ネットワーク デバイスには vmnicN という形式の名称が付けられます(N は整数です)。

同様に、ストレージ アダプタには vmhbaN という形式の名称が付けられ、グラフィック デバイスには vmgfxNという形式の名称が付けられます。使用される数字についての詳細は「Additional Information」セクションを参照してください。



Symptoms:
免責事項:これは英文の記事「How VMware ESXi determines the order in which names are assigned to devices (2091560)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

Cause

ESXi 5.5 以降では、デバイスへのエイリアス名の割り当て機能は新しく設計されたデバイス マネージャの一部として実装され、デバイスへのエイリアス名の割り当てもこのドキュメントに記載のとおり新しくなりました。これは、5.5 より以前の ESXi リリースでは、物理(または論理)デバイスに対するエイリアス名の割り当てに関する情報がほとんどなかったためです。さらに、特殊なプログラム(esxcfg-init や新しい jumpstart プラグイン)によって実行されるデバイス名の割り当てでは、ケース マークと相互に関連することが困難であり、ESXi をインストールする前に新しいマシンを事前に予測することも困難です。さらに、デバイスをシステムから削除または追加して再起動した場合もその割り当ては変更されることがあります。

Resolution

最初のインストール時に、新しい命名方法によって、物理的な場所に基づいて予測した順番で名前を割り当てます。その後は、システムに他のデバイスが追加または削除されてもデバイス名は安定した状態で保持されます。インストール時、通常、システムのマザーボード上に搭載されているデバイスに対しては、システムの筐体に割り当てられた出力ポートの番号順で最も低い番号から名前が割り当てられます。取り外し可能なスロットのデバイスに対しては、筐体に振られているスロット番号の順で、マザーボード上のデバイスの次に高い番号から名前が割り当てられます。ドライバのないデバイスに対してはこのプロセスは実行されないことを注意してください。

デバイス名の割り当て
ESXi デバイス マネージャがシステム内のデバイス情報の一覧を取得すると、デバイスの種類に応じて次のエイリアス名を割り当てることができます:ネットワーク アダプタ、ストレージ アダプタ、またはグラフィック アダプタ。

 
新規インストール/AutoDeploy
新規インストールの場合、またはホスト プロファイルなしでの AutoDeploy の場合、デバイス マネージャはマシンのファームウェアに問い合わせて、各ポート(一般的にはオンボードのポートおよび取り外し可能なスロット内のポート)のロケーション情報を取得し、それらのポートやスロットがシステムの筐体上でどのように番号付けられているかを把握します。ESXi は 0 から昇順に最初にオンボードのポート、次にファームウェアによる記述のないポート、そして取り外し可能なスロットのポートの順にエイリアス名を割り当てます。

システムに次のものが含める場合:
  • オンボード ネットワーク ポートが2 つ
  • スロット #3 にシングル ポート NIC が 1 つ
  • スロット #5 にデュアル ポート NIC が 1 つ

デバイス名は次のように割り当てられます。

物理ポートデバイスのエイリアス名
オンボード ポート 1vmnic0
オンボード ポート 2vmnic1
スロット #3 のポート 1vmnic2
スロット #5 のポート 1vmnic3
スロット #5 のポート 2vmnic4
 
これにより、同一構成のホストに新規インストールまたはデプロイされたホストで、統一デバイス名が割り当てされます。したがってホストのファームウェアが必要な情報を提供し、かつ特別な状況が発生しない限り、一般的に、この割り当て順序は記述されたルールに基づいて予測可能です。
 
ステートフルなホスト上では、このエイリアス名の割り当て情報は永続的なローカル ストレージに即座に記録されます。ステートレスなホスト上では、このエイリアス名の割り当て情報はホスト プロファイルの一部であるため、システム管理者がそのプロファイルを取得したときに必ず記録され保存されます。
 
ハードウェア交換とデバイス エイリアス
ハードウェア構成の変更では、次のルールが適用されます。
  • 最初のインストール後にカードが追加または削除された場合でも、既存のポートは割り当てられた名前を保持します。
  • ESXi は、新しいポートに対しては、その種類に応じて利用可能でまだ割り当てていないエイリアス名を割り当てます。
  • 削除したポートに割り当てられていたエイリアス名が再利用可能になります。
  • ポートを交換した場合、そのポートは元のポートと同じか、もしくは追加後に削除したポートとしてシステムに認識されます。前者の場合、新しいポートには同一のエイリアス名が割り当てられます。後者の場合は、場合により同一のエイリアス名が割り当てられることがあります。これは、古いエイリアス名が現在空いている最も低い番号のエイリアス名である場合に発生します。
  • 多数のポートを持つデバイスを交換した場合、そのタイプの次に利用可能でまだ割り当てられていないエイリアス名が割り当てられます。ポート数の少ないデバイスの交換の場合、再割り当てのために未使用のエイリアス名が解放されます。

ホスト プロファイルでシステムが構成されている場合、ハードウェアの構成変更を行った後、システム管理者は更新されたプロファイルを取得しておく必要があります。

ESXi のアップグレード
AutoDeploy 構成を含め、ESXi を次のリリースにアップグレードしても、以前システムのポートに割り当てられていたエイリアス名の変更は行われません。これは以前のリリースから ESXi 5.5 以降にアップグレードした場合も含まれます。
 
ステートフルなシステムで、ローカル ストレージやホスト プロファイルが存在する場合は、アップグレードを行ってもエイリアス名が保持されます。ステートレスなシステムではホスト プロファイルにデバイスのエイリアス名の割り当て情報が記録されています。ただし、ESXi 5.5 より前のリリースのホスト プロファイルには、エイリアス名の割り当て情報は含まれていません。5.5 より前のリリースから 5.5 にアップグレードした場合では、ESXi がこのことを認識し、ESXi 5.5 より前の元のエイリアス名の割り当てアルゴリズムを使用することによって、このようなアップグレードによりエイリアス名の割り当てが変更されてしまわないようにします。ステートレスのアップグレード後、VMware は新しいホスト プロファイルを取得してデバイス割り当ての安定性を維持することを推奨します。

同じ種類のステートレス ホストのクラスタを、あるリリースから別のリリースにアップグレードするには:

  1. AutoDeploy サーバを新しい ESXi イメージでアップグレードします。
  2. クラスタから参照ホストを除外します。
  3. 新しい ESXi イメージを使用して参照ホストを再起動します。
  4. ホスト プロファイルを抽出します。
  5. デバイス名が想定していたものではない場合、ホスト プロファイルのデバイス エイリアス セクションを編集します。
  6. 新しいプロファイルを使用して参照ホストを再起動します。
  7. ホストが想定どおりに構成されたら、ホスト プロファイルを残りのホストに適用します。想定どおりに構成されなかった場合、手順 5 から作業をやり直します。
  8. 参照ホストをクラスタに再度参加させます。
  9. クラスタの残りすべてのホストを再起動します(一般的にはローリング再起動を行います)。
 
デバイス タイプと名前のパーシステンス

物理デバイス
ほとんどのドライバは物理 PCI ファンクションに対して 1 対 1 でマッピングされたデバイス オブジェクトを生成します。エイリアス名は、これらの物理デバイスに対して 0 から始まる範囲で予約されます。一部のドライバが作成するオブジェクトは、物理ファンクションに対して 1 対 1 でマッピングされません。ネイティブ ドライバは、これらのエイリアス名をローカル ストレージ(ステートフル システム)内またはホスト プロファイル内に永続的に記録します。

 
論理デバイス
ESXi のネイティブ ドライバのフレームワーク上でビルドされたドライバは、PCI ファンクションに対応しない追加の論理デバイスを生成することができます。これらのデバイスには、ドライバが最初にそれを生成した時点で、高い番号のエイリアス名が指定しない順序で割り当てられます。物理デバイスのエイリアス名と同じように、論理デバイスのエイリアス名は、再起動後もローカル ストレージ内またはホスト プロファイル内に永続的に記録されます。たとえば、PCI クラスによってネットワーク デバイスとして認識され、ネイティブ ドライバがネットワーク アップリンク オブジェクトと iSCSI ストレージ アダプタ オブジェクトの両方を検出する CNA (Converged Network Adapter) を考えます。この場合、ネットワーク アップリンクは物理デバイスとしておそらく vmnic1 などのエイリアス名となり、iSCSI アダプタは論理デバイスとしておそらく vmhba64 などのエイリアス名となります。

 
疑似論理デバイス
ESXi の Linux ドライバ互換レイヤである vmklinux 上でビルドされたドライバは、疑似論理デバイスを生成することができます。通常の論理デバイスと同じく、これらのデバイスには PCI ファンクションが 1 対 1 で対応していません。通常、これらのエイリアス名は再起動後のパーシステンスが保証されません。しかし、一部の vmklinux ドライバでは、対応する永続的な物理デバイスのエイリアス名に固定パターンの数値を挿入するなど、パーシステンスを提供する特別なアルゴリズムを使用することができます。他の vmklinux ドライバについては、疑似論理デバイスのエイリアス名は、通常、確定的な方法で割り当てられるため、システムにインストールされたハードウェアおよびドライバの組み合わせが変更されない限り再起動を実行しても変わりませんが、上述のとおりこれは保証されたものではありません。

 
特別な状況
このセクションでは、想定されない結果となりうる特殊な状況について解説します。ただし、すべての状況を網羅したものではありません。

ドライバのないデバイス
すでに述べたように、エイリアス名はドライバのあるデバイスにのみ割り当てられます。たとえば、ESXi リリースがあるマシン上に最初にインストールされたときに、マシン上のどれか 1 つの NIC に対するドライバがなかった場合、その NIC のポートには vmnic エイリアス名が割り当てられません。この一連の処理において、それらのデバイスには番号は予約されません。後に ESXi が NIC をサポートするリリースにアップグレードされる場合、それらのポートには、NIC が新たに追加された場合と同様に、その時点で未使用のものから順番にエイリアス名が割り当てられます。これにより、同じマシンに新たに ESXi リリースをインストールした場合とは、エイリアス名の順序が異なる結果になる場合があります。

 
オンボード デバイスの識別
一部のシステムでは、マザーボードに統合されたとユーザーが思っているポートが、実際には取り外し可能な PCI/PCIe カードである場合があります。たとえば、少なくとも 1 つのベンダのシステム上で、いくつかのネットワーク ポートは、ベース システムに標準装備され、エンド顧客から見ればオンボードであるように見えるものでも、実際には工場で高い番号のスロットに装着された PCIe カードである場合があります。そのため、それらのポートには、他のスロットに追加された NIC よりも後の vmnic エイリアス名が割り当てられることがあります。

もう 1 つの例としては、ブレード システム上ではしばしば、どのデバイスがオンボードでどのデバイスが取り外し可能なのかを区別することが困難な場合があります。ブレード シャーシでは、デバイスを異なるブレード間で移動する手段を提供していることがあります。また、複数の仮想デバイスを生成または削除し、異なるブレードに割り当てる手段を提供していることもあります。これらのケースでは、次のセクションで説明する詳細ルールが適用されます。

一般的に、ハードウェア ベンダーは、単一のブレードに接続されたデバイスに対する M1/M2 情報や、割り当て可能なデバイスに対する S1/S2/S3 の情報を提供しています。あるいは、ハードウェア ベンダーは、ESXi が割り当てる名称の順序を完全に制御できる M1 情報を全デバイスに対して提供することもできます。M1、M2、S1、S2、および S3 のソース タグ情報の説明については、次の [デバイス情報および命名について] のセクションを参照してください。

デバイス情報および命名について
ESXi はドライバを持つすべてのデバイスに名前を割り当てます。

 
情報ソース
ESXi はデバイスのロケーション情報をこれらのソースから取得します。各デバイスごとに、1 つのソースから情報が見つかるまで順番にソースが調査されます。
 
タグデバイス データ ソースデバイス情報の仕様
M1デバイス命名の PCIe _DSMPCIe ファームウェアの仕様、改訂 3.1、セクション 4.6.7、「オペレーティン グシステムにおける PCI または PCI Express デバイス命名のための DSM」
M2SMBIOS Type 41 構造System Management BIOS (SMBIOS) リファレンス仕様、バージョン 2.6 以降、「オンボード デバイスの拡張情報(タイプ 41)」セクション
S1ACPI _SUN オブジェクトAdvanced Configuration and Power Interface (ACPI) 仕様、改訂 5.0、セクション 6.1.11 _SUN(スロットユーザー番号)PCI ファンクションの _SUN メソッドが最初に試行され、存在しない場合は、同じ PCI デバイスのファンクション 0 の _SUN メソッドが試行される
S2レガシーの $PIR テーブルレガシーの $PIR テーブル:PCI システム アーキテクチャ、第 4 版、MindShare, Inc.、Tom Shanley および Don Anderson 共著、「割り込みルーティングテーブル」 233-238 ページ
S3SMBIOS タイプ 9 構造System Management BIOS (SMBIOS) リファレンス仕様、バージョン 2.6 以降、「システム スロット(タイプ 9)」セクション
PPCI SBDF アドレスデバイスの現在の PCI SBDF (segment:bus:device.function) アドレス
 
ソース タグ M1 および M2 は、通常はオンボードのデバイスに付与されますが、ソース タグ M1 は任意のデバイスに付与される場合もあります。ソース タグ S1~S3 は取り外し可能なスロットのデバイスに付けられます。ソース タグ P は実際のロケーション情報を提供せず、システムに他のデバイスを追加または削除した場合に変更される可能性もあるため、このタグは最後の手段としてのみ使用されます。
 
命名について
これらの情報ソースがドライバを持つすべてのデバイスに対して調査された後、各タイプのデバイスが順序付けされ、以下の順番で命名されます。
  • M1 または M2 タグから情報が得られたデバイス。これは、その情報によって得られたポート番号順で命名されます。
  • P タグから情報が得られたデバイス。これは、多くの場合、ハードウェア プラットフォーム ベンダーが M1 または M2 タグ情報を提供していないオンボードのデバイスです。
  • S1、S2、または S3 タグから情報が得られたデバイス。これは、スロット番号順で命名されます。一般的なマルチポートの NIC など、同じスロットに複数のデバイスがある場合は、スロットにあるデバイス PCI SBDF 順に順序付けされます。

ESXi ホストによって割り当てられた名前の変更

ESXi ホストによって割り当てられたエイリアスを変更する場合があります。手順を以下に示します。

  • ホスト プロファイルを使用している場合

    影響を受けるシステムがホスト プロファイルに接続されている場合は、プロファイルの [全般システム設定] [デバイス エイリアス名の構成] コンポーネントを編集します。次に、影響を受ける ESXi ホストを修正します。

    :修正を完了するには、ホストを再起動する必要があります。

     
  • ホスト プロファイルを使用していない場合

    ESXi シェルから次のコマンドを実行して、デバイスの場所へのエイリアス名の現在の割り当てを表示します。

    localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias list

    出力

    Bus type  Bus address          Alias
    ------------------------------------
    pci       s00000007.00         vmnic2
    pci       s00000008.00         vmnic4
    pci       s00000008.01         vmnic5
    pci       s00000008.03         vmnic7
    pci       s00000008.02         vmnic6
    pci       s00000002.01         vmnic1
    pci       s00000002.00         vmnic0
    pci       s00000007.01         vmnic3
    logical   pci#s00000008.02#0   vmnic6
    logical   pci#s00000008.00#0   vmnic4
    logical   pci#s00000008.01#0   vmnic5
    logical   pci#s00000008.03#0   vmnic7
 
NICがネイティブドライバで制御されている場合、実際にはデバイスに関連付けられた2つのエイリアスがあります。
pciデバイスのためのpciエイリアスとアップリンク論理デバイスのための論理エイリアスです。
例として、ここではvmnic7のための2つのエイリアスを見てみましょう。

localcli --plugin-dir /usr/lib/vmware/esxcli/int deviceInternal alias list | grep vmnic7
pci       s00000008.03        vmnic7
logical   pci#s00000008.03#0  vmnic7

再割り当てする各エイリアスについては、コマンドを使用します:

localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type pci --alias vmnicN --bus-address B

論理エイリアスが存在する場合、pciエイリアスと論理エイリアスの両方をリネームする必要があります。

localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type logical --alias vmnicN --bus-address B

ここで、vmnicNとBは作成したい新しい割り当てです。
例えば、下記の例では、コマンドを使用してvmnic0とvmnic7を入れ替えることができます。

localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type pci --alias vmnic0 --bus-address s00000008.03
localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type pci --alias vmnic7 --bus-address s00000002.00
localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type logical --alias vmnic0 --bus-address "pci#s00000008.03#0"
localcli --plugin-dir /usr/lib/vmware/esxcli/int/ deviceInternal alias store --bus-type logical --alias vmnic7 --bus-address "pci#s00000002.00#0"

必要なエイリアスストアコマンドをすべて与えた後、クリーンシャットダウンを実行し、システムを再起動します。


注:上記の手順を実行する前に、コンソールにアクセスできることを確認してください。


Additional Information

デバイスの番号に関する情報
現在、次のエイリアス番号の割り当てが使用されます。
  • 物理 PCI エイリアス名の場合:
    • vmnic:0-31、64-127
    • vmhba:0-31
    • vmgfx:0-31
       
  • ネイティブ ドライバの論理エイリアス名の場合:
    • vmnic:128-1000000
    • vmhba:64-95, 128-159, ...
    • vmgfx:32 - 1000000
       
  • vmlinux 論理エイリアス名の場合:
    • vmnic:32-63、1000000-MAX
    • vmhba:32-63、96-127, ...

物理 PCI ファンクション数としては、VMware は最大 32 個の HBA、32 個の GFX アダプタ、および 96 個の NIC をサポートします。

複数の疑似論理デバイスに対するエイリアス名割り当て
一部のデバイスでは、同じ PCI アドレスで複数のポートを使用できるものがあります。ここでは、そのような場合にエイリアス名を割り当てるのに使用されるアルゴリズムについて簡単に説明します。
  • 要件:
    • 標準的な命名規則に準拠すること(例:vmnicX、ここで X は整数)
    • 論理アップリンクが再起動されても変更されないこと
       
  • アルゴリズム:同じ種類の複数のポートを持つデバイスの場合、ここではポート 1、ポート 2 などの相対的なポート番号によって示されます。
    1. ポート 1 - PCI エイリアス名を割り当てます(数字は 0-31 または 64-127 の範囲)。
    2. ポート 2(およびそれ以降)- 手順 3 で説明するように、桁数が 100 万のエイリアス番号が割り当てられます。
    3. 追加のポートのパーシステンスが維持されるよう、この方法を実行します。次のように式を用いて各エイリアスの番号が決定されます。

      1000000 + (pciIndex*100) + p#

      ここで、

      pciIndex:PCI エイリアス名の番号です。
      p#:ポートの相対番号です。

      :PCIe ファンクションに vmnic4 という名前が割り当てられた場合:
      lspci : 00:04:00.0 - vmnic4
      となり、
      ポート 1 への割り当ては vmnic4
      ポート 2 への割り当ては vmnic1000402
      ポート 3 への割り当ては vmnic1000403

    この方法によって、1 つの PCIe PF(物理ファンクション)に対して最大 100 個の疑似デバイスを定義することができます。

VMware ESXi がデバイスに割り当てる名称の順序について
VMware ESXi 如何确定为设备分配名称的顺序