iscsitarget
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel beschreibt das Bereitstellen von iSCSI-Freigaben über den Dienst ietd (iSCSI Enterprise Target) mit aus dem Paket iscsitarget (bis einschließlich Ubuntu 16.04 in universe).
Alternativen Dienste, um iSCSI-Targets anzubieten, finden sich im Artikel iSCSI.
Achtung!
iscsitarget lässt sich beim Einsatz des HWE-Kernels nicht starten, da Kernel-Module fehlen - siehe auch 1612627. Wenn du weißt, wie man dies beheben kann, ergänze bitte einen Abschnitt 'Problembehebung'.
Installation¶
iscsitarget mit dem Dienst ietd kann aus der Paketverwaltung installiert werden. Dazu muss das Paket
iscsitarget (bis Ubuntu 16.04 in universe)
Befehl zum Installieren der Pakete:
sudo apt-get install iscsitarget
Oder mit apturl installieren, Link: apt://iscsitarget
installiert werden [1].
Konfiguration¶
Um das Target zu aktivieren, muss die Datei /etc/default/iscsitarget folgendermaßen geändert werden [3]:
ISCSITARGET_ENABLE=true
ietd.conf¶
Die Freigaben werden in der Konfigurationsdatei /etc/iet/ietd.conf definiert [3]. Alles, was vor der Definition des ersten Target steht, sind globale Einstellungen des iSCSI-Servers. Diese sind optional. Es bestehen folgende Konfigurationsmöglichkeiten:
iSNSServer 192.168.1.16 iSNSAccessControl No IncomingUser joe secret OutgoingUser jack 12charsecret
iSNSServer
gibt die IP-Adresse des ISNSServers an.
iSNSAccessControl
gibt an ob der iSNS-Server auch die Zugriffskontrolle durchführt.
IncommingUser joe secret
definiert einen Standardbenutzer und Passwort mit welchem sich der Initiators beim Server anmelden kann, wenn es keine anderen Target-spezifischen Angaben gibt. Hier heißt der Benutzer joe
und benutzt das Passwort secret
OutgoingUser
definiert den Standardbenutzer welcher bei einer CHAP-Authentifizierung verwendet würde. Hier heißt der Benutzer jack
und benutzt das Passwort 12charsecret
Es kann immer nur eine Art der Authentifizierung für ein Target gelten.
Bei der Definition eines Targets reichen im einfachsten Fall zwei Zeilen.
Die erste gibt dem Target den Namen.
Target iqn.yyyy-mm.<reversed domain name>:identifier
wobei
yyyy-mm
gibt das Ablaufdatum der Freigabe an. Das Format ist das Jahr gefolgt von dem Monat z.B 2010-04 für den April des Jahres 2010.<reversed domain name>
muss durch den Hostname ersetzt werden. in einem privaten Netz kann er fast beliebig gewählt werden. Im Beispiel wirdcom.example
benutzt.identifier
kann durch einen beliebigen Namen ersetzt werden. Im der Beispielkonfiguration wirdstorage.lun1
verwendet
Dies sieht dann z.B. so aus
iqn.2010-04.com.example:storage
Die zweite gibt den Pfad zum Speichermedium an und die Art der Freigabe
Lun 0 Path=/dev/sda3,Type=fileio
Bei Path
muss der vollständige Pfad zu Freigabe angegeben werden, z.B.:
/dev/sda2 /dev/md0 /dev/vg0/storage-lun1 ...
Der Type fileio
kann eigentlich immer benutzt werden. Der Type blockio
umgeht den Linux Page-Cache und reicht somit die Zugriffe direkt auf das Gerät weiter - dies verspricht mehr Geschwindigkeit bei Blöcken, welche größer als 64k sind.
Danach können weitere optionale Angaben gemacht werden:
Alias Test IncomingUser joe secret OutgoingUser jim 12charpasswd
wobei
Alias
damit kann man einen Alias Namen für das Target definieren, hier heisst dieserTest
.IncomingUser joe secret
definiert ein Benutzer und Passwort, mit welchem sich der Initiator beim Server anmelden kann. Wenn man nachIncomingUser
keinen Benutzer angibt, kommen die Globaleneinstellungen zu tragen. Ist dort ebenfalls kein Benutzer definiert, ist keine Authentifizierung notwendig, um auf das Target zuzugreifen.OutgoingUser
definiert einen Benutzer, welcher bei einer CHAP Authentifizierung verwendet würde. Wenn keine Angaben nachOutgoingUser
gemacht werden, kommen die Globaleneinstellungen zu tragen.
initiators.allow¶
Verbindungen auf die Freigabe müssen nun noch erlaubt werden. Hierzu muss in der Datei /etc/iet/initiators.allow[3] eine Zeile hinzu gefügt werden. Diese beginnt mit dem Namen der Freigabe, gefolgt von der IP-Adresse des Clients, von welchem man darauf zugreifen will.
Achtung!
Die Zeile: ALL ALL sollte nur zum Testen der Konfiguration unkommentiert bleiben, da sich sonst jeder mit dem Target verbinden kann.
[...] iqn.2010-04.com.example:storage 192.168.0.100
wobei
iqn.2010-04.com.example:storage
der Name der Freigabe ist192.168.0.100
die IP-Adresse des Clients ist, welcher darauf zugreifen soll.
Es können auch mehrere IP-Adressen angegeben werden, diese müssen dann durch ein ,
getrennt werden. Um den Zugriff von allen Clients zu erlauben, kann die IP durch ein ALL
ersetzt werden. IPv6 Adressen sind ebenfalls zugelassen. Wenn die Konfigurationsdateien angepasst wurde, muss das das Target neu gestartet werden, um die Änderungen wirksam zu machen. Dies geschieht in einem Terminal-Fenster [2] mit:
sudo service iscsitarget restart
LUN-Files-erzeugen¶
Wie man Files für die Freigabe erzeugt, ist im Artikel iSCSI (Abschnitt „LUN-Files-erzeugen“) beschrieben.
Um die Datei nutzen zu können, muss sie in der /etc/iet/ietd.conf noch als Freigabe eingetragen werden.
Links¶