Storage-Insider-Service: iSCSI SAN Storage mit Linux Linux-Server als Storage-Server bereitstellen

Von Thomas Joos

Anbieter zum Thema

Auf Basis eines Linux-Servers können Administratoren Datenspeicher auch über iSCSI zur Verfügung stellen. Das kann man mit targetcli machen oder umfänglicher mit dem LIO iSCSI-Target bei Ubuntu-Distributionen. Es muss also nicht immer ein Windows Server sein.

Shared Storage mit Linux und iSCSI-Protokoll
Shared Storage mit Linux und iSCSI-Protokoll
(Novell)

Linux-IO-Targets sind seit Version 2.6.38 Bestandteil des Kernels in Linux, nicht nur in Ubuntu. Anbinden lassen sich an solche Systeme nicht nur Linux-Server und -Arbeitsstationen, sondern auch PCs mit Windows und Macs.

Zur Verwaltung eines iSCSI-Ziels auf Linux-Servern wird targetcli verwendet. Dieses Tool stellt die Management Shell und API zur Verwaltung des Ziels auf dem Linux-Rechner zur Verfügung.

Das ist die Aufgabe von LIO

Im Gegensatz zu LIO ist targetcli meistens nicht automatisch installiert, kann aber leicht installiert werden. LIO unterstützt jedoch nicht nur iSCSI, sondern auch Fibre Channel, Fibre Channel over Ethernet, FireWire, IBM vSCSI (virtuelles SCSI), iSER, SRP, tcm_loop, USB Gadget und vHost.

Anbinden lassen sich an solche Systeme auch Virtualisierungslösungen wie VMware vSphere oder Server mit Windows Server 2012/2012 R2 und Windows Server 2016.

Mit LIO kann Linux verschiedene SCSI-Targets über unterschiedliche Protokolle anbinden. Da die Technologie bereits in aktuellen Linux-Distributionen enthalten ist, benötigen Administratoren keine zusätzliche Erweiterung. Lediglich zur Verwaltung von LIO ist das zusätzliche Paket „Targetcli“ notwendig.

LIO wird vor allem dann eingesetzt, wenn mehrere Protokolle im Einsatz sind, und der Zugriff auf verschiedene Speichersysteme erfolgen soll. Die Aufgabe von LIO besteht darin, die SCSI-Targets zu abstrahieren. Die Technologie kommuniziert weder mit Serveranwendungen noch mit Clients. Das modulare System wird dazu verwendet iSCSI- oder andere Protokolle zu empfangen und umzusetzen.

Targetcli installieren und starten

Targetcli zur Verwaltung von LIO ist in den meisten Linux-Derivaten enthalten. Ist die Lösung noch nicht installiert, lässt sich das über die jeweilige Paketquelle leicht nachholen. Auf Linux-Servern mit Ubuntu wird dazu zum Beispiel der folgende Befehl verwendet:

sudo apt-get install --no-install-recommends targetcli

Über das Terminal wird targetcli auf Linux-Servern installiert.
Über das Terminal wird targetcli auf Linux-Servern installiert.
(Thomas Joos)

Nach der Installation von targetcli wird durch den Befehl targetcli die Shell gestartet. Durch Eingabe von ls wird eine Übersicht angezeigt. Hier sind auch die Backstores zu sehen, aus denen sich der Speicher verwenden lässt. Später kann auf diesem Weg auch die Konfiguration überprüft werden.

Nach der Installation steht die targetcli-Shell zur Erstellung von Storage-Targets zur Verfügung.
Nach der Installation steht die targetcli-Shell zur Erstellung von Storage-Targets zur Verfügung.
(Thomas Joos)

iSCSI-Ziel erstellen

Um schnell und einfach ein iSCSI-Ziel zu erstellen, wird in das Verzeichnis \backstires\iblock gewechselt. Danach wird ein neues Gerät angelegt:

cd backstores/iblock

create name=iscsi dev=/dev/sdb

Für das Anlegen sind Root-Rechte notwendig. Wird hier also nicht mit dem Root-Benutzer gearbeitet, ist der einfachste Weg, wenn targetcli über sudo targetcli gestartet wird. Die genaue Bezeichnung der jeweiligen Festplatte wird mit fdisk -l angezeigt.

