Eine zentrale Aufgabe in Rechenzentren und beim Betreiben von Servern ist die Bereitstellung von Festplattenkapazität für Serversysteme. Im Mainframe-Sektor wird dafür häufig Fiber-Channel verwendet. Bisher sind UNIX-Computer und die überwiegende Zahl der Server nicht mit zentralen Speicherlösungen verbunden.
linux-iSCSI bietet eine einfache und ziemlich preiswerte Lösung für den Anschluss von Linux-Computern an zentrale Speichersysteme. Im Prinzip repräsentiert iSCSI eine Übertragung von SCSI-Befehlen auf IP-Ebene. Wenn ein Programm eine Anfrage an ein solches Gerät startet, generiert das Betriebssystem die erforderlichen SCSI-Befehle. Diese werden in IP-Pakete eingebettet und durch Software verschlüsselt, die als iSCSI-Initiator bezeichnet wird. Die Pakete werden dann an die entsprechende entfernte iSCSI-Station, auch iSCSI-Ziel genannt, übertragen.
Viele Speicherlösungen bieten Zugriff über iSCSI, jedoch ist es auch möglich, einen Linux-Server zu betreiben, der ein iSCSI-Ziel bereitstellt. In diesem Fall ist es wichtig, dass der Linux-Server für Dateisystemdienste optimiert ist. Das iSCSI-Ziel greift nur auf Block-Geräte in Linux zu. Daher ist es möglich, RAID-Lösungen zur Vergrößerung des Festplattenspeichers sowie viel Arbeitsspeicher zum besseren Daten-Caching zu verwenden. Weitere Informationen zu RAID erhalten Sie auch unter Abschnitt 7.2, „Soft-RAID-Konfiguration“.
SUSE® Linux Enterprise Server wird mit einer Open-Source-Lösung eines iSCSI-Ziels geliefert, die sich aus dem Ardis iSCSI-Ziel entwickelt hat. Mit YaST kann eine grundlegende Konfiguration durchgeführt werden, um jedoch bestmöglich von iSCSI zu profitieren, ist eine manuelle Einrichtung erforderlich.
Die iSCSI-Zielkonfiguration exportiert bestehende Block-Geräte oder Dateisystem-Images an iSCSI-Initiatoren. Erstellen Sie zunächst die erforderlichen Block-Geräte mit YaST oder erstellen Sie Dateisystem-Images. Einen Überblick über Partitionierung erhalten Sie in Abschnitt 8.5.7, „Verwenden der YaST-Partitionierung“. Dateisystem-Images müssen manuell erstellt werden. Beispiel: Wenn Sie das Image /var/lib/xen/images/xen-0
mit der Größe 4 GB erstellen möchten, stellen Sie zunächst sicher, dass das Verzeichnis vorhanden ist, und legen Sie dann das eigentliche Image an:
mkdir -p /var/lib/xen/images dd if=/dev/zero of=/var/lib/xen/images/xen-0 seek=1M bs=4096 count=1
Um das iSCSI-Ziel zu konfigurieren, führen Sie das Modul iSNS
-Server die Ermittlungs- und Zugriffssteuerung verwalten soll, aktivieren Sie die und geben Sie die IP-Adresse des iSNS-Servers ein. Beachten Sie, dass Sie keine gültigen Hostnamen verwenden können; es muss sich um die IP-Adresse handeln. Weitere Informationen über iSNS
finden Sie unter Kapitel 13, Übersicht über iSNS für Linux.
Der Karteireiter
bietet Einstellungen für den iSCSI-Server. Die hier eingestellte Authentifizierung wird zur Erkennung von Diensten, nicht für den Zugriff auf die Ziele verwendet. Wenn Sie den Zugriff auf die Erkennung nicht beschränken möchten, wählen Sie .Wenn Authentifizierung erforderlich ist, gibt es zwei Möglichkeiten. Bei der einen Möglichkeit muss ein Initiator beweisen, dass er berechtigt ist, eine Erkennung auf dem iSCSI-Ziel auszuführen. Dies geschieht mit http://www.ietf.org/rfc/rfc3720.txt).
. Bei der anderen Möglichkeit muss das iSCSI-Ziel dem Initiator beweisen, dass es das erwartete Ziel ist. Daher kann das iSCSI-Ziel auch einen Benutzernamen und ein Passwort angeben. Dies geschieht mit . Weitere Informationen zur Authentifizierung finden Sie in RFC 3720 (sieheDie Ziele werden in dem Karteireiter
definiert. Mit erstellen Sie ein neues iSCSI-Ziel. Im ersten Dialogfeld werden Informationen zu dem zu exportierenden Gerät angefordert.Die Zeile
hat eine feste Syntax und sieht etwa wie folgt aus:iqn.yyyy-mm.<reversed domain name>
Sie beginnt stets mit iqn. jjjj-mm ist das Format des Datums, an dem dieses Ziel aktiviert wird. Weitere Informationen zu Namenskonventionen finden Sie in RFC 3722 (siehe http://www.ietf.org/rfc/rfc3722.txt).
Der
ist frei wählbar. Er sollte einem Schema folgen, um das ganze System besser zu strukturieren.Es ist möglich, einem Ziel mehrere LUNs zuzuweisen. Wählen Sie hierfür auf dem Karteireiter
ein Ziel aus, und klicken Sie auf . Fügen Sie einem vorhandenen Ziel hier neue LUNs hinzu.Fügen Sie diesen Pfad dem Block-Gerät oder Dateisystem-Image hinzu, das exportiert werden soll.
Das nächste Menü konfiguriert die Zugriffsbeschränkungen des Ziels. Die Konfiguration ist sehr ähnlich der Konfiguration der Erkennungsauthentifizierung. In diesem Fall sollte mindestens eine eingehende Authentifizierung eingerichtet werden.
beendet die Konfiguration des neuen Ziels und bringt Sie zurück zur Übersichtseite des Karteireiters . Aktivieren Sie Ihre Änderungen, indem Sie auf klicken.
Konfigurieren Sie ein iSCSI-Ziel in /etc/ietd.conf
. Alle Parameter in dieser Datei vor der ersten Target-Deklaration sind für die Datei global. Authentifizierungsinformationen in diesem Bereich haben eine besondere Bedeutung: Sie sind nicht global, werden jedoch für die Erkennung des iSCSI-Ziels verwendet.
Wenn Sie auf einen iSNS
-Server zugreifen, müssen Sie bei der Konfiguration zuerst dem Ziel diesen Server mitteilen. Beachten Sie, dass die Adresse des iSNS
-Servers stets als IP-Adresse angegeben werden muss. Ein normaler Domänenname ist nicht ausreichend. Die Konfiguration für diese Funktionalität sieht folgendermaßen aus:
iSNSServer 192.168.1.111 iSNSAccessControl no
Bei dieser Konfiguration registriert sich das iSCSI
-Ziel selbst beim iSNS
-Server, der wiederum die Ermittlung für Initiatoren zur Verfügung stellt. Weitere Informationen über iSNS
finden Sie unter Kapitel 13, Übersicht über iSNS für Linux Beachten Sie, dass die Zugriffssteuerung für die iSNS
-Ermittlung nicht unterstützt wird. Behalten Sie die Einstellung iSNSAccessControl no
bei.
Sämtliche direkte iSCSI-Authentifizierungen sind in zwei Richtungen möglich. Das iSCSI-Ziel kann verlangen, dass sich der iSCSI-Initiator mit dem IncomingUser
authentifiziert, der mehrmals hinzugefügt werden kann. Der iSCSI-Initiator kann auch verlangen, dass sich das iSCSI-Ziel authentifiziert. Verwenden Sie dafür OutgoingUser
. Beide haben dieselbe Syntax:
IncomingUser <username> <password> OutgoingUser <username> <password>
Auf die Authentifizierung folgen eine oder mehrere Zieldefinitionen. Fügen Sie für jedes Ziel einen Abschnitt Target
hinzu. Dieser Abschnitt beginnt immer mit dem Bezeichner Target
, auf die Definitionen von logischen Einheitennummern (LUNs) folgen:
Target iqn.yyyy-mm.<reversed domain name>[:identifier] Lun 0 Path=/dev/mapper/system-v3 Lun 1 Path=/dev/hda4 Lun 2 Path=/var/lib/xen/images/xen-1,Type=fileio
In der Zeile Target
gibt yyyy-mm das Datum an, an dem dieses Ziel aktiviert wird, und der Bezeichner ist frei wählbar. Weitere Informationen zu Namenskonventionen finden Sie in RFC 3722 (siehe http://www.ietf.org/rfc/rfc3722.txt). Drei verschiedene Block-Geräte werden in diesem Beispiel exportiert. Das erste ist ein logisches Volume (siehe auch Abschnitt 7.1, „LVM-Konfiguration“), das zweite ist eine IDE-Partition und das dritte ist ein Image, das im lokalen Dateisystem verfügbar ist. Für einen iSCSI-Initiator sehen alle wie Block-Geräte aus.
Bevor Sie das iSCSI-Ziel aktivieren, fügen Sie mindestens einen IncomingUser
nach den Lun
-Definitionen hinzu. Damit wird die Authentifizierung für die Verwendung dieses Ziels festgelegt.
Um alle Änderungen zu aktivieren, starten Sie den iscsitarget-Daemon neu mit rcopen-iscsi Erneut starten
. Prüfen Sie Ihre Konfiguration im Dateisystem /proc
:
cat /proc/net/iet/volume tid:1 name:iqn.2006-02.com.example.iserv:systems lun:0 state:0 iotype:fileio path:/dev/mapper/system-v3 lun:1 state:0 iotype:fileio path:/dev/hda4 lun:2 state:0 iotype:fileio path:/var/lib/xen/images/xen-1
Es gibt noch viele weitere Optionen, die das Verhalten des iSCSI-Ziels steuern. Informationen dazu finden Sie auf der Manualpage von ietd.conf
.
Aktive Sitzungen werden ebenfalls im Dateisystem /proc
angezeigt. Für jeden Initiator wird ein zusätzlicher Eintrag zu /proc/net/iet/session
hinzugefügt:
cat /proc/net/iet/session tid:1 name:iqn.2006-02.com.example.iserv:system-v3 sid:562949957419520 initiator:iqn.2005-11.de.suse:cn=rome.example.com,01.9ff842f5645 cid:0 ip:192.168.178.42 state:active hd:none dd:none sid:281474980708864 initiator:iqn.2006-02.de.suse:01.6f7259c88b70 cid:0 ip:192.168.178.72 state:active hd:none dd:none
Wenn Änderungen an der iSCSI-Zielkonfiguration erforderlich sind, müssen Sie immer das Ziel neu starten, um die Änderungen zu aktivieren, die in der Konfigurationsdatei vorgenommen wurden. Leider werden alle aktiven Sitzungen durch diesen Vorgang unterbrochen. Um einen ungestörten Betrieb zu wahren, sollten die Änderungen in der Hauptkonfigurationsdatei /etc/ietd.conf
erfolgen, aber auch manuell in der aktuellen Konfiguration mit dem Administrationsdienstprogramm ietadm vorgenommen werden.
Um ein neues iSCSI-Ziel mit einer LUN zu erstellen, aktualisieren Sie zunächst Ihre Konfigurationsdatei. Der zusätzliche Eintrag könnte folgendermaßen aussehen:
Target iqn.2006-02.com.example.iserv:system2 Lun 0 Path=/dev/mapper/system-swap2 IncomingUser joe secret
So richten Sie diese Konfiguration manuell ein:
Erstellen Sie ein neues Ziel mit dem Befehl ietadm --op new --tid=2 --params Name=iqn.2006-02.com.example.iserv:system2.
Fügen Sie eine logische Einheit hinzu mit ietadm --op new --tid=2 --lun=0 --params Path=/dev/mapper/system-swap2.
Definieren Sie die Kombination aus Benutzername und Passwort für dieses Ziel mit ietadm --op new --tid=2 --user --params=IncomingUser=joe,Password=secret.
Prüfen Sie die Konfiguration mit cat /proc/net/iet/volume.
Sie können auch aktive Verbindungen löschen. Prüfen Sie zunächst alle aktiven Verbindungen mit dem Befehl cat /proc/net/iet/session. Das kann wie folgt aussehen:
cat /proc/net/iet/session tid:1 name:iqn.2006-03.com.example.iserv:system sid:281474980708864 initiator:iqn.1996-04.com.example:01.82725735af5 cid:0 ip:192.168.178.72 state:active hd:none dd:none
Um die Sitzung mit der Sitzungs-ID 281474980708864 zu löschen, verwenden Sie den Befehl ietadm --op delete --tid=1 --sid=281474980708864 --cid=0. Beachten Sie, dass das Gerät dadurch auf dem Clientsystem unzugänglich wird und sich Prozesse, die auf dieses Gerät zugreifen, wahrscheinlich aufhängen.
ietadm kann auch zum Ändern verschiedener Konfigurationsparameter verwendet werden. Beziehen Sie eine Liste der globalen Variablen mit ietadm --op show --tid=1 --sid=0. Die Ausgabe sieht wie folgt aus:
InitialR2T=Yes ImmediateData=Yes MaxConnections=1 MaxRecvDataSegmentLength=8192 MaxXmitDataSegmentLength=8192 MaxBurstLength=262144 FirstBurstLength=65536 DefaultTime2Wait=2 DefaultTime2Retain=20 MaxOutstandingR2T=1 DataPDUInOrder=Yes DataSequenceInOrder=Yes ErrorRecoveryLevel=0 HeaderDigest=None DataDigest=None OFMarker=No IFMarker=No OFMarkInt=Reject IFMarkInt=Reject
All diese Parameter lassen sich auf einfache Weise ändern. Wenn Sie beispielsweise die maximale Anzahl der Verbindungen auf zwei ändern möchten, verwenden Sie ietadm --op update --tid=1 --params=MaxConnections=2. In der Datei /etc/ietd.conf
sollte die zugehörige Leitung aussehen wie MaxConnections 2
.
![]() | Aktualisieren von ietd.conf gemäß den Änderungen mithilfe von ietadm |
---|---|
Die Änderungen, die Sie mit dem Befehl ietadm vornehmen, sind für das System nicht permanent. Diese Änderungen gehen beim nächsten Neustart verloren, wenn sie nicht in die Konfigurationsdatei |
Es gibt etliche weitere Optionen für den Befehl ietadm. Einen Überblick erhalten Sie mit ietadm -h. Die Abkürzungen sind dort die Ziel-ID (tid), Sitzungs-ID (sid) und Verbindungs-ID (cid). Diese können auch in /proc/net/iet/session
gefunden werden.