搜索

13.5.5. 连接到远程 Linux SRP 目标

download PDF
SCSI RDMA 协议(SRP)是一个网络协议,它允许系统使用 RDMA 访问附加到另一个系统的 SCSI 设备。要允许 SRP 启动器在 SRP 目标端连接 SRP 目标,您必须为启动器中使用的主机通道适配器(HCA)端口添加访问控制列表(ACL)条目。
HCA 端口的 ACL ID 不唯一。ACL ID 取决于 HCA 的 GID 格式。使用同一驱动程序的 HCA(如 exampleib_qib )可以具有不同的 GID 格式。ACL ID 还取决于您启动连接请求的方式。

连接到远程 Linux SRP 目标:高级别概述

  1. 准备目标侧:
    1. 创建存储后端。例如,获取 /dev/sdc1 分区:
      /> /backstores/block create vol1 /dev/sdc1
    2. 创建 SRP 目标:
      /> /srpt create 0xfe80000000000000001175000077dd7e
    3. 根据步骤中创建的后端创建一个 LUN:
      /> /srpt/ib.fe80000000000000001175000077dd7e/luns create /backstores/block/vol1
    4. 为远程 SRP 客户端创建节点 ACL:
      /> /srpt/ib.fe80000000000000001175000077dd7e/acls create 0x7edd770000751100001175000077d708
      请注意,srp_daemon 和ibsrpdm 的节点 ACL 不同。
  2. 为客户端发起与 srp_daemon 或 ibsrpdm 的 SRP 连接:
    [root@initiator]# srp_daemon -e -n -i qib0 -p 1 -R 60 &
    [root@initiator]# ibsrpdm -c -d /dev/infiniband/umad0 > /sys/class/infiniband_srp/srp-qib0-1/add_target
  3. 可选。建议您使用不同的工具(如 lsscsidmesg )验证 SRP 连接。