Nachdem das Ziel angelegt wurde, wird es über ls angezeigt.

Der nächste Schritt besteht darin, in das iSCSI-Verzeichnis zu wechseln, und das Ziel anzulegen:

cd /iscsi

create

Das iSCSI-Ziel wird in targetcli erstellt
Das iSCSI-Ziel wird in targetcli erstellt
(Thomas Joos)

iSCSI-Ziel konfigurieren und Konfiguration speichern

Durch die erneute Verwendung von ls zeigt targetcli das neu erstellte Target im iSCSI-Bereich an. Außerdem ist hier der Name des Ziels zu sehen. Mit dem Befehl exit kann targetcli jederzeit verlassen werden. Die Konfiguration wird durch Bestätigung mit „y“ gespeichert. Es besteht also die Möglichkeit jederzeit erneut die Konfiguration aufzurufen, oder die Informationen der Konfiguration auszulesen, zum Beispiel der Name des iSCSI-Ziels.

Das iSCSI-Ziel kann jederzeit neu konfiguriert werden. Die Daten des Ziels lassen sich in targetcli anzeigen.
Das iSCSI-Ziel kann jederzeit neu konfiguriert werden. Die Daten des Ziels lassen sich in targetcli anzeigen.
(Thomas Joos)

Innerhalb der Konfiguration in targetcli, kann die aktuelle Einstellung mit dem Befehl saveconfig gespeichert werden.

iSCSI-Ziel im Netzwerk freigeben

Nachdem das Ziel konfiguriert ist, besteht der nächste Schritt darin, das Ziel über ein Portal im Netzwerk zur Verfügung zu stellen, damit Computer und Server im Netzwerk darauf zugreifen können. Im Rahmen der Konfiguration kann hier auch festgelegt werden mit welcher IP-Adresse und welchem Port das Ziel verwendet werden darf.

Für die Konfiguration wird mit cd in das Verzeichnis des Ziels gewechselt. Hier reicht es aus, die ersten Buchstaben einzugeben. Linux kann, wie Windows auch, den Namen des Verzeichnisses über die Tabulator-Taste vervollständigen.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Data-Storage und -Management

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

Nach einem Wechsel in das Verzeichnis "Portals" und der Eingabe von create erstellt Linux das Portal. Standardmäßig wird die IP-Adresse des Servers verwendet, wenn dieser nur eine IP-Adresse hat sowie der Port 3260. Um manuell eine IP-Adresse anzugeben, wird die Syntax create <IP-Adresse> verwendet.

Das iSCSI-Portal wird in der targetcli-Shell erstellt
Das iSCSI-Portal wird in der targetcli-Shell erstellt
(Thomas Joos)

Logical Units (LUNs) erstellen

Danach können die LUNs für den Zugriff auf das iSCSI-Ziel erstellt werden. Häufig findet sich für LUNs auch die Bezeichnung "Logical Unit Number". Die LUN hat die Aufgabe die Zuordnung des iSCSI-Zieles zu steuern. Um eine LUN für ein neu erstelltes Target zu definieren, muss in das Verzeichnis "luns" des Targets gewechselt werden. Um eine LUN für das iSCSI-Target in diesem Beispiel zu erstellen, wird folgender Befehl verwendet:

create /backstores/iblock/iscsi

Die erste LUN im System trägt standardmäßig die Bezeichnung "LUN 0". Diesen Namen zeigt das Linux-System nach dem Erstellen an.

Berechtigungen für den Zugriff festlegen

Ist die LUN erstellt, wird in das Verzeichnis "acls" des Targets gewechselt. Hier lässt sich festlegen, auf welches Interface der Initiator zugreifen darf. Der Befehl für einen Client-Computer mit dem erstellten Initiator "iqn.1400-06.com.microsoft:hp.contoso.int" sieht folgendermaßen aus:

create iqn.1400-06.com.microsoft:hp.contoso.int

Hier werden schlussendlich die Client-Computer eingetragen, die Zugriff auf das iSCSI-Target erhalten sollen. Mit ls kann die aktuelle Konfiguration erneut angezeigt werden.

Die Berechtigungen für ein LUN lassen sich mit targetcli festlegen.
Die Berechtigungen für ein LUN lassen sich mit targetcli festlegen.
(Thomas Joos)

