TrueNAS iSCSI Blockdevice Share einrichten und Linux Client via open-iscsi einbinden

reinhard@finalmedia.de Sun 07 Nov 2021 07:10:40 PM CET

Setup der Serverseite, iSCSI Share in TrueNAS

Ich setze eine bestehende TrueNAS Installation voraus. Siehe dazu anderes Tutorial/Howto. Unser Demo TrueNAS hört hier im Beispiel auf der IPv4 10.10.10.10

Wähle unter dem Menüpunkt Sharing den Punkt Block Shares (iSCSI) aus.

Wir klicken auf "Wizard" und benutzen den Wizard wie folgt:

Wir wählen den Namen demodata und den Extent Type "Device". Mittels "Create New" erzeugen wir ein neues Device

.

Wir wählen dabei aus, dass das Device im Pool namens "Storage" angelegt werden wird

In unserem Beispiel definieren wir eine Größe von 3 GB für die Demo und wählen "Modern OS" bzgl. der Sharing Platform

Im nächsten Schritt wählen wir bei Portal ebenso "Create New"

Und wählen CHAP. erzeugen eine neue Authentication Group mit der Id 1 und setzen die Beispiel-Credentials


User: demouser
Passwort: demopasswort123

Das Kennwort gibt man dabei im Bestätigungsfeld (confirm) erneut ein. Das sieht im Wizard dann ausgefüllt so aus:

Die nachfolgenden Felder lassen wir leer und klicken Next. (Hier könnte man definieren, welche hostnamen/ipadressebereiche den share nutzen dürfen. Für unsere Demo ist das nicht relevant)

Es wird uns nun eine Zusammenfassung angezeigt, die wir mit Klick auf Submit bestätigen

Wir klicken nun auf Save

Und anschließend Enable Service

Setup des Clients unter Linux

root werden. iscsi Paket installieren


apt-get install -y open-iscsi

Als root die Konfiguration mit den CHAP Secret Zugangsdaten anlegen



# alte iscsid config sicheren
cp /etc/iscsi/iscsid.conf /etc/iscsi/iscsid.bak

# neue iscsid config erstellen
cat << :::eof::: > /etc/iscsi/iscsid.conf
node.active_cnx = 1
node.startup = manual
node.session.auth.username = %USERNAME%
node.session.auth.password = %USERPASS%
node.session.timeo.replacement_timeout = 120
node.session.err_timeo.abort_timeout = 10
node.session.err_timeo.reset_timeout = 30
node.session.iscsi.InitialR2T = No
node.session.iscsi.ImmediateData = Yes
node.session.iscsi.FirstBurstLength = 262144
node.session.iscsi.MaxBurstLength = 16776192
node.session.iscsi.DefaultTime2Wait = 0
node.session.iscsi.DefaultTime2Retain = 0
node.session.iscsi.MaxConnections = 0
node.conn[0].iscsi.HeaderDigest = None
node.conn[0].iscsi.DataDigest = None
node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = %USERNAME%
discovery.sendtargets.auth.password = %USERPASS%
:::eof:::

# config soll nur von root lesbar sein
chmod 600 /etc/iscsi/iscsid.conf
chown root:root /etc/iscsi/iscsid.conf

# Nun die geheimen Credentials in der config anpassen.
# Dazu in den nachfolgenden sedline natürlich den String
# demouser und demopasswort123 anpassen!

sed -i "s/%USERNAME%/demouser/g" /etc/iscsi/iscsid.conf
sed -i "s/%USERPASS%/demopasswort123/g" /etc/iscsi/iscsid.conf


Dann iscsi Discovery fahren. Natürlich die IP-Adresse 10.10.10.10 durch die eures TrueNAS anpassen! Port bleibt die 3260.


iscsiadm -m discovery -t sendtargets -p 10.10.10.10:3260 -d3

Das liefert dir soetwas wie die nachfolgende Zeile, die den verfügbaren Share listet


10.10.10.10:3260,1 iqn.2005-10.org.freenas.ctl:demodata

Nun via login das blockdevice connecten


iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:demodata -p 10.10.10.10:3260 --logout
iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:demodata -p 10.10.10.10:3260 --login 

Aktive Session prüfen mittels


iscsiadm --mode session

Mit lsblk siehst du nun, dass das neue Device als neues "lokales" Laufwerk zur Verfügung steht. Beispielweise /dev/sdb, aber eben auch via /dev/disk/by-path/ip-10.10.10.10\:3260-iscsi-iqn.2005-10.org.freenas.ctl\:demodata-lun-0

Neues Blockdevice mit ext4 formatieren. Hier kannst du natürlich auch partitionieren, lvm benutzen und mit luks arbeiten. Hier formatieren wir jetzt der Einfachheit halber das ganze Device mit ext4.


mkfs.ext4 /dev/disk/by-path/ip-10.10.10.10\:3260-iscsi-iqn.2005-10.org.freenas.ctl\:demodata-lun-0

Die uuid des Filesystems wird dir angezeit. Du kannst die uuid auch jederzeit nachträglich in Erfahrung bringen mittels


apt-get install libblkid1
blkid /dev/disk/by-path/ip-10.10.10.10\:3260-iscsi-iqn.2005-10.org.freenas.ctl\:demodata-lun-0

Mountpoint erstellen und die uuid des ext4 dateisystems auf dem iscsi device in die /etc/fstab einbinden, sowie einmounten.


mkdir /mnt/iscsi_demodata
echo "UUID=..... /mnt/iscsi_demodata ext4 defaults,_netdev 0 0" >> /etc/fstab
mount /mnt/iscsi_demodata
ls /mnt/iscsi_demodata

Wenn du möchtest, dass dir nach einem reboot der share automatisch verbunden und gemountet wird, musst du