Solaris のシステム管理 (デバイスとファイルシステム)

第 9 章 InfiniBand デバイスの使用 (概要/手順)

InfiniBand (IB) は、スイッチファブリックに基づく入出力テクノロジです。この技術により、入出力デバイスとホストとの接続やホスト間の通信で、帯域幅が広く応答時間の短い相互接続が提供されます。

この章の内容は以下のとおりです。

IB デバイスの使用手順については、次の節を参照してください。

動的再構成およびホットプラグについての一般的な情報については、第 6 章デバイスの動的構成 (手順)を参照してください。

InfiniBand デバイスの概要

IB デバイスは Solaris IB 連結ドライバによって管理されます。このドライバは、次の 5 種類のデバイスをサポートしています。

IB 連結ドライバは、Solaris IB デバイスマネージャー (IBDM) にサービス (このマニュアルでは「通信サービス」と呼ぶ) を照会して、IB Port、HCA_SVC、および IB VPPA デバイスを列挙します。

Port デバイスは、Host Channel Adapter (HCA) の特定のポート番号に通信サービスをバインドします。これに対し、VPPA デバイスは、ポート番号とパーティションキー番号の組み合わせに通信サービスをバインドします。HCA_SVC デバイスは、特定の HCA に通信サービスをバインドします。Port デバイスと HCA_SVC デバイスでは、パーティションキー p_key の値として常に 0 が使用されます。Port、HCA_SVC、および VPPA デバイスは、HCA の子であり、ib.conf ファイルから列挙されます。詳細は、ib(7D) のマニュアルページを参照してください。

IOC デバイスは、IB 連結ドライバの子であり、入出力ユニットの一部です。擬似デバイスも IB 連結ドライバの子です。独自の構成ファイルを持つほかのすべてのデバイスを参照して列挙されます。詳細は、ib(4) のマニュアルページを参照してください。

次の表に、IB デバイスツリーのパス名の形式を示します。

IOC デバイス 

/ib/ioc@1730000007F510C,173000007F50

IB 擬似デバイス 

/ib/<driver>@<unit-address>

IB VPPA デバイス 

/pci@1f,2000/pci@1/pci15b3,5a44@0/ibport@<port#>,<p_key>,<service>

IB HCA_SVC デバイス 

/pci@1f,2000/pci@1/pci15bc,5a44@0/ibport@0,0,<service>

IB Port デバイス 

/pci@1f,2000/pci@1/pci15b3,5a44@0/ibport@<port#>,0,<service>

HCA 

/pci@1f,2000/pci@1/pci15b3,5a44@0

IB HCA_SVC デバイスの port# および p_key は 0 です。

上記の表で、IB の構成要素はそれぞれ次のものを表します。

<services>

通信サービスです。たとえば、ipib は、ibd カーネルクライアントドライバで使用される通信サービスです。

<p_key>

使用されるパーティションキーの値です。

<port>

ポート番号です。

<unit-address>

IB カーネルクライアントドライバの driver.conf ファイルにこの名前で指定されているプロパティーを参照します。詳細は、driver.conf(4) のマニュアルページを参照してください。

IB デバイスの動的再構成 (作業マップ)

作業 

説明 

参照先 

IB デバイス情報を表示します。 

システム上の IB デバイスに関する情報を表示します。 

「IB デバイス情報を表示する方法」

IOC デバイスを構成または構成解除します。 

次のいずれかの手順に従います。 

 

 

IOC デバイスの構成を解除します。 

「IOC デバイスの構成を解除する方法」

 

IOC デバイスを構成します。 

「IOC デバイスを構成する方法」

ポートデバイスまたは VPPA デバイスを構成または構成解除します。 

次のいずれかの手順に従います。 

 

 

ポートデバイスまたは VPPA デバイスの構成を解除します。 

「IB Port、HCA_SVC、VPPA デバイスの構成を解除する方法」

 

ポートデバイスまたは VPPA デバイスを構成します。 

「IB Port、HCA_SVC、VPPA デバイスを構成する方法」

IB 擬似デバイスを構成または構成解除します。 

次のいずれかの手順に従います。 

 

 

IB 擬似デバイスの構成を解除します。 

