系统管理指南:设备和文件系统

第 9 章 使用 InfiniBand 设备(概述/任务)

InfiniBand (IB) 是一项新的基于 Solaris 10 发行版中引入的交换光纤结构的 I/O 技术。它为将 I/O 设备连接到主机以及主机到主机通信提供了高带宽、低延迟的互连。

以下是本章中概述信息的列表。

有关与使用 IB 设备关联的过程的信息,请参见以下内容:

有关动态重新配置和热插拔的常规信息,请参见第 6 章,动态配置设备(任务)

InfiniBand 设备概述

IB 设备由 Solaris IB 结点驱动程序来管理。此驱动程序支持 5 种类型的设备:

IB 结点驱动程序可查询 Solaris IB 设备管理器 (IB Device Manager, IBDM) 中的服务(在本指南中称为通信服务),以枚举 IB 端口设备、HCA_SVC 设备和 IB VPPA 设备。

端口设备会将通信服务绑定至主机通道适配器 (Host Channel Adapter, HCA) 的给定 port#,而 VPPA 设备会将通信服务绑定至 port#, p_key# 组合。HCA_SVC 设备会将通信服务绑定至给定的 HCA。请注意,端口设备和 HCA_SVC 设备始终使用其值为零的 p_key(分区密钥)。端口、HCA_SVC 和 VPPA 设备都是 HCA 的子设备,并且通过 ib.conf 文件进行枚举。有关更多信息,请参见 ib(7D)

IOC 设备是 IB 结点驱动程序的子程序,同时也是 I/O 单元的一部分。伪设备也是 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 端口设备 

/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 的值。

下面介绍了上表中的 IB 组件:

<services>

通信服务。例如,ipibibd 内核客户机驱动程序所使用的通信服务。

<p_key>

使用的分区密钥值。

<port>

端口号。

<unit-address>

是指以其 driver.conf 文件中指定的名称命名的 IB 内核客户机驱动程序的属性。有关更多信息,请参见 driver.conf(4)

动态重新配置 IB 设备(任务列表)

任务 

说明 

参考 

显示 IB 设备信息。 

显示有关系统中的 IB 设备的信息。 

如何显示 IB 设备信息

配置或取消配置 IOC 设备。 

选择以下操作之一: 

 

 

取消配置 IOC 设备。 

如何取消配置 IOC 设备

 

配置 IOC 设备。 

如何配置 IOC 设备

配置或取消配置端口或 VPPA 设备。 

选择以下操作之一: 

 

 

取消配置端口或 VPPA 设备。 

如何取消配置 IB 端口、HCA_SVC 或 VPPA 设备

 

配置端口或 VPPA 设备。 

如何配置 IB 端口、HCA_SVC 或 VPPA 设备

配置或取消配置 IB 伪设备。 

选择以下操作之一: 

 

 

取消配置 IB 伪设备。 

如何取消配置 IB 伪设备

 

配置 IB 伪设备。 

如何配置 IB 伪设备

显示 HCA 的内核 IB 客户机。 

您可能需要显示有关 HCA 的内核 IP 客户机的信息,特别是要取消配置 HCA 时。 

如何显示 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 端口、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 操作在端口、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 命令动态重新配置 (DR) IB 设备。这些小节中的所有的样例 IB 设备的信息都已截断,以便集中介绍相关信息。

Procedure如何显示 IB 设备信息

可以使用 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 端口设备。

    Ap_Id ib::1730000008072,8001,ipib

    标识使用 p_key0x8001 与端口 2 连接并且绑定至 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。

Procedure如何取消配置 IOC 设备

可以取消配置仍然与系统物理连接的 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
    
    #

Procedure如何配置 IOC 设备

  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

Procedure如何取消配置 IB 端口、HCA_SVC 或 VPPA 设备

如果要从系统中删除 IB 端口、HCA_SVC 或 VPPA 设备,请执行以下步骤。

以下示例说明如何取消配置 VPPA 设备,但同样的过程也适用于端口设备和 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
    
    #

Procedure如何配置 IB 端口、HCA_SVC 或 VPPA 设备

如果要在系统中配置 IB 端口、HCA_SVC 或 VPPA 设备,请执行以下步骤。

以下示例说明如何配置 VPPA 设备,但类似的步骤也可用于配置端口设备和 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 端口设备和 HCA_SVC 设备的基于 cfgadm 的配置或取消配置操作与前面的 IB VPPA 设备示例类似。


Procedure如何取消配置 IB 伪设备

如果要从系统中删除 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

Procedure如何配置 IB 伪设备

