iSCSI
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Ausbaufähige Anleitung
Dieser Anleitung fehlen noch einige Informationen. Wenn Du etwas verbessern kannst, dann editiere den Beitrag, um die Qualität des Wikis noch weiter zu verbessern.
Anmerkung: Die Abschnitte zur Authentifizierung sind noch nicht ausreichend getestet. Falls die Anleitung bei dir funktioniert, entferne bitte diese Box
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Das standardisierte iSCSI (internet SCSI) Protokoll ermöglicht die Nutzung von Netzwerkspeicher wie lokaler Speicher. Im Gegensatz zu den anderen Netzwerkfreigaben wie z.B. SMB oder NFS überträgt iSCSI rohe Datenblöcke zum Netzwerkspeicher, somit ist das Dateisystem des Speichermediums egal. Das Protokoll hat einen kleinen Overhead, was einen guten Durchsatz im Netzwerk verspricht. Mit GNU/Linux lässt sich sowohl die Freigabe wie auch das Einhängen von iSCSI-Speicher bewerkstelligen. Auch einige NAS-Geräte beherrschen die Freigabe ihrer Festplatten mit iSCSI. Der Netzwerkspeicher kann eigentlich jedes Medium sein, das vom System erkannt wird. Dies können ganze Festplatten sein, Partitionen von diesen, Bandlaufwerke, optische Laufwerke oder eine Image-Datei, aber niemals Ordner! Hat man ein Cluster-Dateisystem, so können mehrere Nutzer auf die Freigaben zugreifen, ansonsten kann immer nur ein Knoten als Client gleichzeitig agieren.
Target¶
Die Serverkomponente wird bei iSCSI auch Target genannt. In einem Target können mehrere LUNs bereit gestellt werden. iSCSI kommuniziert normalerweise über den TCP Port 3260
.
Targets bereit stellen¶
Es gibt - je nach Ubuntu-Version - verschiedene Pakete und Dienste, um iSCSI-Targets bereit zu stellen. Die einzelnen Dienste unterscheiden sich in der Anwendung - stellen aber immer die standardisierten Targets bzw. LUNs bereit.
LIO, Standard im Linux-Kernel seit Version 2.6.38
Verwaltung via
targetcli
im Paket targetcli (Xenial, universe) bzw. targetcli-fb (Bionic, universe)
tgt, main, Details im Wikiartikel tgtd
istgt, universe
iscsitarget mit ietd als Dienst, bis einschließlich Ubuntu 16.04 in universe, Details im Wikiartikel iscsitarget
LUN-Files erzeugen¶
Ein LUN-File kann in einem iSCSI-Target benutzt werden, um Daten darin zu speichern. Auf diese Weise ist es möglich, im Dateisystem eines Servers mehrere LUNs zur Verfügung zu stellen, auf welche von verschiedenen Hosts via iSCSI zugegriffen werden kann.
Um bei Verwendung mehrerer LUNs die Übersicht zu behalten, empfiehlt es sich, für diese ein eigenes Verzeichnis zu erstellen.
sudo mkdir luns cd luns
Dort wird eine LUN-Datei beispielsweise mit folgendem Befehl erstellt:
sudo dd if=/dev/zero of=storagelun0 count=0 obs=1 seek=100G
Diese Image-Datei kann zukünftig 100 GByte an Daten aufnehmen.
Hinweis:
Bei der Verwendung von LIO können die Dateien auch mit dem Verwaltungsprogramm targetcli
erstellt werden.
Initiator¶
Installation¶
Die Client-Komponente wird Initiator genannt. Auch der iSCSI-Initiator kann über die Paketverwaltung installiert werden. Es muss das Paket
open-iscsi
Befehl zum Installieren der Pakete:
sudo apt-get install open-iscsi
Oder mit apturl installieren, Link: apt://open-iscsi
installiert werden.[1]
Konfiguration¶
In der Datei /etc/iscsi/iscsid.conf[3] sollte die Zeile node.startup
in
node.startup = automatic
geändert werden, damit der Initiator automatisch startet. Danach muss der Initiator mit
sudo service open-iscsi restart
neu gestartet werden. Um die Freigabe zu finden, muss folgender Befehl ausgeführt werden:
iscsiadm -m discovery -t sendtargets -p 192.168.0.101
wobei die IP-Adresse selbstverständlich angepasst werden muss.
iscsiadm -m node -l
Wenn man keine Authentifizierung gemacht hat, also weder im globalen noch im Target-spezifischen Teil etwas zu IncomingUser
oder OutgoingUser
angegeben hat, kann man nun das Device partitionieren und anschließend Formatieren.
Authentifizierung normal¶
Um den Benutzer und das Passwort für die Authentifizierung zu setzen, kann man die Datei /etc/iscsi/nodes/iqn.2010-04.com.example:storage/192.168.0.101,3260,1/default editieren. Der Pfad zur Konfigurationsdatei ist je nach benutzter IP-Adresse und Namen des Target anders.
Alternativ kann man die Daten von iscsiadm
setzen lassen, dazu gibt man diese beiden Kommandos im Terminal ein [2]:
iscsiadm -m node --targetname "iqn.2010-04.com.example:storage" --portal "192.168.0.101:3260" --op=update --name node.session.auth.username --value=BENUTZER iscsiadm -m node --targetname "iqn.2010-04.com.example:storage" --portal "192.168.0.101:3260" --op=update --name node.session.auth.password --value=PASSWORT
Es muss bei beiden Kommandos die IP-Adresse und der Targetname angepasst werden.
BENUTZER
muss in den gewünschten Benutzer geändert werden und PASSWORT
in das dazu passende Passwort.
Authentifizierung mit CHAP¶
Um die Authentifizierung mit CHAP (Challenge Handshake Authentication Protocol) durchzuführen, muss dieses ebenfalls mitgeteilt werden. Mit iscsiadm
kann das Setzen der Konfiguration erledigt werden, dazu Folgendes im Terminal eingegeben [2]:
iscsiadm -m node --targetname "iqn.2001-04.com.example:storage" --portal "192.168.0.101:3260" --op=update --name node.session.auth.authmethod --value=CHAP
Auch hier muss die IP-Adresse und der Targetname angepasst werden.
Links¶
Targetcli im Linux SCSI Target Wiki 🇬🇧 - offizielle Dokumentation von targetcli
howtoforge 🇬🇧 - Using iSCSI On Ubuntu 9.04
chalblog 🇩🇪
Tools für iSCSI 🇬🇧 - Tools für iSCSI, u.a. Stress-Tests