Open-iSCSI
This article describes how to access an iSCSI target with the Open-iSCSI initiator.
Installation
Install the open-iscsi package.
Overview
The following diagram shows how the Components work together. A more detailed version can be found here: Open-iSCSI modules (Outdated)
+--------------------------------------------------------+
| Targets & Sessions configuration files and directories |
+--------------------------------------------------------+
+--------------------------+ +----------------------------------+
| iscsiadm | | iscsid: iSCSI daemon |
| | | |
| * Command line tool |<--->| * Implements Session management |
| * Manages database of | | * Communicates with iscsiadm |
| sessions and targets | | and iscsi kernel modules |
+--------------------------+ +---------------+------------------+
|
User space |
- - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - - - -
Kernel v
+-----------------------------------------------------------+
| kernel modules: scsi_transport_iscsi, iscsi_tcp, libiscsi |
+-----------------------------------------------------------+
From the Open-iSCSI README:
Persistent configuration is implemented as a tree of files and directories, which are contained in two directories:
/etc/iscsi/ to /var/lib/iscsi/ in open-iscsi 2.1.9-2. The migration is not done automatically. Please disconnect targets, stop the service, migrate and connect again. Also verify filesystem permissions.
/etc/iscsi/ should only contain initiatorname.iscsi and iscsid.conf
- Discovery directory
/var/lib/iscsi/send_targetswhich has directories named after target addresses. - Node directory
/var/lib/iscsi/nodeswhich has directories named after IQN (ISCSI Unique Name) of particular device.
Configuration
Start the Service
iscsid is managed by a systemd Unit.
Start iscsid.service or iscsid.socket.
ISCSI Qualified Name (IQN)
IQN is used for identifying every device.
Open-ISCSI stores its initiator IQN in the /etc/iscsi/initiatorname.iscsi file with a format InitiatorName=iqn
During installation the initial IQN will be generated. If you wish to generate new IQN the iscsi-iname utility can be used which prints out new IQN.
Authentication
If the ISCSI target requires authentication by the initiator, the configuration file /etc/iscsi/iscsid.conf may need to be updated.
The following parameters are used for authenticating a login session of an initiator to a target:
node.session.auth.authmethod = CHAP node.session.auth.username = initiators_username node.session.auth.password = initiators_password
If your target has two-way authentication enabled then those lines also need to be edited:
node.session.auth.username_in = targets_username node.session.auth.password_in = targets_password
If your target requires authentication to get the list of its nodes (most will not) then following lines should be edited:
discovery.sendtargets.auth.authmethod = CHAP discovery.sendtargets.auth.username = initiators_username discovery.sendtargets.auth.password = initiators_password
If your target has two-way authentication enabled then those lines also need to be edited:
discovery.sendtargets.auth.username_in = targets_username discovery.sendtargets.auth.password_in = targets_password
/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port,1/default and add/adjust the options as necessary.[1]Target discovery
Request the target its nodes.
# iscsiadm --mode discovery --portal target_ip --type sendtargets
On success information about nodes and target will be saved on your initiator.
Add target manually
# iscsiadm -m node --target targetname --portal target_ip -o new
A possible scenario to use this is when server does not allow discovery.
Delete obsolete targets
# iscsiadm -m discovery -p target_ip -o delete
Login to available targets
# iscsiadm -m node -L all
or login to specific target
# iscsiadm -m node --targetname=targetname --login
logout:
# iscsiadm -m node -U all
Info
For running session
# iscsiadm -m session -P 3
The last line of the above command will show the name of the attached device e.g
Attached scsi disk sdd State: running
For the known nodes
# iscsiadm -m node
Online resize of volumes
If the iscsi blockdevice contains a partitiontable, you will not be able to do an online resize. In this case you have to unmount the filesystem and alter the size of the affected partition.
- Rescan active nodes in current session
# iscsiadm -m node -R
- If you use multipath, you also have to rescan multipath volume information.
# multipathd -k"resize map sdx"
- Finally resize the filesystem.
# resize2fs /dev/sdx
Tips and tricks
Check for attached iSCSI devices
You can also check where the attached iSCSI devices are located in the /dev/ tree with:
$ ls -l /dev/disk/by-path/ip-*
Login to targets on boot
To log in to a target during boot, enable iscsi.service and make sure the nodes have node.startup = automatic in their configuration (/var/lib/iscsi/nodes/iqn.node-name/node-ip-address,port).
Troubleshooting
Client IQN
At the server (target) you might need to include the client IQN from /etc/iscsi/initiatorname.iscsi in the account configuration.
Debugging the iSCSI daemon
To run the iSCSI daemon in debug mode (make sure you stopped iscsid.service before)
# iscsid -d 8 -c /etc/iscsi/iscsid.conf -i /etc/iscsi/initiatorname.iscsi -f