iSCSI Device als Speichermedium für Docker Volumes


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

Seiten: 1 2