Nachdem alle Einstellungen vorgenommen wurden, können diese in targetcli jederzeit angezeigt werden. Targets lassen sich auch für bestimmte Benutzer freischalten. Dazu wird im Target-Verzeichnis der folgende Befehl verwendet:

set discovery_auth enable={0,1}

Um zum Beispiel einen bestimmten Benutzer für den Zugriff zu berechtigen, wird folgender Befehl verwendet:

set discovery_auth enable=1 userid=<id> password=<Kennwort>

Durch das Setzen der Option "0" können alle Benutzer im System das Target sehen.

Die fertige Konfiguration des iSCSI-Ziels lässt sich in targetcli anzeigen.
Die fertige Konfiguration des iSCSI-Ziels lässt sich in targetcli anzeigen.
(Thomas Joos)

Konfiguration steuern, testen und löschen

Nachdem alle Konfigurationen für ein iSCSI-Ziel vorgenommen wurden, kann das Ziel getestet werden. Das Target selbst, und der Dienst, der das Target zur Verfügung stellt, kann mit dem Befehl service target getestet werden. Dazu muss targetcli aber verlassen werden (exit). Durch Eingabe von service target zeigt die Shell alle zur Verfügung stehenden Optionen an. Mit service-target status ist der aktuelle Status des Dienstes zu sehen.

Wenn die Konfiguration fehlerhaft ist, kann diese auch gelöscht werden. Der Befehl dazu ist:

delete iscsi

Sobald das Ziel erstellt ist und konfiguriert ist, steht es für Verbindungen zur Verfügung. Administratoren können auch über Windows-Server eine Anbindung an das iSCSI-Ziel vornehmen. Die Vorgehensweise dazu ist identisch mit der Anbindung anderer Ziele.

iSCSI-Festplatten mit Windows Server 2012 R2 verbinden

In Windows Server 2012 R2 können Administratoren über den iSCSI-Initiator iSCSI-Festplatten von anderen Servern verbinden. Die Vorgehensweise dazu ist folgende:

  • 1. Am besten wird nach "iscsi" im Startbildschirm gesucht, und das Tool gestartet. Beim ersten Aufruf muss der Start des entsprechenden Diensts bestätigen und die Blockierung aufgehoben werden. Danach wird folgendermaßen vorgegangen:
  • 2. Wechseln Sie zur Registerkarte Suche.
  • 3. Klicken Sie auf Portal ermitteln und geben Sie die IP-Adresse oder den Namen des Linux-Servers ein, auf dem das iSCSI-Ziel erstellt wurde.
  • 4. Wechseln Sie zur Registerkarte Ziele. Hier zeigt Windows die erstellten Laufwerke an. Sie sehen hier auch bei die erstellten Targets.
  • 5. Klicken Sie auf die Schaltfläche Verbinden. Damit baut der Server eine Verbindung mit dem Gerät auf.
  • 6. Aktivieren Sie das Kontrollkästchen Diese Verbindung der Liste der bevorzugten Ziele hinzufügen. Diese Option muss für alle Laufwerke separat eingestellt sein.
  • 7. Bestätigen Sie alle Fenster mit OK.
  • 8. Nachdem Sie Targets verbunden haben, stehen in der Datenträgerverwaltung die mit diesem iSCSI-Ziel verbundenen Laufwerke zur Verfügung.

Fazit

Mit Targetcli und einem gängigen Standard-Linux-System wie Ubuntu, Debian oder CentOS können Administratoren recht leicht ganze Festplatten oder andere Datenträger als iSCSI-Ziel zur Verfügung stellen. Da die Ziele auch für andere Betriebssysteme zur Verfügung gestellt werden können, lohnt es sich, einen Blick auf die Möglichkeiten von Linux in diesem Bereich zu werfen. LIO bietet vielfältige Möglichkeiten Datenspeicher im Netzwerk zur Verfügung zu stellen.

Der Einsatz lohnt sich für Unternehmen, die bereits auf Linux setzen, aber auch für Unternehmen, die mehr auf Windows-Server setzen, aber die Möglichkeit suchen, iSCSI-Ziele effizient im Netzwerk zur Verfügung zu stellen. An LIO lassen sich auch viele Systeme anbinden, zum Beispiel Windows-Server, VMware vSphere, aber auch Linux-Server.

(ID:43975270)