Public:TargetCLI — различия между версиями

Материал из Linkintel wiki
Перейти к: навигация, поиск
(TargetCLI)
 
(не показаны 4 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
== TargetCLI ==
 
== TargetCLI ==
  
[http://linux-iscsi.org/wiki/SCSI_RDMA_Protocol|SCSI_RDMA_Protocol]
+
[http://linux-iscsi.org/wiki/SCSI_RDMA_Protocol|SCSI_RDMA_Protocol документация]
  
 
targetcli - утилита для управления экспортом дисков по сети. Позволяет подцепить файлы или блочные устройства с одной стороны к интерфейсам взаимодействия с другими серверами - с другой.
 
targetcli - утилита для управления экспортом дисков по сети. Позволяет подцепить файлы или блочные устройства с одной стороны к интерфейсам взаимодействия с другими серверами - с другой.
Строка 37: Строка 37:
 
   o- loopback ............................................................................................. [0 Targets]
 
   o- loopback ............................................................................................. [0 Targets]
 
   o- vhost ................................................................................................ [0 Targets]
 
   o- vhost ................................................................................................ [0 Targets]
 +
/> /backstores/iblock create name=iblock_erlyvideo dev=/dev/kvp2targets/erlyvideo
 +
Created iblock storage object iblock_erlyvideo using /dev/kvp2targets/erlyvideo.
 +
 +
Объясняем, где у нас сетевые интерфейсы:
 +
 +
/> /ib_srpt create
 +
Created target 0xfe80000000000000'''0021280001fcc1fd'''.
 +
/> /ib_srpt create
 +
Created target 0xfe80000000000000'''0021280001fcc1fe'''.
 +
 +
(Выходим, смотрим, кто есть кто)
 +
 +
/> exit
 +
Comparing startup and running configs...
 +
Some changes need saving.
 +
Save configuration? [Y/n]: Y
 +
Performing backup of startup configuration: /var/target/backup-2018-06-22_18:52:33.lio
 +
Saving new startup configuration
 +
 +
# ibstat
 +
CA 'mlx4_0'
 +
        CA type: MT26428
 +
        Number of ports: 2
 +
        Firmware version: 2.11.2010
 +
        Hardware version: b0
 +
        Node GUID: 0x0021280001fcc1fc
 +
        System image GUID: 0x0021280001fcc1ff
 +
        Port 1:
 +
                State: Down
 +
                Physical state: Polling
 +
                Rate: 10
 +
                Base lid: 0
 +
                LMC: 0
 +
                SM lid: 0
 +
                Capability mask: 0x02590868
 +
                Port GUID: '''0x0021280001fcc1fd'''
 +
                Link layer: InfiniBand
 +
        Port 2:
 +
                State: Active
 +
                Physical state: LinkUp
 +
                Rate: 40
 +
                Base lid: 5
 +
                LMC: 0
 +
                SM lid: 1
 +
                Capability mask: 0x02590868
 +
                Port GUID: '''0x0021280001fcc1fe'''
 +
                Link layer: InfiniBand
 +
 +
Видим, что провод у нас в порту 2 (LinkUp)
 +
 +
Снова лезем в targetcli, создаем LUN:
 +
 +
/> cd /iscsi/iqn.2003-01.org.linux-iscsi.kvp2.x8664:sn.ab9cb450f954/tpg1/luns/
 +
/> create /backstores/iblock/iblock_erlyvideo
 +
Selected LUN 0.
 +
Created LUN 0.
 +
 +
Всё, SCSI-LUN готов. Осталось разрешить к нему цепляться и можно работать.
 +
 +
Теперь уже работаем с хостами, которые будут подцепляться по iSCSI:
 +
 +
root@vm1:~# cat /sys/class/infiniband/*/ports/*/gids/0 | sed -e s/fe80/0x0000/ -e 's/\://g'
 +
0x0000000000000000f4521403007edd61
 +
 +
Разрешим ему приходить к нам в гости:
 +
 +
/iscsi/iqn.20...954/tpg1/acls> create 0x0000000000000000f4521403007edd61
 +
Created Node ACL for 0x0000000000000000f4521403007edd61
 +
Created mapped LUN 0.
 +
/iscsi/iqn.20...954/tpg1/acls> cd /
 +
/> saveconfig
 +
Save configuration? [Y/n]: y
 +
Performing backup of startup configuration: /var/target/backup-2019-02-28_16:01:07.lio
 +
Saving new startup configuration
 +
/> exit
 +
 +
 +
(Тут следую за тредом на [https://serverfault.com/questions/327947/set-up-simple-infiniband-block-storage-srp-or-iser|set-up-simple-infiniband-block-storage-srp-or-iser serverfault])
 +
 +
Опять на хосте, поднимаем нужный модуль:
 +
 +
modprobe ib_umad
 +
modprobe ib_uverbs
 +
modprobe ib_srp
 +
 +
Выясняем, чем кормить ядро:
 +
 +
root@vm1:~/vm/etc# ibsrpdm -c -d /dev/infiniband/umad0
 +
id_ext=0021280001fcc1fc,ioc_guid=0021280001fcc1fc,dgid=fe800000000000000021280001fcc1fe,pkey=ffff,service_id=0021280001fcc1fc
 +
 +
Кормим ядро:
 +
 +
root@vm1:~/vm/etc# echo "id_ext=0021280001fcc1fc,ioc_guid=0021280001fcc1fc,dgid=fe800000000000000021280001fcc1fe,pkey=ffff,service_id=0021280001fcc1fc" > /sys/class/infiniband_srp/srp-mlx4_0-1/add_target
 +
 +
По идее, в dmesg должно появиться такое примерно:
 +
 +
[3568070.424106] scsi host7: SRP.T10:0021280001FCC1FC
 +
[3568070.425153] scsi 7:0:0:0: Direct-Access    LIO-ORG  IBLOCK          4.0  PQ: 0 ANSI: 5
 +
[3568070.426033] scsi 7:0:0:0: alua: supports implicit and explicit TPGS
 +
[3568070.426550] scsi 7:0:0:0: alua: device naa.6001405cb016f5f890546f2a52e48992 port group 0 rel port 1
 +
[3568070.427302] sd 7:0:0:0: Attached scsi generic sg16 type 0
 +
[3568070.427419] sd 7:0:0:0: ['''sdo'''] 2147483648 512-byte logical blocks: (1.10 TB/1.00 TiB)
 +
[3568070.427421] sd 7:0:0:0: ['''sdo'''] 4096-byte physical blocks
 +
[3568070.427451] sd 7:0:0:0: ['''sdo'''] Write Protect is off
 +
[3568070.427452] sd 7:0:0:0: ['''sdo'''] Mode Sense: 43 00 10 08
 +
[3568070.427505] sd 7:0:0:0: ['''sdo'''] Write cache: enabled, read cache: enabled, supports DPO and FUA
 +
[3568070.429277] sd 7:0:0:0: ['''sdo'''] Attached SCSI disk
 +
[3568070.430672] scsi host7: ib_srp: new target: id_ext 0021280001fcc1fc ioc_guid 0021280001fcc1fc pkey ffff service_id 0021280001fcc1fc sgid fe80:0000:0000:0000:f452:1403:007e:dd61 dgid
 +
fe80:0000:0000:0000:0021:2800:01fc:c1fe
 +
[3568070.436201] sd 7:0:0:0: alua: transition timeout set to 60 seconds
 +
[3568070.436788] sd 7:0:0:0: alua: port group 00 state A non-preferred supports TOlUSNA
 +
[3568070.772228] sd 7:0:0:0: alua: port group 00 state A non-preferred supports TOlUSNA
 +
 +
Что говорит нам, что в системе появился новый диск - '''/dev/sdo'''

Текущая версия на 16:56, 28 февраля 2019

TargetCLI

документация

targetcli - утилита для управления экспортом дисков по сети. Позволяет подцепить файлы или блочные устройства с одной стороны к интерфейсам взаимодействия с другими серверами - с другой.

Мы пробуем её использовать в самом производительном, но и самом мучительном в начальной настройке режиме - ib_srpt - это, по сути, iSCSI через RDMA. Благо infiniband-коммутатор завёлся, стесняться нам нечего.

Устанавливается оно по мануалам, с тем только примечанием на полях, что /var/target/fabric/probe-ib_srpt.sh в апстриме битый и надо поправить. (см. Pull-Request)

Готовим площадку:

pvcreate /dev/sda
 Physical volume "/dev/sda" successfully created
vgcreate kvp2targets /dev/sda
 Volume group "kvp2targets" successfully created
lvcreate -L 1T -n erlyvideo kvp2targets
 Logical volume "erlyvideo" created

Работаем с самим targetcli

targetcli
 targetcli 3.0.pre4.5~ga125182 (rtslib 3.0.pre4.9~g6fd0bbf)
 Copyright (c) 2011-2014 by Datera, Inc.
 All rights reserved.

/>ls
 o- / ............................................................................................................ [...]
  o- backstores ................................................................................................. [...]
  | o- fileio ...................................................................................... [0 Storage Object]
  | o- iblock ...................................................................................... [0 Storage Object]
  | o- pscsi ....................................................................................... [0 Storage Object]
  | o- rd_mcp ...................................................................................... [0 Storage Object]
  o- ib_srpt .............................................................................................. [0 Targets]
  o- iscsi ................................................................................................ [0 Targets]
  o- loopback ............................................................................................. [0 Targets]
  o- vhost ................................................................................................ [0 Targets]
/> /backstores/iblock create name=iblock_erlyvideo dev=/dev/kvp2targets/erlyvideo
Created iblock storage object iblock_erlyvideo using /dev/kvp2targets/erlyvideo.

Объясняем, где у нас сетевые интерфейсы:

/> /ib_srpt create
Created target 0xfe800000000000000021280001fcc1fd.
/> /ib_srpt create
Created target 0xfe800000000000000021280001fcc1fe.

(Выходим, смотрим, кто есть кто)

/> exit
Comparing startup and running configs...
Some changes need saving.
Save configuration? [Y/n]: Y
Performing backup of startup configuration: /var/target/backup-2018-06-22_18:52:33.lio
Saving new startup configuration

# ibstat
CA 'mlx4_0'
       CA type: MT26428
       Number of ports: 2
       Firmware version: 2.11.2010
       Hardware version: b0
       Node GUID: 0x0021280001fcc1fc
       System image GUID: 0x0021280001fcc1ff
       Port 1:
               State: Down
               Physical state: Polling
               Rate: 10
               Base lid: 0
               LMC: 0
               SM lid: 0
               Capability mask: 0x02590868
               Port GUID: 0x0021280001fcc1fd
               Link layer: InfiniBand
       Port 2:
               State: Active
               Physical state: LinkUp
               Rate: 40
               Base lid: 5
               LMC: 0
               SM lid: 1
               Capability mask: 0x02590868
               Port GUID: 0x0021280001fcc1fe
               Link layer: InfiniBand

Видим, что провод у нас в порту 2 (LinkUp)

Снова лезем в targetcli, создаем LUN:

/> cd /iscsi/iqn.2003-01.org.linux-iscsi.kvp2.x8664:sn.ab9cb450f954/tpg1/luns/
/> create /backstores/iblock/iblock_erlyvideo 
Selected LUN 0.
Created LUN 0.

Всё, SCSI-LUN готов. Осталось разрешить к нему цепляться и можно работать.

Теперь уже работаем с хостами, которые будут подцепляться по iSCSI:

root@vm1:~# cat /sys/class/infiniband/*/ports/*/gids/0 | sed -e s/fe80/0x0000/ -e 's/\://g'
0x0000000000000000f4521403007edd61

Разрешим ему приходить к нам в гости:

/iscsi/iqn.20...954/tpg1/acls> create 0x0000000000000000f4521403007edd61
Created Node ACL for 0x0000000000000000f4521403007edd61
Created mapped LUN 0.
/iscsi/iqn.20...954/tpg1/acls> cd /
/> saveconfig
Save configuration? [Y/n]: y
Performing backup of startup configuration: /var/target/backup-2019-02-28_16:01:07.lio
Saving new startup configuration
/> exit


(Тут следую за тредом на serverfault)

Опять на хосте, поднимаем нужный модуль:

modprobe ib_umad
modprobe ib_uverbs
modprobe ib_srp

Выясняем, чем кормить ядро:

root@vm1:~/vm/etc# ibsrpdm -c -d /dev/infiniband/umad0
id_ext=0021280001fcc1fc,ioc_guid=0021280001fcc1fc,dgid=fe800000000000000021280001fcc1fe,pkey=ffff,service_id=0021280001fcc1fc

Кормим ядро:

root@vm1:~/vm/etc# echo "id_ext=0021280001fcc1fc,ioc_guid=0021280001fcc1fc,dgid=fe800000000000000021280001fcc1fe,pkey=ffff,service_id=0021280001fcc1fc" > /sys/class/infiniband_srp/srp-mlx4_0-1/add_target 

По идее, в dmesg должно появиться такое примерно:

[3568070.424106] scsi host7: SRP.T10:0021280001FCC1FC
[3568070.425153] scsi 7:0:0:0: Direct-Access     LIO-ORG  IBLOCK           4.0  PQ: 0 ANSI: 5
[3568070.426033] scsi 7:0:0:0: alua: supports implicit and explicit TPGS
[3568070.426550] scsi 7:0:0:0: alua: device naa.6001405cb016f5f890546f2a52e48992 port group 0 rel port 1
[3568070.427302] sd 7:0:0:0: Attached scsi generic sg16 type 0
[3568070.427419] sd 7:0:0:0: [sdo] 2147483648 512-byte logical blocks: (1.10 TB/1.00 TiB)
[3568070.427421] sd 7:0:0:0: [sdo] 4096-byte physical blocks
[3568070.427451] sd 7:0:0:0: [sdo] Write Protect is off
[3568070.427452] sd 7:0:0:0: [sdo] Mode Sense: 43 00 10 08
[3568070.427505] sd 7:0:0:0: [sdo] Write cache: enabled, read cache: enabled, supports DPO and FUA
[3568070.429277] sd 7:0:0:0: [sdo] Attached SCSI disk
[3568070.430672] scsi host7: ib_srp: new target: id_ext 0021280001fcc1fc ioc_guid 0021280001fcc1fc pkey ffff service_id 0021280001fcc1fc sgid fe80:0000:0000:0000:f452:1403:007e:dd61 dgid 
fe80:0000:0000:0000:0021:2800:01fc:c1fe
[3568070.436201] sd 7:0:0:0: alua: transition timeout set to 60 seconds
[3568070.436788] sd 7:0:0:0: alua: port group 00 state A non-preferred supports TOlUSNA
[3568070.772228] sd 7:0:0:0: alua: port group 00 state A non-preferred supports TOlUSNA

Что говорит нам, что в системе появился новый диск - /dev/sdo