ナビゲーションリンクをスキップ
印刷ビューの終了
| Oracle VM Server for SPARC 2.0 管理ガイド

検索範囲:

- このドキュメント
- ライブラリ全体

### PCIe エンドポイントデバイスの割り当て

Oracle VM Server for SPARC 2.0 リリースと Oracle Solaris 10 9/10 OS 以降では、個別の PCIe エンドポイントデバイス (または直接 I/O を割り当て可能なデバイス) をドメインに割り当てることができます。PCIe エンドポイントデバイスをこのように使用することで、I/O ドメインにデバイスをより細かく割り当てることが可能になります。この機能は、直接 I/O (Direct I/O、DIO) 機能により提供されます。

DIO 機能によって、システム内の PCIe バスの数よりも多くの I/O ドメインを作成できます。I/O ドメインの最大数は現在、PCIe エンドポイントデバイスの数によってのみ制限されます。

PCIe エンドポイントデバイスは、次のいずれかです。

- スロットの PCIe カード

- プラットフォームにより識別されるオンボードの PCIe デバイス

次の図は、PCIe エンドポイントデバイス `PCIE3` が I/O ドメインに割り当てられている状態を示しています。I/O ドメインのバス `pci_0` とスイッチは、いずれも仮想のものです。`PCIE3` エンドポイントデバイスには、`primary` ドメインではアクセスできなくなっています。

I/O ドメインで、`pci_0` ブロックとスイッチは、それぞれ仮想ルートコンプレックスと仮想 PCIe スイッチです。このブロックとスイッチは、`primary` ドメインの `pci_0` ブロックとスイッチに非常によく似ています。`primary` ドメインで、スロット `PCIE3` のデバイスは元のデバイスのシャドウであり、`SUNW,assigned` として識別されます。

図 6-2 PCIe エンドポイントデバイスの I/O ドメインへの割り当て

`ldm list-io` コマンドを使用して、PCIe エンドポイントデバイスの一覧を確認します。

DIO 機能により、スロットの任意の PCIe カードを I/O ドメインに割り当てることができますが、サポートされるのは特定の PCIe カードのみです。「Direct I/O Hardware and Software Requirements」 in 『Oracle VM Server for SPARC 2.0 Release Notes』を参照してください。

注 - スイッチまたはブリッジを持つ PCIe カードはサポートされません。PCIe の機能レベルの割り当てもサポートされません。サポートされていない PCIe カードを I/O ドメインに割り当てた場合、予期しない動作が引き起こされることがあります。

DIO 機能についてのいくつかの重要な詳細を以下に示します。

- この機能は、ソフトウェアのすべての要件が満たされている場合にのみ有効です。「Direct I/O Hardware and Software Requirements」 in 『Oracle VM Server for SPARC 2.0 Release Notes』を参照してください。

- `primary` ドメインに割り当てられた PCIe バスに接続されている PCIe エンドポイントのみが、DIO 機能によって他のドメインに割り当て可能です。

- DIO を使用している I/O ドメインは、`primary` ドメインの実行中のみ PCIe エンドポイントデバイスにアクセスできます。

- `primary` ドメインを再起動すると、PCIe エンドポイントデバイスが存在する I/O ドメインに影響が及びます。「`primary` ドメインの再起動」を参照してください。また、`primary` ドメインには次の役割があります。

  - PCIe バスを初期化し、バスを管理する。

  - I/O ドメインに割り当てられている PCIe エンドポイントデバイスにより引き起こされたすべてのバスエラーを処理する。PCIe バスに関連するすべてのエラーを受け取るのは `primary` ドメインのみであることに注意してください。

#### 直接 I/O のハードウェア要件とソフトウェア要件

DIO 機能を正しく使用するには、適切なソフトウェアを実行し、DIO 機能によってサポートされている PCIe カードのみを I/O ドメインに割り当てる必要があります。ハードウェアおよびソフトウェアの要件については、「Direct I/O Hardware and Software Requirements」 in 『Oracle VM Server for SPARC 2.0 Release Notes』を参照してください。

注 - プラットフォームでサポートされているすべての PCIe カードは、`primary` ドメインでサポートされます。サポートされている PCIe カードの一覧は、お使いのプラットフォームのドキュメントを参照してください。ただし、I/O ドメインに割り当てることができるのは、「直接 I/O がサポートされている PCIe カードのみ」です。

#### 直接 I/O の制限

以下の制限を回避する方法については、「PCIe エンドポイントデバイス構成の計画」を参照してください。