过程 13.3. 使用 srp_daemon 或 ibsrpdm 连接到远程 Linux SRP 目标

  1. 对目标使用 ibstat 命令,以确定 状态 和端口 GUID 值。HCA 必须处于 Active 状态。ACL ID 基于 端口 GUID:
    [root@target]# ibstat
    CA 'qib0'
    	CA type: InfiniPath_QLE7342
    	Number of ports: 1
    	Firmware version:
    	Hardware version: 2
    	Node GUID: 0x001175000077dd7e
    	System image GUID: 0x001175000077dd7e
    	Port 1:
    		State: Active
    		Physical state: LinkUp
    		Rate: 40
    		Base lid: 1
    		LMC: 0
    		SM lid: 1
    		Capability mask: 0x0769086a
    		Port GUID: 0x001175000077dd7e
    		Link layer: InfiniBand
    
  2. 获取 SRP 目标 ID,它基于 HCA 端口的 GUID。请注意,您需要将专用磁盘分区作为 SRP 目标的后端,如 /dev/sdc1。以下命令替换 fe80 的默认前缀,删除冒号,并在字符串的其余部分中添加新前缀:
    [root@target]# ibstatus | grep '<default-gid>' | sed -e 's/<default-gid>://' -e 's/://g' | grep 001175000077dd7e
    fe80000000000000001175000077dd7e
    
  3. 使用 targetcli 工具在块设备中创建 LUN vol1,创建一个 SRP 目标并导出 LUN:
    [root@target]# targetcli
    
    
    /> /backstores/block create vol1 /dev/sdc1
    Created block storage object vol1 using /dev/sdc1.
    /> /srpt create 0xfe80000000000000001175000077dd7e
    Created target ib.fe80000000000000001175000077dd7e.
    /> /srpt/ib.fe80000000000000001175000077dd7e/luns create /backstores/block/vol1
    Created LUN 0.
    /> ls /
    o- / ............................................................................. [...]
      o- backstores .................................................................. [...]
      | o- block ...................................................... [Storage Objects: 1]
      | | o- vol1 ............................... [/dev/sdc1 (77.8GiB) write-thru activated]
      | o- fileio ..................................................... [Storage Objects: 0]
      | o- pscsi ...................................................... [Storage Objects: 0]
      | o- ramdisk .................................................... [Storage Objects: 0]
      o- iscsi ................................................................ [Targets: 0]
      o- loopback ............................................................. [Targets: 0]
      o- srpt ................................................................. [Targets: 1]
        o- ib.fe80000000000000001175000077dd7e ............................... [no-gen-acls]
          o- acls ................................................................ [ACLs: 0]
          o- luns ................................................................ [LUNs: 1]
            o- lun0 ............................................... [block/vol1 (/dev/sdc1)]
    />
    
  4. 在启动器中使用 ibstat 命令检查状态是否为 Active,并确定 端口 GUID:
    [root@initiator]# ibstat
    CA 'qib0'
    	CA type: InfiniPath_QLE7342
    	Number of ports: 1
    	Firmware version:
    	Hardware version: 2
    	Node GUID: 0x001175000077d708
    	System image GUID: 0x001175000077d708
    	Port 1:
    		State: Active
    		Physical state: LinkUp
    		Rate: 40
    		Base lid: 2
    		LMC: 0
    		SM lid: 1
    		Capability mask: 0x07690868
    		Port GUID: 0x001175000077d708
    		Link layer: InfiniBand
    
  5. 使用以下命令扫描,但不连接到远程 SRP 目标:目标 GUID 显示启动器已找到远程目标。ID 字符串显示远程目标是一个 Linux 软件目标(ib_srpt.ko)。
    [root@initiator]# srp_daemon -a -o
    IO Unit Info:
        port LID:        0001
        port GID:        fe80000000000000001175000077dd7e
        change ID:       0001
        max controllers: 0x10
    
        controller[  1]
            GUID:      001175000077dd7e
            vendor ID: 000011
            device ID: 007322
            IO class : 0100
            ID:        Linux SRP target
            service entries: 1
                service[  0]: 001175000077dd7e / SRP.T10:001175000077dd7e
    
  6. 要验证 SRP 连接,请使用 lsscsi 命令列出 SCSI 设备,并在启动器连接到目标之前和之后比较 lsscsi 输出。
    [root@initiator]# lsscsi
    [0:0:10:0]   disk    IBM-ESXS ST9146803SS      B53C  /dev/sda
    
  7. 要在没有为 initiator 端口配置有效 ACL 的情况下连接到远程目标(应该会失败),请对 srp_daemon or ibsrpdm 使用以下命令:
    [root@initiator]# srp_daemon -e -n -i qib0 -p 1 -R 60 &
    [1] 4184
    
    [root@initiator]# ibsrpdm -c -d /dev/infiniband/umad0 > /sys/class/infiniband_srp/srp-qib0-1/add_target
    
  8. dmesg 的输出显示 SRP 连接操作失败的原因。在后续步骤中,使用目标端的 dmesg 命令使情况变得明确。
    [root@initiator]# dmesg -c
    [ 1230.059652] scsi host5: ib_srp: REJ received
    [ 1230.059659] scsi host5: ib_srp: SRP LOGIN from fe80:0000:0000:0000:0011:7500:0077:d708 to fe80:0000:0000:0000:0011:7500:0077:dd7e REJECTED, reason 0x00010006
    [ 1230.073792] scsi host5: ib_srp: Connection 0/2 failed
    [ 1230.078848] scsi host5: ib_srp: Sending CM DREQ failed
    
  9. 由于 LOGIN 失败,lsscsi 命令的输出与上一步中的输出相同。
    [root@initiator]# lsscsi
    [0:0:10:0]   disk    IBM-ESXS ST9146803SS      B53C  /dev/sda
    
  10. 在目标端使用 dmesg (ib_srpt.ko)提供了有关 LOGIN 失败的原因。此外,输出中还包含 srp_daemon 提供的有效 ACL ID:0x7edd770000751100001175000077d708
    [root@target]# dmesg
    [ 1200.303001] ib_srpt Received SRP_LOGIN_REQ with i_port_id 0x7edd770000751100:0x1175000077d708, t_port_id 0x1175000077dd7e:0x1175000077dd7e and it_iu_len 260 on port 1 (guid=0xfe80000000000000:0x1175000077dd7e)
    [ 1200.322207] ib_srpt Rejected login because no ACL has been configured yet for initiator 0x7edd770000751100001175000077d708.
  11. 使用 targetcli 工具添加有效的 ACL:
    [root@target]# targetcli
    targetcli shell version 2.1.fb41
    Copyright 2011-2013 by Datera, Inc and others.
    For help on commands, type 'help'.
    
    /> /srpt/ib.fe80000000000000001175000077dd7e/acls create 0x7edd770000751100001175000077d708
    Created Node ACL for ib.7edd770000751100001175000077d708
    Created mapped LUN 0.
    
  12. 验证 SRP LOGIN 操作:
    1. 等待 60 秒,以允许 srp_daemon 重新登录:
      [root@initiator]# sleep 60
    2. 验证 SRP LOGIN 操作:
      [root@initiator]# lsscsi
      [0:0:10:0]   disk    IBM-ESXS ST9146803SS      B53C  /dev/sda
      [7:0:0:0] disk LIO-ORG vol1 4.0 /dev/sdb
    3. 对于 SRP 目标发现的内核日志,请使用:
      [root@initiator]# dmesg -c
      [ 1354.182072] scsi host7: SRP.T10:001175000077DD7E
      [ 1354.187258] scsi 7:0:0:0: Direct-Access     LIO-ORG  vol1             4.0  PQ: 0 ANSI: 5
      [ 1354.208688] scsi 7:0:0:0: alua: supports implicit and explicit TPGS
      [ 1354.215698] scsi 7:0:0:0: alua: port group 00 rel port 01
      [ 1354.221409] scsi 7:0:0:0: alua: port group 00 state A non-preferred supports TOlUSNA
      [ 1354.229147] scsi 7:0:0:0: alua: Attached
      [ 1354.233402] sd 7:0:0:0: Attached scsi generic sg1 type 0
      [ 1354.233694] sd 7:0:0:0: [sdb] 163258368 512-byte logical blocks: (83.5 GB/77.8 GiB)
      [ 1354.235127] sd 7:0:0:0: [sdb] Write Protect is off
      [ 1354.235128] sd 7:0:0:0: [sdb] Mode Sense: 43 00 00 08
      [ 1354.235550] sd 7:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
      [ 1354.255491] sd 7:0:0:0: [sdb] Attached SCSI disk
      [ 1354.265233] scsi host7: ib_srp: new target: id_ext 001175000077dd7e ioc_guid 001175000077dd7e pkey ffff service_id 001175000077dd7e sgid fe80:0000:0000:0000:0011:7500:0077:d708 dgid fe80:0000:0000:0000:0011:7500:0077:dd7e
      xyx
      
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.