「IB 擬似デバイスの構成を解除する方法」

 

IB 擬似デバイスを構成します。 

「IB 擬似デバイスを構成する方法」

HCA のカーネル IB クライアントを表示します。 

HCA の構成を解除する場合などに、HCA のカーネル IB クライアントの情報を表示する必要が生じることがあります。 

「HCA のカーネル IB クライアントを表示する方法」

IB HCA を構成または構成解除します。 

次のいずれかの手順に従います。 

 

 

HCA に接続されている IB デバイスの構成を解除します。 

「HCA に接続されている IB デバイスの構成を解除する方法」

 

HCA に接続されている IB デバイスを構成します。 

「IB HCA を構成する方法」

IB p_key テーブルを更新します。 

HCA ポートの p_key テーブルの情報が変更された場合は、IBTF と IBDM に通知して内部 p_key データベースを更新する必要があります。

「IB p_key テーブルを更新する方法」

IB 通信サービスを表示します。 

IBTF で現在使用されている IB 通信サービスを表示します。 

「IB 通信サービスを表示する方法」

VPPA 通信サービスを追加または削除します。 

次のいずれかの手順に従います。 

 

 

VPPA 通信サービスを追加します。 

「VPPA 通信サービスを追加する方法」

 

VPPA 通信サービスを削除します。 

「既存の IB Port、HCA_SVC、VPPA 通信サービスを削除する方法」

IOC の構成を更新します。 

すべての IOC デバイスノードのプロパティーまたは特定の IOC Ap_Id を更新できます。

「IOC の構成を更新する方法」

IB デバイスの動的再構成 (cfgadm)

cfgadm CLI だけを使用して、稼働中のシステムの IB デバイスを構成したり、構成を解除したりできます。このコマンドでは、IB ファブリックの表示、通信サービスの管理、および p_key テーブルデータベースの更新を行うこともできます。詳細は、cfgadm_ib(1M) のマニュアルページを参照してください。

cfgadm CLI は、ホストから見た IB ファブリック全体の動的再構成 (このマニュアルでは「DR」と呼ぶ) を管理します。cfgadm の操作は、Port、VPPA、HCA_SVC、IOC、擬似デバイスなど、すべての IB デバイスでサポートされています。

cfgadm コマンドは接続点 (Ap_Id) についての情報を表示します。「接続点」とは、DR 操作を行うことができるシステム内の特定の場所のことです。cfgadm でサポートされている Ap_Id の詳細は、cfgadm_ib(1M) のマニュアルページを参照してください。IB の Ap_Id は、すべて connected と表示されます。

cfgadm コマンドを使用すると、IB デバイスステータス情報を取得できます。

受容体の状態 

説明 

connected/configured/ok

デバイスは接続されており利用可能です。devinfo ノードが存在します。

connected/unconfigured/unknown

デバイスは利用不可で、このデバイスの devinfo ノードやデバイスドライバは存在しません。あるいは、このデバイスは ib 連結ドライバで使用できるように構成されませんでした。IB デバイスマネージャーではこのデバイスが認識されている可能性もあります。

次の節では、cfgadm コマンドを使用して IB デバイスの動的再構成 (DR) を行う方法について説明します。次のすべてのサンプル IB デバイス情報は、関連する情報に焦点を合わせるために一部省略されています。

ProcedureIB デバイス情報を表示する方法

prtconf コマンドを使用して IB デバイスの一般的な情報を表示できます。たとえば、次のようになります。


$ prtconf
    pci, instance #0
        pci15b3,5a44, instance #0
             ibport, instance #253
             ibport, instance #254
             ibport, instance #255
    .
    .
    .
    ib, instance #0
        ioc, instance #243
        ioc, instance #244
        ioc, instance #245
        ioc, instance #246
        ioc, instance #247
        ioc, instance #248
        ibgen, instance #249

上記の例で、pci15b3,5a44 は IB HCA を指しています。