- 遅延再構成は、`primary` ドメインに対して PCIe エンドポイントデバイスの割り当てまたは削除を行うと開始されます。つまり、変更は `primary` ドメインの再起動後にのみ適用されます。

  `primary` ドメインを再起動すると直接 I/O に影響を及ぼすため、直接 I/O の構成変更は、直接 I/O に関連する `primary` ドメインの変更が最大限になり、`primary` ドメインの再起動が最小限になるように、十分に計画してください。

- 他のドメインに PCIe エンドポイントデバイスを割り当てるか削除する操作は、そのドメインが停止中または非アクティブの場合のみ許可されます。

#### PCIe エンドポイントデバイス構成の計画

`primary` ドメインの停止を避けるため、PCIe エンドポイントデバイスの割り当てまたは削除は、事前に慎重に計画します。`primary` ドメインの再起動は、`primary` ドメイン自体で利用可能なサービスだけでなく、PCIe エンドポイントデバイスが割り当てられている I/O ドメインにも影響を及ぼします。個々の I/O ドメインへの変更は、他のドメインに影響を及ぼしませんが、事前に計画することにより、そのドメインによって提供されるサービスへの影響を最小限に抑えることができます。

遅延再構成は、デバイスを最初に割り当てるか削除したときに開始されます。そのため、デバイスの追加または削除を引き続き行い、そのあとで `primary` ドメインを 1 回だけ再起動することで、すべての変更を有効にできます。

例については、「PCIe エンドポイントデバイスの割り当てによる I/O ドメインの作成」を参照してください。

DIO デバイス構成の計画と実行には、一般に以下のような手順が必要です。

1. システムのハードウェア構成を理解し、記録します。

   具体的には、システムの PCIe カードについて、部品番号やその他の詳細情報を記録します。

   `ldm list-io -l` および `prtdiag -v` コマンドを使用して情報を取得し、あとで参照するために保存します。

2. `primary` ドメインに必要な PCIe エンドポイントデバイスを特定します。

   たとえば、次のデバイスへのアクセスを提供する PCIe エンドポイントデバイスを特定します。

   - 起動ディスクデバイス

   - ネットワークデバイス

   - `primary` ドメインがサービスとして提供するその他のデバイス

3. I/O ドメインで使用する可能性のあるすべての PCIe エンドポイントデバイスを削除します。

   この手順により、以後 `primary` ドメインで再起動操作を実行することを避け、再起動による I/O ドメインへの影響を防ぐことができます。

   PCIe エンドポイントデバイスを削除するには、`ldm rm-io` コマンドを使用します。`rm-io` および `add-io` サブコマンドでデバイスを指定するには、デバイスパスの代わりに仮名を使用します。

   注 - PCIe エンドポイントデバイスを最初に削除したときに遅延再構成が開始されますが、デバイスの削除を引き続き行うことができます。必要なすべてのデバイスを削除した後で、`primary` ドメインを 1 回だけ再起動すれば、すべての変更が有効になります。

4. この構成をサービスプロセッサ (Service Processor、SP) に保存します。

   `ldm add-config` コマンドを使用します。

5. `primary` ドメインを再起動し、手順 3 で削除した PCIe エンドポイントデバイスを解放します。

6. 削除した PCIe エンドポイントデバイスが、`primary` ドメインに割り当てられていないことを確認します。

   `ldm list-io -l` コマンドを使用して、削除したデバイスが出力に `SUNW,assigned-device` として表示されることを確認します。

7. 物理デバイスへの直接アクセスを可能にするため、使用可能な PCIe エンドポイントデバイスをゲストドメインに割り当てます。

   この割り当てを行った後で、ドメインの移行機能を使用して別の物理システムにゲストドメインを移行することはできません。

8. ゲストドメインに対して、PCIe エンドポイントデバイスの追加または削除を行います。

   `ldm add-io` コマンドを使用します。

   I/O ドメインへの変更を最小限に抑えることで、再起動操作を減らし、そのドメインが提供するサービスの停止を避けます。

9. (省略可能) PCIe ハードウェアに変更を加えます。

   「PCIe ハードウェアの変更」を参照してください。

#### `primary` ドメインの再起動

`primary` ドメインは PCIe バスの所有者で、バスの初期化と管理の役割を担います。`primary` ドメインはアクティブで、DIO 機能をサポートするバージョンの Oracle Solaris OS を実行している必要があります。`primary` ドメインのシャットダウン、停止、または再起動を行うと、PCIe バスへのアクセスが中断されます。PCIe バスが使用できないとき、そのバス上の PCIe デバイスが影響を受け、使用不可能になることがあります。

