Public:TargetCLI
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