特定の IB デバイス情報を表示するには、次の手順を使用します。

  1. スーパーユーザーになります。

  2. IB ファブリック情報を表示します。

    次に例を示します。


    # cfgadm -a
    Ap_Id                       Type       Receptacle Occupant   Condition
    ib                          IB-Fabric  connected  configured   ok
    hca:1730000008070           IB-HCA     connected  configured   ok
    ib::1730000007F5198         IB-IOC     connected  configured   ok
    ib::1730000007F5199         IB-IOC     connected  configured   ok
    ib::1730000008070,0,hnfs    IB-HCA_SVC connected  configured   ok
    ib::1730000008071,0,sdp     IB-PORT    connected  configured   ok
    ib::1730000008072,0,sdp     IB-PORT    connected  configured   ok
    ib::1730000008071,8001,ipib IB-VPPA    connected  configured   ok
    ib::1730000008072,8001,ipib IB-VPPA    connected  configured   ok
    ib::ibgen,0                 IB-PSEUDO  connected  configured   ok
    #

    上記の出力例で、構成要素はそれぞれ次のものを表します。

    Ap_Id ib::1730000008072,0,sdp

    ポート 2 に接続され、sdp サービスにバインドされている IB Port デバイスを識別しています。

    Ap_Id ib::1730000008072,8001,ipib

    ポート 2 に接続され、p_key の値として 0x8001 を使用し、ibd サービスにバインドされている IB VPPA デバイスを識別しています。

    Ap_Id ib:: 1730000008070,0,hnfs

    hnfs サービスにバインドされている IB HCA_SVC デバイスを識別しています。

    Ap_Id ib::1730000007F5198

    IOC デバイスを識別しています。

    Ap_Id ib::ibgen,0

    擬似デバイスを識別しています。

  3. 特定の IB デバイス情報を表示します。

    たとえば、IB VPPA デバイスの場合は次のようになります。


    # cfgadm -al -s "cols=ap_id:info" ib::1730000008072,8001,ipib
    Ap_Id                          Information
    ib::1730000008072,8001,ipib    ipib
    # 

    たとえば、IB HCA デバイスの場合は次のようになります。


    # cfgadm -al -s "cols=ap_id:info" hca::1730000008070
    Ap_Id                          Information
    hca::1730000008070             VID: 0x15b3, PID: 0x5a44, #ports: 0x2, 
    port1 GUID: 0x1730000008071, port2 GUID: 0x1730000008072
    # 

    上記の出力には、ポート番号とその GUID がそれぞれ表示されています。

ProcedureIOC デバイスの構成を解除する方法

システムに物理的に接続されている IB デバイスの構成を解除することはできますが、ドライバを適用することはできません。

  1. スーパーユーザーになります。

  2. IB デバイスの構成を解除します。

    次に例を示します。


    # cfgadm -c unconfigure ib::1730000007F5198
    Unconfigure the device: /devices/ib:fabric::1730000007F5198
    This operation will suspend activity on the IB device
    Continue (yes/no)? y
    #
  3. デバイスの構成が解除されていることを確認します。

    次に例を示します。


    # cfgadm -a ib::1730000007F5198
    ib::1730000007F5198         IB-IOC     connected  unconfigured unknown
    #

ProcedureIOC デバイスを構成する方法

  1. スーパーユーザーになります。

  2. IB デバイスを構成します。

    次に例を示します。


    # cfgadm -yc configure ib::1730000007F5198
    
  3. IB デバイスが構成されていることを確認します。

    次に例を示します。


    # cfgadm -al ib::1730000007F5198
    Ap_Id                Type    Receptacle  Occupant    Condition
    ib::1730000007F5198  IB-IOC  connected   configured  ok

ProcedureIB Port、HCA_SVC、VPPA デバイスの構成を解除する方法

IB Port、HCA_SVC、または VPPA デバイスをシステムから削除するには、次の手順を使用します。

次の例では VPPA デバイスの構成を解除する方法を示しますが、Port デバイスや HCA_SVC デバイスにも同じ手順を適用できます。

  1. スーパーユーザーになります。

  2. IB VPPA デバイスの構成を解除します。

    次に例を示します。


    # cfgadm -c unconfigure ib::1730000007F51,8001,ipib
    Unconfigure the device: /devices/ib:fabric::1730000007F51,8001,ipib
    This operation will suspend activity on the IB device
    Continue (yes/no)? Y
    #
  3. デバイスが接続解除されていることを確認します。

    次に例を示します。


    # cfgadm -a ib::1730000007F51,8001,ipib
    Ap_Id                       Type    Receptacle Occupant     Condition
    ib::1730000007F51,8001,ipib IB-VPPA connected  unconfigured unknown
    #