PCIe エンドポイントデバイスを持つ I/O ドメインの実行中に `primary` ドメインが再起動された場合、I/O ドメインの動作は予測不能です。たとえば、再起動中または再起動後に、PCIe エンドポイントデバイスを持つ I/O ドメインでパニックが発生することがあります。`primary` ドメインを再起動するときは、各ドメインを手動で停止/開始する必要があります。

これらの問題を回避するには、次のいずれかの手順を実行します。

- `primary` ドメインをシャットダウンする前に、システムの PCIe エンドポイントデバイスが割り当てられているドメインすべてを手動でシャットダウンします。

  この手順により、`primary` ドメインのシャットダウン、停止、または再起動を行う前に、それらのドメインを確実にクリーンにシャットダウンします。

  PCIe エンドポイントデバイスが割り当てられているすべてのドメインを調べるには、`ldm list-io` コマンドを実行します。このコマンドにより、システムのドメインに割り当てられている PCIe エンドポイントデバイスを一覧表示できます。計画を行うときに、この情報を使用します。このコマンドによる出力の詳細な説明については、`ldm`(1M) マニュアルページを参照してください。

  見つかったそれぞれのドメインについて、`ldm stop` コマンドを実行してドメインを停止します。

- `primary` ドメインと、PCIe エンドポイントデバイスが割り当てられているドメインの間の、ドメインの依存関係を構成します。

  この依存関係により、何かの理由で `primary` ドメインが再起動したときに、PCIe エンドポイントデバイスを持つドメインが確実に自動的に再起動されます。

  それらのドメインはこの依存関係によって強制的にリセットされるため、クリーンなシャットダウンはできません。ただし、依存関係は、手動でシャットダウンされたドメインには影響を及ぼしません。

      # ldm set-domain failure-policy=reset primary
      # ldm set-domain master=primary ldom

#### PCIe ハードウェアの変更

以下の手順は、PCIe エンドポイント割り当ての構成の間違いを防ぐために役立ちます。特定のハードウェアのインストールと削除に関するプラットフォーム固有の情報については、お使いのプラットフォームのドキュメントを参照してください。

- 空のスロットに PCIe カードを取り付ける場合は、作業は必要ありません。この PCIe カードは自動的に、PCIe バスを所有するドメインにより所有されます。

  I/O ドメインに新しい PCIe カードを割り当てるには、`ldm rm-io` コマンドを使用して、まず `primary` ドメインからカードを削除します。そのあとで、`ldm add-io` コマンドを使用してカードを I/O ドメインに割り当てます。

- PCIe カードがシステムから削除され、`primary` ドメインに割り当てられるときは、作業は必要ありません。

- I/O ドメインに割り当てられている PCIe カードを削除するには、最初に I/O ドメインからデバイスを削除します。そのあとで、システムからデバイスを物理的に取り除く前に、そのデバイスを `primary` ドメインに追加します。

- I/O ドメインに割り当てられている PCIe カードを置き換えるには、新しいカードが DIO 機能でサポートされていることを確認します。

  サポートされている場合は、現在の I/O ドメインに新しいカードが自動的に割り当てられ、作業は必要ありません。

  サポートされていない場合は、`ldm rm-io` コマンドを使用して、最初にその PCIe カードを I/O ドメインから削除します。次に `ldm add-io` コマンドを使用して、その PCIe カードを `primary` ドメインに再割り当てします。そのあとで、`primary` ドメインに割り当てた PCIe カードを別の PCIe カードに物理的に置き換えます。これらの手順により、DIO 機能によってサポートされていない構成を回避することができます。

# PCIe エンドポイントデバイスの割り当てによる I/O ドメインの作成

停止時間を最小限に抑えるため、DIO の導入はすべて事前に計画します。

PCIe エンドポイントデバイスを追加して I/O ドメインを作成する例については、「PCIe エンドポイントデバイス構成の計画」を参照してください。

