iSCSI is an acronym that stands for Internet Small Computer Systems Interface. It is a Storage Area Network (SAN) Protocol that enables block-level SCSI data transport from Storage arrays to client computers that are not directly connected to them. iSCSI SAN consists of iSCSI Initiators which are the clients and iSCSI targets which are the servers on Storage Array controllers. They are connected by an iSCSI protocol and represented by a unique string known as iSCSI Qualified Name (iQN).

In iSCSI technology, the iSCSI initiator or commonly known as the iSCSI client needs to be installed on your system. It is then added to an initiator group or what is also known as the Client definition. These groups help identify which clients are allowed to connect with the storage server (the iSCSI targets). Logical Unit Numbers (LUNs) are created and assigned to a group or client definition. LUNs are representations of devices that are part of the physical iSCSI target. If the Client and server are on the same IP network, The initiator can automatically discover the target. Once connected, the LUN is available for use.

iSCSI Initiator

iSCSI Initiator is installed on the client machine to send data. Initiators come in two varieties; software and hardware. With Software, the Initiator is just a driver that handles requests and pairs the network interface drivers and the SCSI drivers together to make it function. With hardware, the Initiator is an iSCSI Host Bus Adapter (HBA) which is an ethernet card with iSCSI ASIC onboard. The HBA is more expensive than the software that generally comes with the operating system, but in return, it has higher performance and more functionality.

This guide takes you through the process of configuring an iSCSI Initiator on CentOS 9|AlmaLinux 9|RHEL 9 systems.

Setup pre-reqs

An IP of the Target needs to be known. I will use the iSCSI target from the Configure iSCSI target guide. You can also follow the steps in that guide to create a target.

Configure iSCSI Initiator on CentOS 9|AlmaLinux 9|RHEL 9 systems

Update your system packages.

sudo yum update -y

Install iSCSI initiator utilities with the following command.

sudo yum -y install iscsi-initiator-utils

Check the initiator name using the following command

$ cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:4e8ff68af729

If you changed the name while setting up iSCSI target ACLs. You will have to configure the initiator file to the new name.

sudo vi /etc/iscsi/initiatorname.iscsi

Change the initiator’s name to match the one set on the target server.

InitiatorName=iqn.1994-05.com.redhat:4e8ff68af729

Save and exit the file.

Edit the iSCSI configuration file to add the authentication details.

sudo vi /etc/iscsi/iscsid.conf

Uncomment the following lines and edit as shown.

node.session.auth.authmethod = CHAP
node.session.auth.username = technix
node.session.auth.password = technix_passwd

Save and exit the file, then start the iSCSI daemon.

sudo systemctl start iscsid.service
sudo systemctl enable iscsid.service

Discover the target by using the target’s IP address as shown below. The response will be the target’s IP address and iQN address.

$ sudo iscsiadm -m discovery -t st -p 192.168.200.40
192.168.200.40:3260,1 iqn.2022-06.com.redhat:technixleo

Confirm its status after discovery.

$ sudo iscsiadm -m node -o show

##Sample Outpout ##
# BEGIN RECORD 2.1.4
node.name = iqn.2022-06.com.redhat:technixleo
node.tpgt = 1
node.startup = automatic
node.leading_login = No
iface.iscsi_ifacename = default
.....
.....

You can log in to the server using the iQN

$ sudo iscsiadm -m node -T iqn.2022-06.com.redhat:technixleo -l
Logging in to [iface: default, target: iqn.2022-06.com.redhat:technixleo, portal: 192.168.200.40,3260]
Login to [iface: default, target: iqn.2022-06.com.redhat:technixleo, portal: 192.168.200.40,3260] successful.

Confirm the established session.

$ sudo iscsiadm -m session -o show
tcp: [2] 192.168.200.40:3260,1 iqn.2022-06.com.redhat:technixleo (non-flash)

Confirm the partitions with the following command.

$ cat /proc/partitions

major minor  #blocks  name

   8        0   33554432 sda
   8        1    1048576 sda1
   8        2   32504832 sda2
  11        0    8519680 sr0
 253        0   29143040 dm-0
 253        1    3358720 dm-1
   8       16    5242880 sdb
   8       32   33554432 sdc

The new partition ‘sdb‘ of size 5GB has been added from the target server.

To find the iSCSI disk name you can also use the following command.

$ sudo grep "Attached SCSI" /var/log/messages
Jul 30 10:30:02 cent9 kernel: sd 3:0:0:0: [sdb] Attached SCSI disk

Next, we are going to create a file on that disk.

$ sudo mkfs.ext4 /dev/sdb
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: b0acbfbc-106d-41aa-9446-b26182841ac8
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

Mount the file system. This is done by first creating a directory to mount the file and then mounting the file.

sudo mkdir /mnt/iscsi
sudo mount /dev/sdb /mnt/iscsi

Verify the file system has been mounted:

$ df -hT
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs               tmpfs     3.8G     0  3.8G   0% /dev/shm
tmpfs               tmpfs     1.6G  9.2M  1.5G   1% /run
/dev/mapper/cs-root xfs        28G  4.6G   24G  17% /
/dev/sda1           xfs      1014M  466M  549M  46% /boot
tmpfs               tmpfs     769M   96K  768M   1% /run/user/1000
/dev/sr0            iso9660   8.2G  8.2G     0 100% /run/media/technixleo/CentOS-Stream-9-BaseOS-x86_64
/dev/sdb            ext4      4.9G   24K  4.6G   1% /mnt/iscsi

Automount ISCSI storage

To make the file persistent even on boot, edit the fstab file. But first Identify the UUID of the ISCSI disk.

 $ sudo blkid /dev/sdb
/dev/sdb: UUID="b0acbfbc-106d-41aa-9446-b26182841ac8" BLOCK_SIZE="4096" TYPE="ext4"

Open the fstab file and add the UUID of the ISCSI disk.

$ sudo vi /etc/fstab
UUID=b0acbfbc-106d-41aa-9446-b26182841ac8 /mnt/iscsi      ext4         defaults                      0 0

Save and exit the file.

You can verify the disk has been mounted.

$ mount
....
/dev/sdb on /mnt/iscsi type ext4 (rw,relatime,seclabel,stripe=2048)

To unmount a disk

sudo umount /mnt/iscsi

To log out of a session, use the following command.

$ sudo iscsiadm -m node -T  iqn.2022-06.com.redhat:technixleo -u
Logging out of session [sid: 1, target: iqn.2022-06.com.redhat:technixleo, portal: 192.168.200.40,3260]
Logout of [sid: 1, target: iqn.2022-06.com.redhat:technixleo, portal: 192.168.200.40,3260] successful.

Conclusion

From this guide, we have gone through an overview of iSCSI and what it entails. We have also configured an iSCSI Initiator on CentOS 9|AlmaLinux 9|RHEL 9 systems. We have seen that an iSCSI Initiator is set on a client machine and handles the requests to make an iSCSI function.

LEAVE A REPLY

Please enter your comment!
Please enter your name here