ProcedureIB Port、HCA_SVC、VPPA デバイスを構成する方法

IB Port、HCA_SVC、または VPPA デバイスをシステム上で構成するには、次の手順を使用します。

次の例では VPPA デバイスを構成する方法を示しますが、Port デバイスや HCA_SVC デバイスにも同様の手順を適用できます。

  1. スーパーユーザーになります。

  2. IB VPPA デバイスを構成します。

    次に例を示します。


    # cfgadm -c configure ib::1730000007F51,8001,ipib
    
  3. デバイスが接続されていることを確認します。

    次に例を示します。


    # cfgadm -a ib::1730000007F51,8001,ipib   
    Ap_Id                       Type     Receptacle Occupant   Condition
    ib::1730000007F51,8001,ipib IB-VPPA  connected  configured ok

    注 –

    IB Port デバイスや HCA_SVC デバイスの場合も、cfgadm による構成操作および構成解除操作は、前述の IB VPPA デバイスの例と同様です。


ProcedureIB 擬似デバイスの構成を解除する方法

IB 擬似デバイスをシステムから削除するには、次の手順を使用します。

  1. スーパーユーザーになります。

  2. IB 擬似デバイスの構成を解除します。

    次に例を示します。


    # cfgadm -c unconfigure ib::ibgen,0
    Unconfigure the device: /devices/ib:fabric::ibgen,0
    This operation will suspend activity on the IB device
    Continue (yes/no)? Y
    #
  3. デバイスが接続解除されていることを確認します。


    # cfgadm -a ib::ibgen,0
    Ap_Id                  Type      Receptacle Occupant     Condition
    ib::ibgen,0            IB-PSEUDO connected  unconfigured unknown

ProcedureIB 擬似デバイスを構成する方法

IB 擬似デバイスを構成するには、次の手順を使用します。

  1. スーパーユーザーになります。

  2. IB 擬似デバイスを構成します。

    次に例を示します。


    # cfgadm -yc configure ib::ibgen,0
    
  3. デバイスが接続されていることを確認します。

    次に例を示します。


    # cfgadm -a ib::ibgen,0
    Ap_Id                  Type       Receptacle Occupant   Condition
    ib::ibgen,0            IB-PSEUDO  connected  configured ok

ProcedureHCA のカーネル IB クライアントを表示する方法

次の IB cfgadm プラグインコマンドを呼び出すと、この HCA を使用しているカーネル IB クライアントを一覧表示できます。カーネル IB クライアントが別の HCA を使用する場合は、最後の列に「yes」と表示されます。この HCA を使用しない IB マネージャーとカーネルクライアントは、Ap_Id の列に「-」と表示されます。

  1. HCA のカーネル IB クライアントを表示します。

    次に例を示します。


    $ cfgadm -x list_clients hca:173000007F50   
    Ap_Id                       IB Client         Alternate HCA
    ib::1730000007F51D0            ibgen              no
    ib::1730000007F51D1            ibgen              no
    ib::1730000007F51,8001,ipib    ibd                no
    ib::ibgen,0                    ibgen              no
    -                              ibdm               no
    -                              ibmf               no
    -                              nfs/ib             no
    $

ProcedureHCA に接続されている IB デバイスの構成を解除する方法

IB cfgadm プラグインには、HCA の実際の DR を行う機能は含まれていません。HCA の DR を実際に行うには、基になるバスのプラグインを使用します。たとえば、PCI ベースの HCA の場合は、cfgadm_pci コマンドを使用できます。詳細は、cfgadm_pci(1M) のマニュアルページを参照してください。