1. システムに現在インストールされているデバイスを特定し、保存します。

   `ldm list-io -l` コマンドの出力に、現在の I/O デバイスの構成が表示されます。`prtdiag -v` コマンドを使用すると、より詳細な情報を得ることができます。

   注 - I/O ドメインにデバイスが割り当てられた後では、デバイスの ID は I/O ドメインでのみ特定できます。

       # ldm list-io -l
       IO              PSEUDONYM       DOMAIN
       --              ---------       ------
       pci@400         pci_0           primary
       pci@500         pci_1           primary

       PCIE                 PSEUDONYM  STATUS  DOMAIN
       ----                 ---------  ------  ------
       pci@400/pci@0/pci@c  PCIE1      EMP     -
       pci@400/pci@0/pci@9  PCIE2      OCC     primary
               network@0
               network@0,1
               network@0,2
               network@0,3
       pci@400/pci@0/pci@d  PCIE3      OCC     primary
               SUNW,emlxs/fp/disk
               SUNW,emlxs@0,1/fp/disk
               SUNW,emlxs@0,1/fp@0,0
       pci@400/pci@0/pci@8  MB/SASHBA  OCC     primary
               scsi@0/tape
               scsi@0/disk
               scsi@0/sd@0,0
               scsi@0/sd@1,0
       pci@500/pci@0/pci@9  PCIE0      EMP     -
       pci@500/pci@0/pci@d  PCIE4      OCC     primary
               network@0
               network@0,1
       pci@500/pci@0/pci@c  PCIE5      OCC     primary
               SUNW,qlc@0/fp/disk
               SUNW,qlc@0/fp@0,0
               SUNW,qlc@0,1/fp/disk
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c605dbab,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6041434,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6053652,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6041b4f,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c605dbb3,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60413bc,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c604167f,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c6041b3a,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c605dabf,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60417a4,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60416a7,0
               SUNW,qlc@0,1/fp@0,0/ssd@w21000011c60417e7,0
               SUNW,qlc@0,1/fp@0,0/ses@w215000c0ff082669,0
       pci@500/pci@0/pci@8  MB/NET0    OCC     primary
               network@0
               network@0,1
               network@0,2
               network@0,3

2. 起動ディスクのデバイスパスを確認します。これは保持する必要があります。
   - UFS ファイルシステムの場合、`df /` コマンドを実行して、起動ディスクのデバイスパスを確認します。

         primary# df /
         /                  (/dev/dsk/c0t1d0s0 ): 1309384 blocks   457028 files

   - ZFS ファイルシステムの場合、まず `df /` コマンドを実行してプール名を確認してから、`zpool status` コマンドを実行して起動ディスクのデバイスパスを確認します。

         primary# df /
         /                  (rpool/ROOT/s10s_u8wos_08a):245176332 blocks 245176332 files
         primary# zpool status rpool
          zpool status rpool
           pool: rpool
          state: ONLINE
          scrub: none requested
         config:

                 NAME        STATE     READ WRITE CKSUM
                 rpool       ONLINE       0     0     0
                   c0t1d0s0  ONLINE       0     0     0

3. ブロック型デバイスが接続されている物理デバイスを確認します。

   ここでは、例としてブロック型デバイス `c0t1d0s0` を使用します。

       primary# ls -l /dev/dsk/c0t1d0s0
       lrwxrwxrwx    1 root    root    49 Jul 20 22:17 /dev/dsk/c0t1d0s0 ->
       ../../devices/pci@400/pci@0/pci@8/scsi@0/sd@0,0:a

   この例で、`primary` ドメインの起動ディスクに対応する物理デバイスは、手順 1 の `MB/SASHBA` 一覧に対応する PCIe エンドポイントデバイス (`pci@400/pci@0/pci@8`) に接続されています。このデバイスを削除すると、`primary` ドメインがブート不可能になるため、このデバイスを `primary` ドメインから削除しないでください。

4. システムで使用されているネットワークインタフェースを確認します。

       # ifconfig -a
       lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
               inet 127.0.0.1 netmask ff000000
       nxge0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 2
               inet 10.6.212.149 netmask fffffe00 broadcast 10.6.213.255
               ether 0:21:28:4:27:cc

   この例では、`nxge0` インタフェースが `primary` ドメインのネットワークインタフェースとして使用されます。

5. ネットワークインタフェースが接続されている物理デバイスを確認します。

   次のコマンドでは、`nxge0` ネットワークインタフェースを使用します。

       primary# ls -l /dev/nxge0
       lrwxrwxrwx   1 root     root          46 Jul 30 17:29 /dev/nxge0 ->
       ../devices/pci@500/pci@0/pci@8/network@0:nxge0

   この例で、`primary` ドメインによって使用されるネットワークインタフェースの物理デバイスは、手順 1 の `MB/NET0` 一覧に対応する PCIe エンドポイントデバイス (`pci@500/pci@0/pci@8`) に接続されています。そのため、このデバイスを `primary` ドメインから削除しないでください。他の PCIe デバイスはすべて、`primary` ドメインで使用されないため、他のドメインに安全に割り当てることができます。

   `primary` ドメインで使用されているネットワークインタフェースが、別のドメインに割り当てようとしているバス上にある場合は、別のネットワークインタフェースを使用するように `primary` ドメインを再構成する必要があります。

