Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13.5.5. リモートの Linux SRP ターゲットへの接続

SCSI RDMA Protocol (SRP) は、システムが、別のシステムに接続されている SCSI デバイスにアクセスするために RDMA を使用できるようにするネットワークプロトコルです。SRP イニシエーターが、SRP ターゲット側で SRP ターゲットに接続するようにするには、そのイニシエーターで使用するホストチャンネルアダプター (HCA) ポートに、アクセスコントロールリスト (ACL) エントリーを追加する必要があります。
HCA ポートの ACL ID は固有ではありません。ACL IDは、HCA の GID 形式により異なります。同じドライバー (たとえば ib_qib) を使用する HCA では、GID の形式が同じである必要はありません。また、ACL ID は、接続要求を開始する方法により異なります。

リモートの Linux SRP ターゲットへの接続: 概要

  1. ターゲット側の準備:
    1. ストレージのバックエンドを作成します。たとえば、/dev/sdc1 パーティションを取得します。
      /> /backstores/block create vol1 /dev/sdc1
    2. SRP ターゲットを作成します。
      /> /srpt create 0xfe80000000000000001175000077dd7e
    3. ステップ A で作成したバックエンドに基づいた LUN を作成します。
      /> /srpt/ib.fe80000000000000001175000077dd7e/luns create /backstores/block/vol1
    4. リモートの SRP クライアントに Node ACL を作成します。
      /> /srpt/ib.fe80000000000000001175000077dd7e/acls create 0x7edd770000751100001175000077d708
      Node ACL は、srp_daemonibsrpdm で異なります。
  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 コマンドを実行して、State および Port 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 を取得します。この 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. ブロックデバイスで LUN vol1 を作成する targetcli ツールを使用して、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. イニシエーターポートに有効な ACL を設定せずに (これは失敗することが予想されます) リモートターゲットを接続するには、srp_daemon または 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. ターゲット (ib_srpt.ko) で dmesg を使用すると、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. srp_daemon がログインを再試行できるようにするには 60 秒待ちます。
      [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