最初のインストール時に、新しい命名方法によって、物理的な場所に基づいて予測した順番で名前を割り当てます。その後は、システムに他のデバイスが追加または削除されてもデバイス名は安定した状態で保持されます。インストール時、通常、システムのマザーボード上に搭載されているデバイスに対しては、システムの筐体に割り当てられた出力ポートの番号順で最も低い番号から名前が割り当てられます。取り外し可能なスロットのデバイスに対しては、筐体に振られているスロット番号の順で、マザーボード上のデバイスの次に高い番号から名前が割り当てられます。ドライバのないデバイスに対してはこのプロセスは実行されないことを注意してください。
デバイス名の割り当て
ESXi デバイス マネージャがシステム内のデバイス情報の一覧を取得すると、デバイスの種類に応じて次のエイリアス名を割り当てることができます:ネットワーク アダプタ、ストレージ アダプタ、またはグラフィック アダプタ。
新規インストール/AutoDeploy
新規インストールの場合、またはホスト プロファイルなしでの AutoDeploy の場合、デバイス マネージャはマシンのファームウェアに問い合わせて、各ポート(一般的にはオンボードのポートおよび取り外し可能なスロット内のポート)のロケーション情報を取得し、それらのポートやスロットがシステムの筐体上でどのように番号付けられているかを把握します。ESXi は 0 から昇順に最初にオンボードのポート、次にファームウェアによる記述のないポート、そして取り外し可能なスロットのポートの順にエイリアス名を割り当てます。
システムに次のものが含める場合:
- オンボード ネットワーク ポートが2 つ
- スロット #3 にシングル ポート NIC が 1 つ
- スロット #5 にデュアル ポート NIC が 1 つ
デバイス名は次のように割り当てられます。
物理ポート | デバイスのエイリアス名 |
オンボード ポート 1 | vmnic0 |
オンボード ポート 2 | vmnic1 |
スロット #3 のポート 1 | vmnic2 |
スロット #5 のポート 1 | vmnic3 |
スロット #5 のポート 2 | vmnic4 |
これにより、同一構成のホストに新規インストールまたはデプロイされたホストで、統一デバイス名が割り当てされます。したがってホストのファームウェアが必要な情報を提供し、かつ特別な状況が発生しない限り、一般的に、この割り当て順序は記述されたルールに基づいて予測可能です。
ステートフルなホスト上では、このエイリアス名の割り当て情報は永続的なローカル ストレージに即座に記録されます。ステートレスなホスト上では、このエイリアス名の割り当て情報はホスト プロファイルの一部であるため、システム管理者がそのプロファイルを取得したときに必ず記録され保存されます。
ハードウェア交換とデバイス エイリアス
ハードウェア構成の変更では、次のルールが適用されます。
- 最初のインストール後にカードが追加または削除された場合でも、既存のポートは割り当てられた名前を保持します。
- ESXi は、新しいポートに対しては、その種類に応じて利用可能でまだ割り当てていないエイリアス名を割り当てます。
- 削除したポートに割り当てられていたエイリアス名が再利用可能になります。
- ポートを交換した場合、そのポートは元のポートと同じか、もしくは追加後に削除したポートとしてシステムに認識されます。前者の場合、新しいポートには同一のエイリアス名が割り当てられます。後者の場合は、場合により同一のエイリアス名が割り当てられることがあります。これは、古いエイリアス名が現在空いている最も低い番号のエイリアス名である場合に発生します。
- 多数のポートを持つデバイスを交換した場合、そのタイプの次に利用可能でまだ割り当てられていないエイリアス名が割り当てられます。ポート数の少ないデバイスの交換の場合、再割り当てのために未使用のエイリアス名が解放されます。
ホスト プロファイルでシステムが構成されている場合、ハードウェアの構成変更を行った後、システム管理者は更新されたプロファイルを取得しておく必要があります。
ESXi のアップグレード
AutoDeploy 構成を含め、ESXi を次のリリースにアップグレードしても、以前システムのポートに割り当てられていたエイリアス名の変更は行われません。これは以前のリリースから ESXi 5.5 以降にアップグレードした場合も含まれます。
ステートフルなシステムで、ローカル ストレージやホスト プロファイルが存在する場合は、アップグレードを行ってもエイリアス名が保持されます。ステートレスなシステムではホスト プロファイルにデバイスのエイリアス名の割り当て情報が記録されています。ただし、ESXi 5.5 より前のリリースのホスト プロファイルには、エイリアス名の割り当て情報は含まれていません。5.5 より前のリリースから 5.5 にアップグレードした場合では、ESXi がこのことを認識し、ESXi 5.5 より前の元のエイリアス名の割り当てアルゴリズムを使用することによって、このようなアップグレードによりエイリアス名の割り当てが変更されてしまわないようにします。ステートレスのアップグレード後、VMware は新しいホスト プロファイルを取得してデバイス割り当ての安定性を維持することを推奨します。
同じ種類のステートレス ホストのクラスタを、あるリリースから別のリリースにアップグレードするには:
- AutoDeploy サーバを新しい ESXi イメージでアップグレードします。
- クラスタから参照ホストを除外します。
- 新しい ESXi イメージを使用して参照ホストを再起動します。
- ホスト プロファイルを抽出します。
- デバイス名が想定していたものではない場合、ホスト プロファイルのデバイス エイリアス セクションを編集します。
- 新しいプロファイルを使用して参照ホストを再起動します。
- ホストが想定どおりに構成されたら、ホスト プロファイルを残りのホストに適用します。想定どおりに構成されなかった場合、手順 5 から作業をやり直します。
- 参照ホストをクラスタに再度参加させます。
- クラスタの残りすべてのホストを再起動します(一般的にはローリング再起動を行います)。
デバイス タイプと名前のパーシステンス
物理デバイス
ほとんどのドライバは物理 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 _DSM | PCIe ファームウェアの仕様、改訂 3.1、セクション 4.6.7、「オペレーティン グシステムにおける PCI または PCI Express デバイス命名のための DSM」 |
M2 | SMBIOS Type 41 構造 | System Management BIOS (SMBIOS) リファレンス仕様、バージョン 2.6 以降、「オンボード デバイスの拡張情報(タイプ 41)」セクション |
S1 | ACPI _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 ページ |
S3 | SMBIOS タイプ 9 構造 | System Management BIOS (SMBIOS) リファレンス仕様、バージョン 2.6 以降、「システム スロット(タイプ 9)」セクション |
P | PCI 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"
必要なエイリアスストアコマンドをすべて与えた後、クリーンシャットダウンを実行し、システムを再起動します。
注:上記の手順を実行する前に、コンソールにアクセスできることを確認してください。