linux_wiki:configure_a_system_as_either_an_iscsi_target_or_initiator_that_persistently_mounts_an_iscsi_target

This is an old revision of the document!


Configure A System As Either An Iscsi Target Or Initiator That Persistently Mounts An Iscsi Target

General Information

Creating iSCSI targets (storage on a server) and initiators (clients).


Lab Setup

The following virtual machines will be used:

  • server1.example.com (192.168.1.150) → Client/initiator
  • server2.example.com (192.168.1.151) → Server/target
    • Add Disk: Add a secondary disk to the Server/target that will be used as backend storage for the iSCSI target.

Help

Finding help in this section.

  • iSCSI target (server)
    #tab completion in targetcli utility
  • iSCSI initiator (client)
    man iscsiadm

iSCSI Targets (Storage Server)

The iSCSI targets are on the storage server and are the volumes that can be mounted by clients.

Create a back-end logical volume or partition that will be an iSCSI target.

Example:

pvcreate /dev/sdb1
vgcreate vgsan /dev/sdb1
lvcreate --extents 100%PVS --name lvstor01 vgsan /dev/sdb1

Install packages

yum install targetcli


Enable the service

systemctl enable target

Start the targetcli interactive utility

targetcli


The targetcli utility commands available depend upon your path. Navigation is done via cd, pwd, and ls just like you would expect in a shell.

/> ls
o- / ................................................................. [...]
  o- backstores ...................................................... [...]
  | o- block .......................................... [Storage Objects: 0]
  | o- fileio ......................................... [Storage Objects: 0]
  | o- pscsi .......................................... [Storage Objects: 0]
  | o- ramdisk ........................................ [Storage Objects: 0]
  o- iscsi .................................................... [Targets: 0]
  o- loopback ................................................. [Targets: 0]
/> pwd
/
  • Note: Use tab for auto completion in paths and commands


Backing Storage: Create a block storage object within the targetcli interactive prompt

/> backstores/block create name=block1 dev=/dev/vgsan/lvstor01
  • backstores/block → In the backstores block path
  • create block1 → Create a storage object named “block1”
  • /dev/vgsan/lvstor01 → Use the logical volume /dev/vgsan/lvstor01


iSCSI Target: Create an iSCSI Target IQN (Iscsi Qualified Name)

/> iscsi/ create wwn=iqn.2018-05.com.example.server2:target
  • iscsi/ → In the iscsi path
  • create iqn.2018-05.com.example.server2:target → Create the IQN named “iqn.2018-05.com.example.server2:target”
  • An IQN is how you refer to the target disk
    • All IQNs must start with “iqn”
    • Standard convention is to use the date (YYYY-MM) and reverse domain name
    • target is the target name
  • This creates an associated TPG (Target Portal Group)


Change into the newly created IQN's TPG (Target Portal Group) and view the contents

/> cd iscsi/iqn.2018-05.com.example.server2:target/tpg1/
/iscsi/iqn.20...2:target/tpg1> ls
  • Objects listed:
    • acls (access control lists can restrict access)
    • luns (logical unit number or the exported resource)
    • portals (IP addresses:ports to reach the exported resource)
      • Note: In some earlier versions (RHEL 7.0-7.1), a portal is NOT automatically created. This may need to be created manually.


Create portal: RHEL 7.0 - 7.1 only

/iscsi/iqn.20...2:target/tpg1> portals create 0.0.0.0 ip_port=3260


LUN to Storage Map: Create a LUN within the target portal group

/iscsi/iqn.20...2:target/tpg1> luns/ create /backstores/block/block1
  • luns/ → In the luns path
  • create /backstores/block/block1 → Create a lun using “block1” as the backing storage


Client ACL: Create an ACL for a client to be able to connect to the IQN in the future

/iscsi/iqn.20...2:target/tpg1> acls/ create iqn.2018-05.com.example:server1
  • acls/ → In the acls path
  • create iqn.2018-05.com.example:server1 → Create an ACL allowing this IQN
    • This is a combination of a new IQN (following a similar naming convention) and an identifier of your choosing. Together, this makes up the client iscsi initiator name that will be used.
    • iqn.2018-05.com.example → IQN
    • :server1 → an identifier of your choosing
  • Alternatively: Instead of making of an IQN for the client, see here to retrieve it.


OPTIONAL: Create a CHAP Username/Password for client connections

/iscsi/iqn.20...2:target/tpg1> cd acls/iqn.2018-05.com.example:server1/
/iscsi/iqn.20...ample:server1> set auth userid=myuser password=mypassword


Save and exit the targetcli utility

/iscsi/iqn.20...ample:server1> cd /
/> saveconfig
/> exit

Firewall

firewall-cmd --permanent --add-port=3260/tcp
firewall-cmd --reload
 
OR
 
firewall-cmd --permanent --add-service=iscsi-target
firewall-cmd --reload
  • iscsi-target service available as of RHEL 7.2


Start the target

systemctl start target

iSCSI Initiator (Client)

Setting up an iSCSI initiator (client).

Install initiator package

yum install iscsi-initiator-utils

Edit initiator name and change to the name setup on the server

vim /etc/iscsi/initiatorname.iscsi
 
InitiatorName=iqn.2018-05.com.example:server1
  • Identifying client information needed to mount the disk
  • Alternatively, you could configure the server to the ISCSI initiator name given on the client by default.


Edit authentication information if set (optional)

vim /etc/iscsi/iscsid.conf
 
node.session.auth.authmethod = CHAP
node.session.auth.username = myuser
node.session.auth.password = mypassword


Enable and start the iscsi service

systemctl enable iscsi
systemctl start iscsi

Note: See 'EXAMPLES' in “man iscsiadm” if you don't remember the discovery and login commands.


Use the iscsiadm command to discover IQN Information

iscsiadm --mode discovery --type sendtargets --portal 192.168.1.151
  • –mode discovery → Find targets
  • –type sendtargets → Tell portal to send all available targets
  • –portal <ip> → server IP


Login to the Target IQN (found during discovery)

iscsiadm --mode node --target iqn.2018-05.com.example.server2:target --portal 192.168.1.151 --login
  • Default port is 3260 if not specified

View iSCSI Disk

lsblk --scsi


Create a partition

fdisk /dev/sdb


Create file system

mkfs.xfs /dev/sdb1


Get the disk UUID

blkid | grep sdb1


Mount via fstab

vim /etc/fstab
 
#Mount iscsi device
UUID=<uuid-here>  /data/iscsi  xfs  _netdev  0 0
  • _netdev → Wait for the network to be available before mounting


View Connected ISCSI Target Information

iscsiadm -m session -P 3
  • -m session → mode session
  • -P 3 → Print level 3 (0-3 range of details)

  • linux_wiki/configure_a_system_as_either_an_iscsi_target_or_initiator_that_persistently_mounts_an_iscsi_target.1527731200.txt.gz
  • Last modified: 2019/05/25 23:50
  • (external edit)