Scope/Description
In this tutorial, we will explain how to setup iSCSI targets on Ubuntu 20.04 server
The iSCSI target is LIO and is managed via targetcli
(We don’t recommend using bonds with iSCSI, we recommend using Multi-path instead)
Prerequisites
- ZFS Storage pool configured
Steps
Install needed packages for iSCSI
apt install targetcli-fb
Create ZFS dataset to store images for iSCSI images
- Create a zfs dataset named “images”
- Multiple iscsi lun files can be stored in this single dataset or an individual dataset can be created for each iscsi lun.
Configure iSCSI Target
Create Block Backstores for iSCSI LUNS
- Create a sparse image file before using targetcli, creating large files in targetcli is a slow process
root@ceph-ubuntu1:~# cd /tank/images root@ceph-ubuntu1:~# dd if=/dev/zero of=lun0 bs=1 count=0 seek=(size of LUN)
- Launch “targetcli” and create a fileio backstore with the sparse image created above
root@ceph-ubuntu1:~# targetcli targetcli shell version 2.1.51 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> cd backstores/fileio /backstores/fileio> create lun0 /tank/images/lun0
- Verify your block devices have been created in targetcli
/backstores/fileio> ls o- fileio ..................................................................................................... [Storage Objects: 1] o- lun0 ...................................................................... [/tank/images/lun0 (1.0TiB) write-back deactivated] o- alua ....................................................................................................... [ALUA Groups: 1] o- default_tg_pt_gp ........................................................................... [ALUA state: Active/optimized]
Create an iSCSI Target
- Create the iSCSI target by selecting its name
- naming rule : iqn.YYYY-MM.REVERSE.DOMAIN.NAME:unique
- In this example the target name will be “iqn.2021-04.com.45lab:ubuntu.iscsi0”
/backstores/block> cd /iscsi /iscsi> create iqn.2021-04.com.45lab:ubuntu.iscsi0 Created target iqn.2021-04.com.45lab:ubuntu.iscsi0. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260.
Create iSCSI LUNs
/iscsi> cd iqn.2021-04.com.45lab:ubuntu.iscsi0/tpg1/luns /iscsi/iqn.20...si0/tpg1/luns> create /backstores/fileio/lun0 Created LUN 0.
Configure ACL (Inititator IQN)
- The ACL to be created is the initiator IQN name of the client that will be connecting to the LUN.
- In the example the Windows client’s IQN is “iqn.1991-05.com.microsoft:win10”
/iscsi/iqn.20...si0/tpg1/luns> cd /iscsi/iqn.2021-04.com.45lab:ubuntu.iscsi0/tpg1/acls /iscsi/iqn.20...si0/tpg1/acls> create iqn.1991-05.com.microsoft:win10 Created Node ACL for iqn.1991-05.com.microsoft:win10 Created mapped LUN 0.
Configure Authentication
- Configure userid and password when connecting to the LUN from the client. This is optional.
- Choose any name and password for “userid” and “password”
/iscsi/iqn.20...si0/tpg1/acls> cd iqn.1991-05.com.microsoft:win10/ /iscsi/iqn.20...crosoft:win10> set auth userid=username Parameter userid is now 'username'. /iscsi/iqn.20...crosoft:win10> set auth password=password Parameter password is now 'password'.
Exit and Save Configuration
/iscsi/iqn.20...crosoft:win10> exit Global pref auto_save_on_exit=true Configuration saved to /etc/rtslib-fb-target/saveconfig.json
Open Firewall for iSCSI and enable rtslib service
- In Houston UI add “iscsi” service to firewall in the Networking Module
- Enable “rtslib-fb-targetctl” service
Verification
- Open “iSCSI Initiator”
- Enter Target IP into “Target” field
- Hit quick-connect
Troubleshooting
- When trying to delete an iSCSI filesystem there will be errors preventing the removal, in order to destroy it you will have to remove the iqn file and the lun0 file.
- in the targetcli cd into the iscsi directory
cd iscsi
- Then use the delete command to remove the iqn file
/iscsi> delete iqn.2021-04.com.45lab:ubuntu.iscsi0 Deleted Target iqn.2021-04.com.45lab:ubuntu.iscsi0.
- The cd into /backstores/fileio/
cd /backstores/fileio/
- Use the delete command again to remove lun0
/backstores/fileio> delete lun0 Deleted storage object lun0.
Views: 8467