6. I/O ドメインで使用する可能性がある PCIe エンドポイントデバイスを削除します。

   この例では、`PCIE2`、`PCIE3`、`PCIE4`、および `PCIE5` エンドポイントデバイスが `primary` ドメインで使用されないため、これらを削除できます。

   1. PCIe エンドポイントデバイスを削除します。

      | 注意 - `primary` ドメインで使用されるデバイスは削除しないでください。 誤ってデバイスを削除してしまった場合は、`ldm cancel-op reconf primary` コマンドを使用して、`primary` ドメインでの遅延再構成を取り消します。

      再起動の繰り返しを避けるために、同時に複数のデバイスを削除できます。

          # ldm rm-io PCIE2 primary
          Initiating a delayed reconfiguration operation on the primary domain.
          All configuration changes for other domains are disabled until the primary
          domain reboots, at which time the new configuration for the primary domain
          will also take effect.
          # ldm rm-io PCIE3 primary
          ------------------------------------------------------------------------------
          Notice: The primary domain is in the process of a delayed reconfiguration.
          Any changes made to the primary domain will only take effect after it reboots.
          ------------------------------------------------------------------------------
          # ldm rm-io PCIE4 primary
          ------------------------------------------------------------------------------
          Notice: The primary domain is in the process of a delayed reconfiguration.
          Any changes made to the primary domain will only take effect after it reboots.
          ------------------------------------------------------------------------------
          # ldm rm-io PCIE5 primary
          ------------------------------------------------------------------------------
          Notice: The primary domain is in the process of a delayed reconfiguration.
          Any changes made to the primary domain will only take effect after it reboots.
          ------------------------------------------------------------------------------

   2. 新しい構成をサービスプロセッサ (Service Processor、SP) に保存します。

      次のコマンドにより、`dio` という名前のファイルに構成が保存されます。

          # ldm add-config dio

   3. システムを再起動し、PCIe エンドポイントデバイスの削除を反映させます。

          # reboot -- -r

7. `primary` ドメインにログインし、PCIe エンドポイントデバイスのドメインへの割り当てが解除されたことを確認します。

       # ldm list-io
       IO              PSEUDONYM       DOMAIN
       --              ---------       ------
       pci@400         pci_0           primary
       pci@500         pci_1           primary

       PCIE                 PSEUDONYM  STATUS  DOMAIN
       ----                 ---------  ------  ------
       pci@400/pci@0/pci@c  PCIE1      EMP     -
       pci@400/pci@0/pci@9  PCIE2      OCC
       pci@400/pci@0/pci@d  PCIE3      OCC
       pci@400/pci@0/pci@8  MB/SASHBA  OCC     primary
       pci@500/pci@0/pci@9  PCIE0      EMP     -
       pci@500/pci@0/pci@d  PCIE4      OCC
       pci@500/pci@0/pci@c  PCIE5      OCC
       pci@500/pci@0/pci@8  MB/NET0    OCC     primary

   注 - `ldm list-io -l` の出力で、削除された PCIe エンドポイントデバイスについて `SUNW,assigned-device` と表示されることがあります。実際の情報は `primary` ドメインから取得できなくなりますが、デバイスが割り当てられたドメインにはこの情報が存在しています。

8. PCIe エンドポイントデバイスをドメインに割り当てます。
   1. `PCIE2` デバイスを `ldg1` ドメインに追加します。

          # ldm add-io PCIE2 ldg1

   2. `ldg1` ドメインをバインドし、起動します。

          # ldm bind ldg1
          # ldm start ldg1
          LDom ldg1 started

9. `ldg1` ドメインにログインし、デバイスが使用可能であることを確認します。

   `dladm show-dev` コマンドを使用して、ネットワークデバイスが利用可能であることを確認します。そのあとで、ネットワークデバイスをドメインで使用するための構成を行います。

       # dladm show-dev
       vnet0           link: up        speed: 0     Mbps       duplex: unknown
       nxge0           link: unknown   speed: 0     Mbps       duplex: unknown
       nxge1           link: unknown   speed: 0     Mbps       duplex: unknown
       nxge2           link: unknown   speed: 0     Mbps       duplex: unknown
       nxge3           link: unknown   speed: 0     Mbps       duplex: unknown

Copyright © 2007, 2010, Oracle and/or its affiliates. All rights reserved. 著作権について |