Archiv/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:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

  4. Root-Rechte

  5. iSCSI

Inhaltsverzeichnis
    1. Installation
    2. Konfiguration
      1. ietd.conf
      2. initiators.allow
  1. LUN-Files-erzeugen
  2. Links

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

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install iscsitarget 

sudo aptitude install 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 wird com.example benutzt.

  • identifier kann durch einen beliebigen Namen ersetzt werden. Im der Beispielkonfiguration wird storage.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 dieser Test.

  • IncomingUser joe secret definiert ein Benutzer und Passwort, mit welchem sich der Initiator beim Server anmelden kann. Wenn man nach IncomingUser 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 nach OutgoingUser 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 ist

  • 192.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.