ただし、IB cfgadm プラグインは、HCA のカーネル IB クライアントを一覧表示することで、HCA の DR を補助します。その手順を次に示します。

  1. スーパーユーザーになります。

  2. HCA のカーネル IB クライアントを一覧表示します。

    次に例を示します。


    # cfgadm -x list_clients hca:173000007F50   
    Ap_Id                       IB Client         Alternate HCA
    ib::1730000007F51D0            ibgen              no
    ib::1730000007F51D1            ibgen              no
    ib::1730000007F51,8001,ipib    ibd                no
    ib::ibgen,0                    ibgen              no
    -                              ibdm               no
    -                              ibmf               no
    -                              nfs/ib             no
  3. 代替 HCA を持っていないカーネル IB クライアント (Port、VPPA、HCA_SVC、IOC デバイスなど) の構成を解除します。

    次に例を示します。


    # cfgadm -x unconfig_clients hca:1730000008070
    Unconfigure Clients of HCA /devices/ib:1730000008070
    This operation will unconfigure IB clients of this HCA
    Continue (yes/no)? y
    
  4. HCA のカーネル IB クライアントの構成が解除されていることを確認します。


    # cfgadm -x list_clients hca:173000007F50   
    Ap_Id                       IB Client         Alternate HCA
    -                              ibdm               no
    -                              ibmf               no
    -                              nfs/ib             no
    #

IB HCA を構成する方法

バス固有の cfgadm プラグインを呼び出して HCA を構成します。しかし、その詳細についてはこの章では記載していません。

ProcedureIB p_key テーブルを更新する方法

追加の p_key が有効にされた場合や無効にされた場合など、HCA ポートの p_key テーブルの情報が変更された場合は、InfiniBand Transport Framework (IBTF) と IBDM に通知して内部 p_key データベースを更新する必要があります。cfgadm コマンドは、IBTF および IBDM の p_key データベースの更新を補助します。詳細は、ibtl(7D) および ibdm(7D) のマニュアルページを参照してください。

  1. スーパーユーザーになります。

  2. p_key テーブルを更新します。

    次に例を示します。


    # cfgadm -x update_pkey_tbls -y ib
    

ProcedureIB 通信サービスを表示する方法

IBTF で現在使用されている IB 通信サービスを表示するには、次の手順を使用します。

  1. スーパーユーザーになります。

  2. IB 通信サービスを表示します。

    次に例を示します。


    # cfgadm -x list_services ib
    Port communication services:
                    srp
    VPPA communication services:
                    ibd
    HCA_SVC communication services:
                    hnfs

ProcedureVPPA 通信サービスを追加する方法

新しい VPPA 通信サービスを追加するには、次の手順を使用します。

新しい HCA_SVC 通信サービスやポート通信サービスも、同様の手順で追加できます。

  1. スーパーユーザーになります。

  2. 新しい VPPA 通信サービスを追加します。

    次に例を示します。


    # cfgadm -o comm=vppa,service=new -x add_service ib
    
  3. 新しいサービスが追加されていることを確認します。

    次に例を示します。


    # cfgadm -x list_services ib
    Port communication services:
                    srp
    VPPA communication services:
                    ibd
                    new
    HCA_SVC communication services:
                    nfs_service
    #

Procedure既存の IB Port、HCA_SVC、VPPA 通信サービスを削除する方法

既存の IB Port、HCA_SVC、VPPA 通信サービスを削除するには、次の手順を使用します。

  1. スーパーユーザーになります。

  2. VPPA 通信サービスを削除します。

    次に例を示します。


    # cfgadm -o comm=vppa,service=new -x delete_service ib
    
  3. 通信サービスが削除されていることを確認します。

    次に例を示します。


    # cfgadm -x list_services ib
    Port communication services:
                    srp
    VPPA communication services:
                    ibd
    HCA_SVC communication services:
                    hnfs
    #

ProcedureIOC の構成を更新する方法

すべての IOC デバイスノードまたは特定の IOC Ap_Id についてプロパティーを更新するには、次の手順を使用します。更新できるプロパティーは次のとおりです。

これらのプロパティーの詳細は、ib(7D) のマニュアルページを参照してください。

