Ein DNS für iSCSI

Verwaltet man mehr als ein iSCSI-Portal, stellt sich die Frage, wie sich die Targets von zentraler Stelle bekanntmachen lassen. Dabei ist der Internet Storage Name Service (iSNS) das Werkzeug zur Realisierung einer zentralen Verwaltungsstruktur.

Der iSNS stellt auf dem Port 3205 einen Dienst zur Verfügung an den die iSCSI-Portale ihre Targets und deren Status übermitteln. Initiators können hier an zentraler Stelle alle verfügbaren Targets abfragen. Die grundlegende Funktionsweise ähnelt der des DNS.

Beim iSNS meldet jedes iSCSI-Portal seine Targets und die Initiators ihre Erreichbarkeit an (Abbildung 2). Damit ein Initiator nun entsprechende Targets findet, fragt er nicht mehr direkt beim möglichen iSCSI-Portal, sondern beim iSNS nach verfügbaren Targets. Eine konkrete Verbindung zwischen Initiator und Target erfolgt aber weiterhin direkt. Damit der »ietd« seine Target an den iSNS meldet ist in der Konfiguration ledigilch die Zeile »ISNS‑Server ip‑adresse« einzutragen. Für das SCSI Target Framework sind in der »rc. local« die folgenden Einträge an erster Stelle vor dem Einrichten der Targets einzufügen. Sie übertragen beim Booten des Systems die Einstellungen für die Targets an den iSNS:

tgtadm ‑‑op update ‑m sys ‑n iSNS ‑v On
tgtadm ‑‑op update ‑m sys ‑n iSNSServerIP ‑v <ip‑adresse>

Mit dem Befehl »tgtadm ‑‑op show ‑m sys« kann der Serververwalter die aktuelle iSNS-Konfiguration des TGT-Daemon anzeigen. Nach der Festlegung der iSNS-Konfiguration werden alle für den Name Service relevanten Modifikationen direkt an den iSNS-Server weitergeleitet. Wird der Daemon beendet, so meldet dieser auch diese Target-Statusänderungen an den Storage Name Service.

Abbildung 2: Ein eigener Namensdienst erleichtert das Auffinden von iSCSI-Targets durch die Initiators.

Neben den Targets vermerkt das iSNS auch die Initiators. Bei der Open iSCSI-Implementierung muss man nur die folgenden Parameter in die Konfiguration aufnehmen beziehungsweise aktivieren.

# /etc/iscsi/issid.conf
isns.address = isns‑ip
isns.port = 3205

Um mit einem Initiator nun ein Verzeichnis aller Targets zu erhalten reicht ein einfaches »iscsiadm ‑m discovery ‑t isns« aus. Nun werden für alle bekannten Targets entsprechende Nodes angelegt und die Konfiguration kann angepasst werden.

Der Internet Storage Name Service selbst wird durch die Kommandozeilenbefehle »isnsadmin« und »isnsc« verwaltet. Sie gestatten es nicht nur eine Liste aller iSCSI-Komponenten anzuzeigen, sondern auch Komponenten hinzuzufügen oder zu löschen (Listing 2). Während der Server-Betreuer Optionen und Parameter bei »isnsadm« direkt angeben muss ist der »isnsc« ein interaktives Kommandozeilenwerkzeug.

Tipps und Tricks aus der Praxis

Um iSCSI in größeren Umgebungen einzusetzen ist eine physikalische Trennung des normalen LAN vom Storage-LAN unabdingbar. Diese Trennung verhindert, dass Lastspitzen, wie sie zum Beispiel Backups verursachen, zu Engpässen auf dem iSCSI-Speicher führen. Aber auch die Sicherheit, Hochverfügbarkeit und Multipathing sind hierdurch einfacher zu realisieren. Zwar verteuert ein seperates Speichernetz die Installation, als Vorteil von iSCSI gegenüber Fibre Channel bleibt aber die Tatsache, dass herkömmliche, vergleichsweise preisgünstige Switche zum Aufbau einer getrennten Struktur verwendbar sind.

Generell werden alle Kommandos und Daten zwischen Target und Initiator im Klartext übertragen. Auch wenn die Kennwörter in HashForm vorliegen, ist dies nur eine marginale Absicherung. Eine separate Sicherung sollte, zumindest wenn keine getrennten Netze verwendet werden, mittels IPSec oder anderer VPNLösungen erfolgen. Viele Dateisysteme, die nicht für den Einsatz in Clustern vorgesehen sind, können nur von einem Initiator zur selben Zeit eingebunden werden. Dies trifft zum Beispiel für alle ExtDateisysteme zu. Hierauf ist auch konsequent zu achten, andernfalls könnte ein korruptes Dateisystem oder schlimmstenfalls vollständiger Datenverlust die Folge sein. iSCSI ist auf diesen Fall vorbereitet und kann durch die Target-Konfiguration die maximale Anzahl gleichzeitiger Verbindungen limitieren. Der Parameter »MaxConnections« in der Target-Konfiguration schreibt die maximale Anzahl der zeitgleichen Verbindungen fest. Für die meisten Dateisysteme gilt hier der Wert von »1«. Für iSCSI-Geräte in hochverfügbaren Umgebungen, bei denen mehrere Systeme auf dasselbe Target zugreifen müssen, ein höherer Wert. Dabei ist sicherzustellen, dass das Gerät nur auf einem System in den Verzeichnisbaum eingebunden ist. Anders sieht es hingegen bei Cluster-Dateisystemen wie zum Beispiel OCFS2 aus. Hier hängt die Anzahl der »MaxConnections« von der Konfiguration ab.

Listing 3: iSNS auf der Kommandozeile

isnsadm‑query
isnsadm ‑a <ip‑adresse‑isns> ‑q iscsi
IETF iSNS Open Source Client, v1.2.0.
Connecting to 192.168.0.100...
We have a connection:0x104
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
iSCSI ID : iqn.1993‑08.org.
debian:01:5e7e4157aa15
Type: 0x2 (Initiator)
‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑‑
iSCSI ID : iqn.2010‑05.de.os‑t:iet_storage
Type: 0x1 (Target)
comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019