Public:TargetCLI

Материал из Linkintel wiki
Перейти к: навигация, поиск

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