構成がまったく変更されていない場合、これらのプロパティーは更新されません。次の例は、特定の IOC の構成を更新する方法を示しています。すべての IOC の構成を更新するには、特定の IOC Ap_Id の代わりに、静的な ib Ap_Id を指定します。

  1. スーパーユーザーになります。

  2. IOC の構成を更新します。

    次に例を示します。


    # cfgadm -x update_ioc_conf ib::1730000007F5198
    This operation can update properties of IOC devices.
    Continue (yes/no)? y
    #
  3. prtconf -v を実行して、プロパティーが更新されていることを確認します。

InfiniBand デバイスでの uDAPL アプリケーションインタフェースの使用

uDAPL (User Direct Access Programming Library) は、RDMA (Remote Direct Memory Access) に対応した InfiniBand などの相互接続を介して行われるデータセンターアプリケーションのデータメッセージングのパフォーマンス、スケーラビリティー、および信頼性を向上させる標準 API です。uDAPL インタフェースは DAT Collaborative によって定義されています。DAT Collaborative の詳細は、次の Web サイトを参照してください。

http://www.datcollaborative.org

この Solaris リリースでは、次の uDAPL 機能がサポートされます。

ProcedureuDAPL を使用可能にする方法

  1. スーパーユーザーになります。

  2. 次のパッケージがインストールされていることを確認します。必要に応じて、これらをインストールします。

    • SUNWib - Sun InfiniBand フレームワーク

    • SUNWtavor - Sun Tavor HCA ドライバ

    • SUNWipoib - Sun IP over InfiniBand

    • SUNWudaplr - DAT (Direct Access Transport) レジストリパッケージ (root)

    • SUNWudaplu - DAT (Direct Access Transport) レジストリパッケージ (usr)

    • SUNWudapltr - Tavor パッケージ用サービスプロバイダ (root)

    • SUNWudapltu - Tavor パッケージ用サービスプロバイダ (usr)

  3. IPoIB インタフェースを認識させるには、次のいずれかの手順を選択します。

    • ifconfig コマンドと datadm コマンドを使用して、インタフェースを手動で使えるようにします。

      次に例を示します。


      # ifconfig ibd1 plumb
      # ifconfig ibd1 192.168.0.1/24 up
      # datadm -a /usr/share/dat/SUNWudaplt.conf
      
    • 次の方法で、インタフェースを自動的に使えるようにします。

      • 次のファイルを作成し、適切な IP アドレスを指定します。


        /etc/hostname.ibd1
      • システムを再起動します。

DAT 静的レジストリの更新

datadm コマンドを使用して、DAT 静的レジストリ dat.conf ファイルを管理できます。このファイルの詳細は、dat.conf(4) のマニュアルページを参照してください。

datadm コマンドを使用して、サービスプロバイダを dat.conf ファイルに登録したり登録を解除したりすることもできます。詳細は、datadm(1M) のマニュアルページを参照してください。

IPoIB インタフェースアダプタの追加や削除を行なったときは、システムの現在の状態を反映させるために、datadm コマンドを実行して dat.conf ファイルを更新してください。現在インストールされているすべてのサービスプロバイダについて、インタフェースアダプタの新しいセットが再生成されます。

ProcedureDAT 静的レジストリを更新する方法

  1. スーパーユーザーになります。

  2. システムに IPoIP インタフェースアダプタを追加したり、システムから IPoIP インタフェースアダプタを削したりしたあとに、DAT 静的レジストリを更新します。


    # datadm -u
    
  3. 更新された DAT 静的レジストリを表示します。


    # datadm
    

ProcedureDAT 静的レジストリにサービスプロバイダを登録する方法

  1. スーパーユーザーになります。

  2. Mellanox Tavor ホストチャネルアダプタ用の Sun のサービスプロバイダを追加したあとに、DAT 静的レジストリを更新します。


    # datadm -a /usr/share/dat/SUNWudaplt.conf
    
  3. 更新された DAT 静的レジストリを表示します。


    # datadm -v
    

ProcedureDAT 静的レジストリからサービスプロバイダの登録を解除する方法

  1. スーパーユーザーになります。

  2. Mellanox Tavor ホストチャネルアダプタ用の Sun のサービスプロバイダをシステムから削除したあとに、DAT 静的レジストリを更新します。


    # datadm -r /usr/share/dat/SUNWudaplt.conf
    
  3. 更新された DAT 静的レジストリを表示します。


    # datadm -v