iSCSI
The StorPool iSCSI support is documented more extensively in the Setting iSCSI targets section; these are the commands used to configure it and view the configuration.
To set the cluster’s iSCSI base IQN iqn.2019-08.com.example:examplename:
# storpool iscsi config setBaseName iqn.2019-08.com.example:examplename
OK
Creating a portal group
To create a portal group examplepg used to group exported volumes for access by initiators using 192.168.42.247/24 (CIDR notation) as the portal IP address:
# storpool iscsi config portalGroup examplepg create addNet 192.168.42.247/24 vlan 42
OK
To create portal for the initiators to connect to (for example portal IP address 192.168.42.202 and StorPool’s SP_OURID 5):
# storpool iscsi config portal create portalGroup examplepg address 192.168.42.202 controller 5
OK
Note
This address will be handled by the storpool_iscsi
process
directly and will not be visible in the node with normal instruments
like ip or ifconfig, check the Using iscsi_tool for these
purposes.
Registering an initiator
To define the iqn.2019-08.com.example:abcdefgh initiator that is allowed to connect from the 192.168.42.0/24 network (without authentication):
# storpool iscsi config initiator iqn.2019-08.com.example:abcdefgh create net 192.168.42.0/24
OK
To define the iqn.2019-08.com.example:client initiator that is allowed to connect from the 192.168.42.0/24 network and must authenticate using the standard iSCSI password-based challenge-response authentication method using the user username and the secret password:
# storpool iscsi config initiator iqn.2019-08.com.example:client create net 192.168.42.0/24 chap user secret
OK
Exporting a volume
To specify that the existing StorPool volume tinyvolume should be exported to one or more initiators:
# storpool iscsi config target create tinyvolume
OK
Note
Please note that changing the volume name after creating a target will not change the target name. Re-creating (unexport/re-export) the target will use the new volume name.
To actually export the StorPool volume tinyvolume to to the iqn.2019-08.com.example:abcdefgh initiator via the examplepg portal group (the StorPool iSCSI service will automatically pick a portal to export the volume through):
# storpool iscsi config export initiator iqn.2019-08.com.example:abcdefgh portalGroup examplepg volume tinyvolume
OK
Note
The volume will be visible to the initiator as IQN <BaseName>:<volume>
Using the same command without specifying an initiator will export the target to
all registered initiators and will be visible as the *
initiator:
# storpool iscsi config export portalGroup examplepg volume tinyvolume
OK
# storpool iscsi initiator list exports
-----------------------------------------------------------------------------------------------------------------
| name | volume | currentControllerId | portalGroup | initiator |
-----------------------------------------------------------------------------------------------------------------
| iqn.2019-08.com.example:examplename:tinyvolume | test | 23 | examplepg | * |
-----------------------------------------------------------------------------------------------------------------
Getting iSCSI configuration
To view the iSCSI cluster base IQN:
# storpool iscsi basename
---------------------------------------
| basename |
---------------------------------------
| iqn.2019-08.com.example:examplename |
---------------------------------------
To view the portal groups:
# storpool iscsi portalGroup list
---------------------------------------------
| name | networksCount | portalsCount |
---------------------------------------------
| examplepg | 1 | 2 |
---------------------------------------------
To view the portals:
# storpool iscsi portalGroup list portals
--------------------------------------------------
| group | address | controller |
--------------------------------------------------
| examplepg | 192.168.42.246:3260 | 1 |
| examplepg | 192.168.42.202:3260 | 5 |
--------------------------------------------------
To view the defined initiators:
# storpool iscsi initiator list
---------------------------------------------------------------------------------------
| name | username | secret | networksCount | exportsCount |
---------------------------------------------------------------------------------------
| iqn.2019-08.com.example:abcdefgh | | | 1 | 1 |
| iqn.2019-08.com.example:client | user | secret | 1 | 0 |
---------------------------------------------------------------------------------------
To view the present state of the configured iSCSI interfaces:
iscsi interfaces list
--------------------------------------------------
| ctrlId | net 0 | net 1 |
--------------------------------------------------
| 23 | 2A:60:00:00:E0:17 | 2A:60:00:00:E0:17 |
| 24 | 2A:60:00:00:E0:18 | 2A:60:00:00:E0:18 |
| 25 | 2A:60:00:00:E0:19 | 2E:60:00:00:E0:19 |
| 26 | 2A:60:00:00:E0:1A | 2E:60:00:00:E0:1A |
--------------------------------------------------
Note
These are the same interfaces configured with SP_ISCSI_IFACE
in
the order of appearance:
# storpool_showconf SP_ISCSI_IFACE
SP_ISCSI_IFACE=sp0,spbond1:sp1,spbond1:[lacp]
In the above output, the sp0
interface is net ID 0 and sp1
is
net ID 1.
To view the volumes that may be exported to initiators:
# storpool iscsi target list
-------------------------------------------------------------------------------------
| name | volume | currentControllerId |
-------------------------------------------------------------------------------------
| iqn.2019-08.com.example:examplename:tinyvolume | tinyvolume | 65535 |
-------------------------------------------------------------------------------------
To view the volumes currently exported to initiators:
# storpool iscsi initiator list exports
--------------------------------------------------------------------------------------------------------------------------------------
| name | volume | currentControllerId | portalGroup | initiator |
--------------------------------------------------------------------------------------------------------------------------------------
| iqn.2019-08.com.example:examplename:tinyvolume | tinyvolume | 1 | | iqn.2019-08.com.example:abcdefgh |
--------------------------------------------------------------------------------------------------------------------------------------
Getting active sessions
To list the presently active sessions in the cluster:
# storpool iscsi sessions list
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| id | target | initiator | portal addr | initiator addr | timeCreated | nopOut | scsi | task | dataOut | otherOut | nopIn | scsiRsp | taskRsp | dataIn | r2t | otherIn | t free | t dataOut | t queued | t processing | t dataResp | t aborted | ISID |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 23.0 | iqn.2020-04.com.storpool:autotest:s18-1-iscsi-test-hybrid-win-server2016 | iqn.1991-05.com.microsoft:s18 | 10.1.100.123:3260 | 10.1.100.18:49414 | 2020-07-07 09:25:16 / 00:03:54 | 209 | 89328 | 0 | 0 | 2 | 209 | | | 45736 | 0 | 2 | 129 | 0 | 0 | 0 | 0 | 0 | 1370000 |
| 23.1 | iqn.2020-04.com.storpool:autotest:s11-1-iscsi-test-hybrid-centos6 | iqn.2020-04.com.storpool:s11 | 10.1.100.123:3260 | 10.1.100.11:44392 | 2020-07-07 09:25:33 / 00:03:37 | 218 | 51227 | 0 | 0 | 1 | 218 | | | 25627 | 0 | 1 | 129 | 0 | 0 | 0 | 0 | 0 | 3d0002b8 |
| 24.0 | iqn.2020-04.com.storpool:autotest:s11-1-iscsi-test-hdd-centos6 | iqn.2020-04.com.storpool:s11 | 10.1.100.124:3260 | 10.1.100.11:51648 | 2020-07-07 09:27:27 / 00:01:43 | 107 | 424 | 0 | 0 | 1 | 107 | | | 224 | 0 | 1 | 129 | 0 | 0 | 0 | 0 | 0 | 3d0002b9 |
| 24.1 | iqn.2020-04.com.storpool:autotest:s18-1-iscsi-test-hdd-win-server2016 | iqn.1991-05.com.microsoft:s18 | 10.1.100.124:3260 | 10.1.100.18:49422 | 2020-07-07 09:28:22 / 00:00:48 | 43 | 39568 | 0 | 0 | 2 | 43 | | | 19805 | 0 | 2 | 128 | 0 | 0 | 1 | 0 | 0 | 1370000 |
| 25.0 | iqn.2020-04.com.storpool:autotest:s13-1-iscsi-test-hybrid-centos7 | iqn.2020-04.com.storpool:s13 | 10.1.100.125:3260 | 10.1.100.13:45120 | 2020-07-07 09:20:46 / 00:08:24 | 481 | 154086 | 0 | 0 | 1 | 481 | | | 78308 | 0 | 1 | 129 | 0 | 0 | 0 | 0 | 0 | 3d0000a8 |
| 26.0 | iqn.2020-04.com.storpool:autotest:s13-1-iscsi-test-hdd-centos7 | iqn.2020-04.com.storpool:s13 | 10.1.100.126:3260 | 10.1.100.13:43858 | 2020-07-07 09:22:52 / 00:06:18 | 369 | 147438 | 0 | 0 | 1 | 369 | | | 74883 | 0 | 1 | 129 | 0 | 0 | 0 | 0 | 0 | 3d0000a9 |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here, the fields are:
id
Identifier for the node and connection. The first part matches the
SP_OURID
of the node with thestorpool_iscsi
service running, and the second is the export number.target
The target IQN.
initiator
The initiator IQN.
portal addr
The portal group floating address and port.
initiator addr
The initiator address and port.
timeCreated
The time when the session was created.
Initiator:
nopOut
Number of NOP-out requests from the initiator.
scsi
Number of SCSI commands from the initiator for this session.
task
Number of SCSI Task Management Function Requests from the initiator.
dataOut
Number of SCSI Data-Out PDUs from the initiator.
otherOut
Number of non SCSI Data-Out PDUs sent to the target (Login/Logout/SNACK or Text).
ISID
The initiator part of the session identifier, explicitly specified by the initiator during login.
Target:
nopIn
Number of NOP-in PDUs from the target.
scsiRsp
Number of SCSI response PDUs from the target.
taskRsp
Number of SCSI Task Management Function Response PDUs from the target.
dataIn
Number of SCSI Data-In PDUs from the target.
r2t
Number of Ready To Transfer (R2T) PDUs from the target.
otherIn
Number of non SCSI Data-In PDUs from the target (Login/Logout/SNACK or Text).
Task queue:
t free
Number of free task queue slots.
t dataOut
Write request waiting for data from TCP.
t queued
Number of IO requests received ready to be processed.
t processing
Number of IO requests sent to the target to process.
t dataResp
Read request queued for sending over TCP.
t aborted
Number of aborted requests.
Operations
To stop exporting the tinyvolume volume to the initiator with iqn iqn.2019-08.com.example:abcdefgh and the examplepg portal group:
# storpool iscsi config unexport initiator iqn.2019-08.com.example:abcdefgh portalGroup examplepg volume tinyvolume
OK
If a target was exported to all initiators (with *
), not specifying an
initiator will unexport from all:
# storpool iscsi config unexport portalGroup examplepg volume tinyvolume
OK
To remove an iSCSI definition for the tinyvolume volume:
# storpool iscsi config target delete tinyvolume
OK
To remove access for the iqn.2019-08.com.example:client iSCSI initiator:
# storpool iscsi config initiator iqn.2019-08.com.example:client delete
OK
To remove the portal 192.168.42.202 IP address:
# storpool iscsi config portal delete address 192.168.42.202
OK
To remove portal group examplepg after all the portals have been removed:
# storpool iscsi config portalGroup examplepg delete
OK
Note
Only portal groups without portals may be deleted.
Using iscsi_tool
With the hardware accelerated iSCSI all traffic from and to the initiators is
handled by the storpool_iscsi
service directly. For example, with the above
setup the addresses exposed on each of the nodes could be queried with
/usr/lib/storpool/iscsi_tool
:
# /usr/lib/storpool/iscsi_tool
usage: /usr/lib/storpool/iscsi_tool change-port 0/1 ifaceName
usage: /usr/lib/storpool/iscsi_tool ip net list
usage: /usr/lib/storpool/iscsi_tool ip neigh list
usage: /usr/lib/storpool/iscsi_tool ip route list
To list the presently configured addresses:
# /usr/lib/storpool/iscsi_tool ip net list
10.1.100.0/24 vlan 1100 ports 1,2
10.18.1.0/24 vlan 1801 ports 1,2
10.18.2.0/24 vlan 1802 ports 1,2
To list the neighbours and their last state:
# /usr/lib/storpool/iscsi_tool ip neigh list
10.1.100.11 ok F4:52:14:76:9C:B0 lastSent 1785918292753 us, lastRcvd 918669 us
10.1.100.13 ok 0:25:90:C8:E5:AA lastSent 1785918292803 us, lastRcvd 178521 us
10.1.100.18 ok C:C4:7A:EA:85:4E lastSent 1785918292867 us, lastRcvd 178099 us
10.1.100.108 ok 1A:60:0:0:E0:8 lastSent 1785918293857 us, lastRcvd 857181794 us
10.1.100.112 ok 1A:60:0:0:E0:C lastSent 1785918293906 us, lastRcvd 1157179290 us
10.1.100.113 ok 1A:60:0:0:E0:D lastSent 1785918293922 us, lastRcvd 765392509 us
10.1.100.114 ok 1A:60:0:0:E0:E lastSent 1785918293938 us, lastRcvd 526084270 us
10.1.100.115 ok 1A:60:0:0:E0:F lastSent 1785918293954 us, lastRcvd 616948781 us
10.1.100.123 ours
[snip]
The above output includes also the portalGroup addresses residing on the node with the lowest ID in the cluster.
To list routing information:
# /usr/lib/storpool/iscsi_tool ip route list
10.1.100.0/24 local
10.18.1.0/24 local
10.18.2.0/24 local
Using iscsi_targets
The /usr/lib/storpool/iscsi_targets
tool is a helper tool for Linux
based initiators, showing all logged in targets on the node:
# /usr/lib/storpool/iscsi_targets
/dev/sdn iqn.2020-04.com.storpool:autotest:s11-1-iscsi-test-hybrid-centos6
/dev/sdo iqn.2020-04.com.storpool:autotest:s11-1-iscsi-test-hdd-centos6
/dev/sdp iqn.2020-04.com.storpool:autotest:s11-2-iscsi-test-hybrid-centos6
/dev/sdq iqn.2020-04.com.storpool:autotest:s11-2-iscsi-test-hdd-centos6