InfiniBand (IB) 是一项新的基于 Solaris 10 发行版中引入的交换光纤结构的 I/O 技术。它为将 I/O 设备连接到主机以及主机到主机通信提供了高带宽、低延迟的互连。
以下是本章中概述信息的列表。
有关与使用 IB 设备关联的过程的信息,请参见以下内容:
有关动态重新配置和热插拔的常规信息,请参见第 6 章,动态配置设备(任务)。
IB 设备由 Solaris IB 结点驱动程序来管理。此驱动程序支持 5 种类型的设备:
IB 端口设备
IB 虚拟物理附着点 (virtual physical point of attachment, VPPA) 设备
IB HCA 服务 (HCA_SVC) 设备
伪设备
I/O 控制器 (I/O controller, IOC) 设备
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 组件:
通信服务。例如,ipib 是 ibd 内核客户机驱动程序所使用的通信服务。
使用的分区密钥值。
端口号。
是指以其 driver.conf 文件中指定的名称命名的 IB 内核客户机驱动程序的属性。有关更多信息,请参见 driver.conf(4)。
任务 |
说明 |
参考 |
---|---|---|
显示 IB 设备信息。 |
显示有关系统中的 IB 设备的信息。 | |
配置或取消配置 IOC 设备。 |
选择以下操作之一: |
|
取消配置 IOC 设备。 | ||
配置 IOC 设备。 | ||
配置或取消配置端口或 VPPA 设备。 |
选择以下操作之一: |
|
取消配置端口或 VPPA 设备。 | ||
配置端口或 VPPA 设备。 | ||
配置或取消配置 IB 伪设备。 |
选择以下操作之一: |
|
取消配置 IB 伪设备。 | ||
配置 IB 伪设备。 | ||
显示 HCA 的内核 IB 客户机。 |
您可能需要显示有关 HCA 的内核 IP 客户机的信息,特别是要取消配置 HCA 时。 | |
配置或取消配置 IB HCA。 |
选择以下操作之一: |
|
取消配置与 HCA 连接的 IB 设备。 | ||
配置与 HCA 连接的 IB 设备。 | ||
更新 IB p_key 表。 |
如果 HCA 端口的 p_key 表信息发生更改,则需要通知 IBTF 和 IBDM,以便更新其内部 p_key 数据库。 | |
显示 IB 通信服务 |
显示当前由 IBTF 使用的 IB 通信服务。 | |
添加或删除 VPPA 通信服务。 |
选择以下操作之一: |
|
添加 VPPA 通信服务。 | ||
删除 VPPA 通信服务。 | ||
更新 IOC 配置。 |
可以更新所有 IOC 设备节点的属性,也可以更新特定 IOC 的 Ap_Id。 |
只能使用 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 设备的信息都已截断,以便集中介绍相关信息。
可以使用 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 设备的信息。
成为超级用户。
显示 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 # |
在前面的示例输出中,组件的描述如下:
标识与端口 2 连接并且绑定至 sdp 服务的 IB 端口设备。
标识使用 p_key 值 0x8001 与端口 2 连接并且绑定至 ibd 服务的 IB VPPA 设备。
标识绑定至 hnfs 服务的 IB HCA_SVC 设备。
标识 IOC 设备。
标识伪设备。
显示特定 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。
可以取消配置仍然与系统物理连接的 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 # |
验证是否已取消配置该设备。
例如:
# cfgadm -a ib::1730000007F5198 ib::1730000007F5198 IB-IOC connected unconfigured unknown # |
成为超级用户。
例如:
# cfgadm -yc configure ib::1730000007F5198 |
验证是否已配置 IB 设备。
例如:
# cfgadm -al ib::1730000007F5198 Ap_Id Type Receptacle Occupant Condition ib::1730000007F5198 IB-IOC connected configured ok |
如果要从系统中删除 IB 端口、HCA_SVC 或 VPPA 设备,请执行以下步骤。
以下示例说明如何取消配置 VPPA 设备,但同样的过程也适用于端口设备和 HCA_SVC 设备。
成为超级用户。
例如:
# 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 # |
验证是否已断开该设备的连接。
例如:
# cfgadm -a ib::1730000007F51,8001,ipib Ap_Id Type Receptacle Occupant Condition ib::1730000007F51,8001,ipib IB-VPPA connected unconfigured unknown # |
如果要在系统中配置 IB 端口、HCA_SVC 或 VPPA 设备,请执行以下步骤。
以下示例说明如何配置 VPPA 设备,但类似的步骤也可用于配置端口设备和 HCA_SVC 设备。
成为超级用户。
例如:
# cfgadm -c configure ib::1730000007F51,8001,ipib |
验证是否已连接该设备。
例如:
# 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 设备示例类似。
如果要从系统中删除 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 # |
验证是否已断开该设备的连接。
# cfgadm -a ib::ibgen,0 Ap_Id Type Receptacle Occupant Condition ib::ibgen,0 IB-PSEUDO connected unconfigured unknown |
执行以下步骤可配置 IB 伪设备。
成为超级用户。
例如:
# cfgadm -yc configure ib::ibgen,0 |
验证是否已连接该设备。
例如:
# cfgadm -a ib::ibgen,0 Ap_Id Type Receptacle Occupant Condition ib::ibgen,0 IB-PSEUDO connected configured ok |
可以调用以下 IB cfgadm 插件命令来列出使用此 HCA 的内核 IB 客户机。请注意,如果内核 IB 客户机使用其他 HCA,则最后一列会显示 "yes"。不使用 HCA 的 IB 管理器和内核客户机以 Ap_Id “-”显示。
例如:
$ 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 $ |
HCA 的实际 DR 超出了 IB cfgadm 插件的范围。尽管如此,仍可以使用基础总线的插件来实现 HCA 的 DR。例如,基于 PCI 的 HCA 可以使用 cfgadm_pci 命令。有关更多信息,请参见 cfgadm_pci(1M)。
但是,IB cfgadm 插件通过按以下步骤说明列出其内核 IB 客户机,可协助执行 HCA DR。
成为超级用户。
例如:
# 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 |
取消配置不存在备用 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 |
验证是否已取消配置 HCA 的内核 IB 客户机。
# cfgadm -x list_clients hca:173000007F50 Ap_Id IB Client Alternate HCA - ibdm no - ibmf no - nfs/ib no # |
调用总线特定的 cfgadm 插件可配置 HCA。确切的详细信息超出了本章的范围。
如果 HCA 端口的 p_key 表信息发生更改(例如,启用或禁用了其他 p_key),则需要通知 InfiniBand 传输框架 (InfiniBand Transport Framework, IBTF) 和 IBDM,以便更新其内部 p_key 数据库。cfgadm 命令可帮助更新 IBTF 和 IBDM 的 p_key 数据库。有关更多信息,请参见 ibtl(7D) 和 ibdm(7D)。
执行以下步骤可显示当前由 IBTF 使用的通信服务。
成为超级用户。
例如:
# cfgadm -x list_services ib Port communication services: srp VPPA communication services: ibd HCA_SVC communication services: hnfs |
执行以下步骤可添加新的 VPPA 通信服务。
可以使用类似的步骤来添加新的 HCA_SVC 或端口通信服务。
成为超级用户。
例如:
# cfgadm -o comm=vppa,service=new -x add_service ib |
验证是否已添加新的服务。
例如:
# cfgadm -x list_services ib Port communication services: srp VPPA communication services: ibd new HCA_SVC communication services: nfs_service # |
执行以下步骤可删除现有的 IB 端口、HCA_SVC 或 VPPA 通信服务。
成为超级用户。
例如:
# cfgadm -o comm=vppa,service=new -x delete_service ib |
验证是否已删除该通信服务。
例如:
# cfgadm -x list_services ib Port communication services: srp VPPA communication services: ibd HCA_SVC communication services: hnfs # |
执行以下步骤可更新所有 IOC 设备节点或特定 IOC Ap_Id 的属性。可更新的属性如下:
port-list
port-entries
service-id
service-name
有关这些属性的更多信息,请参见 ib(7D)。
请注意,如果配置没有更改,则这些属性可能不会更新。以下示例说明如何更新特定 IOC 的配置。如果需要更新所有 IOC 的配置,请指定静态的 ib Ap_Id,而不是特定的 IOC Ap_Id。
成为超级用户。
例如:
# cfgadm -x update_ioc_conf ib::1730000007F5198 This operation can update properties of IOC devices. Continue (yes/no)? y # |
通过运行 prtconf -v 验证是否已更新这些属性。
用户直接访问编程库 (User Direct Access Programming Library, uDAPL) 是标准的 API,可以通过具有远程直接内存访问 (Remote Direct Memory Access, RDMA) 功能的互连(如 InfiniBand)来提高数据中心应用程序数据消息处理的性能、伸缩性和可靠性。uDAPL 接口由 DAT collaborative 定义。有关 DAT collaborative 的更多信息,请转至以下站点:
http://www.datcollaborative.org
Solaris 发行版提供了以下 uDAPL 功能:
标准 DAT 注册表库 libdat。有关更多信息,请参见 libdat(3LIB)。
标准注册文件 dat.conf。有关更多信息,请参见 dat.conf(4)。
支持多个,以便每个提供商都在各自的 service_provider.conf 文件中指定各自的 uDAPL 库路径、版本号等。有关更多信息,请参见 service_provider.conf(4)。
管理工具,即 datadm 命令,用于配置 dat.conf。有关更多信息,请参见 datadm(1M)。
新的资源控制属性 project.max-device-locked-memory,用于控制锁定的物理内存量。
使用 IPv4 或 IPv6 地址的命名方案,这些地址利用 IP 基础结构(如 IPv4 中的 ARP 以及 IPv6 中的相邻节点搜索)来进行地址解析。Solaris uDAPL 接口适配器可直接映射到 IPoIB 设备实例。
支持 DAT collaborative 团体使用的标准地址转换方案。
uDAPL 库,用于支持 Mellanox Tavor 主机通道适配器,该适配器具有向 dat.conf 注册文件自动注册的功能。
支持 SPARC 平台和 x86 平台。
成为超级用户。
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)
选择以下操作之一来探测 IPoIB 接口。
可以使用 datadm 命令来维护 DAT 静态注册表,即 dat.conf 文件。有关此文件的更多信息,请参见 dat.conf(4)。
datadm 命令还可用于注册或注销 dat.conf 文件的。有关更多信息,请参见 datadm(1M)。
添加或删除 IPoIB 接口适配器时,请运行 datadm 命令来更新 dat.conf 文件,以反映系统的当前状态。此时将重新产生当前安装的所有的一组新的接口适配器。
成为超级用户。
添加 Sun 的 Mellanox Tavor 主机通道适配器后,更新 DAT 静态注册表。
# datadm -a /usr/share/dat/SUNWudaplt.conf |
显示更新的 DAT 静态注册表。
# datadm -v |