[[Vorlage(Archiviert, )]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] [:iSCSI:] }}} [[Inhaltsverzeichnis()]] 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:]. [[Vorlage(Warnung, "'''iscsitarget''' lässt sich beim Einsatz des [:LTS_Enablement_Stacks:HWE-Kernels] nicht starten, da Kernel-Module fehlen - siehe auch [bug: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 {{{#!vorlage Paketinstallation iscsitarget, bis Ubuntu 16.04 in universe }}} 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 [wikipedia_en:ISNS:]Servers 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 [wikipedia: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.: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. * `` 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 [wikipedia: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. [[Vorlage(Warnung,"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: {{{#!vorlage Befehl sudo service iscsitarget restart }}} = LUN-Files-erzeugen = Wie man Files für die Freigabe erzeugt, ist im Artikel [:iSCSI/#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 = * [https://www.howtoforge.com/using-iscsi-on-ubuntu-9.04-initiator-and-target howtoforge] {en} * [wikipedia_en:iSCSI:] * [https://www.pug.org/mediawiki/index.php/ISCSI_unter_Debian iSCSI unter Debian] {de} * [sourceforge2:iscsitarget:iSCSI Enterprise Target] {en} * [https://blog.is-a-geek.org/iscsi-target-auf-ubuntu-server-erstellen-und-in-windowslinux-einbinden chalblog] {de} # tag: Netzwerk, System, Server