执行以下步骤可配置 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

Procedure如何显示 HCA 的内核 IB 客户机

可以调用以下 IB cfgadm 插件命令来列出使用此 HCA 的内核 IB 客户机。请注意,如果内核 IB 客户机使用其他 HCA,则最后一列会显示 "yes"。不使用 HCA 的 IB 管理器和内核客户机以 Ap_Id “-”显示。

    显示 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
    
    $

Procedure如何取消配置与 HCA 连接的 IB 设备

HCA 的实际 DR 超出了 IB cfgadm 插件的范围。尽管如此,仍可以使用基础总线的插件来实现 HCA 的 DR。例如,基于 PCI 的 HCA 可以使用 cfgadm_pci 命令。有关更多信息,请参见 cfgadm_pci(1M)

但是,IB cfgadm 插件通过按以下步骤说明列出其内核 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 客户机,如端口设备、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。确切的详细信息超出了本章的范围。

Procedure如何更新 IB p_key

如果 HCA 端口的 p_key 表信息发生更改(例如,启用或禁用了其他 p_key),则需要通知 InfiniBand 传输框架 (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
    

Procedure如何显示 IB 通信服务

执行以下步骤可显示当前由 IBTF 使用的通信服务。

  1. 成为超级用户。

  2. 显示 IB 通信服务。

    例如:


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

Procedure如何添加 VPPA 通信服务

执行以下步骤可添加新的 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 端口、HCA_SVC 或 VPPA 通信服务

执行以下步骤可删除现有的 IB 端口、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
    
    #

Procedure如何更新 IOC 配置

执行以下步骤可更新所有 IOC 设备节点或特定 IOC Ap_Id 的属性。可更新的属性如下:

有关这些属性的更多信息,请参见 ib(7D)

请注意,如果配置没有更改,则这些属性可能不会更新。以下示例说明如何更新特定 IOC 的配置。如果需要更新所有 IOC 的配置,请指定静态的 ib Ap_Id,而不是特定的 IOC 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 验证是否已更新这些属性。

将 uDAPL 应用程序接口用于 InfiniBand 设备

用户直接访问编程库 (User Direct Access Programming Library, uDAPL) 是标准的 API,可以通过具有远程直接内存访问 (Remote Direct Memory Access, RDMA) 功能的互连(如 InfiniBand)来提高数据中心应用程序数据消息处理的性能、伸缩性和可靠性。uDAPL 接口由 DAT collaborative 定义。有关 DAT collaborative 的更多信息,请转至以下站点:

http://www.datcollaborative.org

Solaris 发行版提供了以下 uDAPL 功能:

Procedure如何启用 uDAPL

  1. 成为超级用户。

  2. 确认是否已安装以下软件包,也可以根据需要安装这些软件包。

    • SUNWib-Sun InfiniBand 框架

    • SUNWtavor-Sun Tavor HCA 驱动程序

    • SUNWipoib-Sun IP over InfiniBand

    • SUNWudaplr-直接访问传输 (Direct Access Transport, DAT) 注册软件包 (root)

    • SUNWudaplu-直接访问传输 (Direct Access Transport, DAT) 注册软件包 (usr)

    • SUNWudapltr – Service Provider for Tavor packages (root)

    • SUNWudapltu – Service Provider for Tavor packages (usr)

  3. 选择以下操作之一来探测 IPoIB 接口。

    • 使用 ifconfigdatadm 命令手动探测接口。

      例如:


      # 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 文件,以反映系统的当前状态。此时将重新产生当前安装的所有的一组新的接口适配器。

Procedure如何更新 DAT 静态注册表

  1. 成为超级用户。

  2. 在系统中添加或删除 IPoIP 接口适配器后,更新 DAT 静态注册表。


    # datadm -u
    
  3. 显示更新的 DAT 静态注册表。


    # datadm
    

Procedure如何在 DAT 静态注册表中注册

  1. 成为超级用户。

  2. 添加 Sun 的 Mellanox Tavor 主机通道适配器后,更新 DAT 静态注册表。


    # datadm -a /usr/share/dat/SUNWudaplt.conf
    
  3. 显示更新的 DAT 静态注册表。


    # datadm -v
    

Procedure如何从 DAT 静态注册表中注销

  1. 成为超级用户。

  2. 从系统中删除 Sun 的 Mellanox Tavor 主机通道适配器后,更新 DAT 静态注册表。


    # datadm -r /usr/share/dat/SUNWudaplt.conf
    
  3. 显示更新的 DAT 静态注册表。


    # datadm -v