Nun zur Installation auf dem Dockerhost. Es wird das Paket „open-iscsi“ benötigt und muss installiert werden.
apt install open-iscsi
Nach der erfolgreichen Installation muss die Datei /etc/iscsi/iscsid.conf bearbeitet werden. In dieser globalen Konfigurationsdatei müssen die Zugangsdaten, Autostart und globale Parameter eingetragen werden.
vim /etc/iscsi/iscsid.conf
Wenn der Parameter „node.startup“ bei dem folgenden Discovery Prozess nicht auf „automatic“ steht, wird bei einem Neustart des Systems das iSCSI Volume nicht automatisch mit eingebunden. Das lässt sich zwar in der config-Datei des entsprechenden Nodes noch manuell anpassen, aber daher sollten folgende Parameter so gesetzt sein, damit das manuelle ändern überflüssig wird.
node.startup = automatic node.leading_login = No node.session.auth.authmethod = CHAP node.session.auth.username = docker node.session.auth.password = sicheresPasswort discovery.sendtargets.auth.username = docker discovery.sendtargets.auth.password = sicheresPasswort node.session.timeo.replacement_timeout = 120 node.conn[0].timeo.login_timeout = 15 node.conn[0].timeo.logout_timeout = 15 node.conn[0].timeo.noop_out_interval = 10 node.conn[0].timeo.noop_out_timeout = 15 node.session.iscsi.InitialR2T = No node.session.iscsi.ImmediateData = Yes node.session.iscsi.FirstBurstLength = 262144 node.session.iscsi.MaxBurstLength = 262144 node.conn[0].iscsi.MaxRecvDataSegmentLength = 65536
Ist das geschehen, so muss der iSCSI Daemon neu gestartet werden. Danach kann eine iSCSI Discovery ausgeführt werden.
service iscsid restart iscsiadm -m discovery -t sendtargets -p 192.168.3.6
Nun erhält man eine Auflistung aller verfügbaren Targets. Hat die Synology mehrere IP-Adressen, werden auch diese angezeigt.
Für jedes Target wird im Verzeichnis /etc/iscsi/nodes ein Verzeichnis erstellt, in dem sich wiederum Unterverzeichnisse für die jeweiligen IP-Adressen befinden. Da ich nur dynamisch zugeordnete IPv6 Adressen bekomme, habe ich die Verzeichnisse mit den IPv6 Targets gelöscht. In diesen Verzeichnissen befinden sich die einzelnen Konfigurationsdateien, die aus der globalen Konfigurationsdatei abgeleitet wurden. Falls individuelle Anpassungen nötig sind, so sind sie in diesen Dateien zu tätigen.
Nun kann man sich bei dem iSCSI-Target einlogen. Die eigene IQN kann man im SAN-Manager der Synology Diskstation bequem kopieren.
iscsiadm -m node -T iqn.2000-01.com.synology:NAS.Target-1.a07b2e5493a -p 192.168.3.6:3260 --login
Nach erfolgreichem Login, kann man im SAN-Manager noch einen Host kreieren, der ausschließlich auf das Target zugreifen darf. Das erhöht die Sicherheit noch ein wenig.
Ist die iSCSI-Verbindung zwischen dem Debian-Linux und der Synology Diskstation etabliert, so kann man das in den Kernel Debug Messages nachsehen.
dmesg
Jetzt kann man zum Beispiel mit fdisk eine oder mehrere Partitionen auf dem Laufwerk [sdb] anlegen, mit einem Dateisystem formatieren und schließlich in ein Verzeichnis mounten. Zum automatischen mounten per /etc/fstab wird im Debian Wiki die Verwendung von Labeln empfohlen.
Für alle, die mit fdisk noch nicht gearbeitet haben, kommt hier eine kurze Anleitung: Als erstes muss man mit der Option „g“ eine neue GPT Partition erstellen („o“ für DOS geht auch, ist von der Festplattengröße abhängig). Danach erstellt man eine neue Partition mit „n“. Wenn man die gesamte Größe der Festplatte in eine Partition packen möchte, bestätigt man die folgenden Fragen nur mit <ENTER>. Mit der Option „w“ schreibt man die Partitionstabelle auf die Festplatte und beendet fdisk.
Als Filesystem habe ich mich für ext4 entschieden. Andere sind natürlich auch möglich. Zum Erstellen eines Disklabels dient „e2label“, einfach die Partition gefolgt vom Label angeben. Nun noch das Verzeichnis anlegen, in das die iSCSI Partition gemountet werden soll.
fdisk /dev/sdb mkfs.ext4 /dev/sdb1 e2label /dev/sdb1 dockerdisk mkdir /mnt/docker
Um die Partition schon beim Booten zu mounten, muss in die /etc/fstab folgendes eingetragen werden. Wichtig ist die Option „_netdev“, damit dieser mount erst durchgeführt wird, wenn das Netzwerk komplett verfügbar ist.
LABEL=dockerdisk /mnt/docker ext4 defaults,_netdev 0 0
Nach einem Neustart des Systems müsste nun die neue iSCSI Partition /dev/sdb1 in das Verzeichnis /mnt/docker gemountet worden sein.
mount |grep sdb1