Storage-Praxis: Netzwerkspeicher mit Ubuntu nutzen – iSCSI und CIFS iSCSi und Windows-Freigaben mit Ubuntu

Autor / Redakteur: Thomas Joos / Dr. Jürgen Ehneß

In der Linux-Distribution Ubuntu kann iSCSI auch als Serverpart verwendet werden, wodurch sich Datenträger in Ubuntu über das Netzwerk per iSCSI zur Verfügung stellen lassen. Auf Ubuntu kann dazu ein iSCSI-Target bereitgestellt werden. Das ermöglicht zum Beispiel auch das Anbinden von Windows-Servern für eine Clusterbildung.

Einrichtung eines Ubuntu-Servers als iSCSI-Server: So geht’s!
Einrichtung eines Ubuntu-Servers als iSCSI-Server: So geht’s!
(Bild: © vladimircaribb - stock.adobe.com)

Vor der Einrichtung eines Ubuntu-Servers als iSCSI-Server sollte der Server zunächst auf den aktuellen Stand gebracht werden. Für die meisten Befehle in diesem Text wird entweder „sudo“ benötigt, oder das Terminal muss mit einer Root-Sitzung gestartet werden. Die Aktualisierung erfolgt mit den beiden Befehlen:

apt-get update -yapt-get upgrade -y
Bildergalerie

iSCSI-Target installieren

Damit ein Ubuntu-Server für den Betrieb als iSCSI-Server genutzt werden kann, muss das Target Framework (TGT) installiert werden. Das erfolgt mit dem Befehl:

apt-get install tgt -y

Nach der Installation kann der Status von TGT mit dem folgenden Befehl angezeigt werden:

systemctl status tgt

Der SCSI-Target-Daemon muss gestartet sein, und es sollten natürlich keine Fehlermeldungen zu sehen sein. Im Anschluss wird das iSCSI-Target konfiguriert.

iSCSI-Target konfigurieren

Die Konfiguration von iSCSI erfolgt über eine Konfigurationsdatei, zum Beispiel „iscsi.conf“, die im Verzeichnis „/etc/tgt/conf.d“ gespeichert werden kann. Bearbeiten lässt sich die Datei zum Beispiel mit den Editoren „nano“ oder „vi“.

Vor der Konfiguration sollte die IP-Adresse des Servers bekannt sein, da diese in die Konfiguration mit eingetragen werden muss. Die IP-Adresse kann im Terminal mit „ip addr show“ angezeigt werden.

In der Datei wird das erste Ziel nach folgender Syntax eingetragen. Hier muss natürlich darauf geachtet werden, dass Benutzer, Kennwort und die Adresse des verwendeten Datenträgers richtig eingetragen sind:

<target iqn.2021-01.joos.int:lun1> backing-store /dev/sdb initiator-address 192.168.1.34 incominguser thomas passw0rd outgoinguser iscsi-target secretpass</target>

Die erste Zeile legt den Namen des iSCSI-Ziels fest. In der nächsten Zeile folgt die Adresse des Datenträgers, der als iSCSI-Ziel zur Verfügung gestellt werden soll. Danach kommen Benutzername und Kennwort für den Benutzer, der das Ziel nutzen soll. Die Zeile danach ermöglicht dem iSCSI-Initiator den Zugriff mit CHAP.

Nach Konfigurationsänderungen muss iSCSI auf dem Server neu gestartet werden:

systemctl restart tgt

Vor der weiteren Konfiguration ist es sinnvoll, sich den Status von tgt nochmal anzeigen zu lassen:

systemctl status tgt

Taucht hier bereits ein Fehler auf, ist die Konfiguration nicht korrekt. Wenn der Daemon korrekt konfiguriert ist, kann mit dem folgenden Befehl die Konfiguration angezeigt werden:

sudo tgtadm --mode target --op show

Der Befehl zeigt an, dass die Kommunikation mit dem Server möglich ist.

Client an iSCSI-Server anbinden – iSCSI-Initiator

Sobald auf einem Ubuntu-Server mindestens ein iSCSI-Ziel definiert ist, können andere Server, auch Windows, auf dieses Ziel zugreifen. Wir zeigen nachfolgend die Installation und Einrichtung des iSCSI-Initiators für den Zugriff eines Ubuntu-Clients auf ein iSCSI-Target. Im ersten Schritt muss iSCSI-Initiator in Ubuntu installiert werden, zum Beispiel mit:

sudo apt-get install open-iscsi -y

Nach der Installation des iSCSI-Initiators kann über das Netzwerk auf dem iSCSI-Target-Server nach iSCSI-Zielen gesucht werden. In diesem Beispiel hat der iSCSI-Target-Server die IP-Adresse 192.168.1.34:

sudo iscsiadm -m discovery -t st -p 192.168.0.103

Die erfolgreiche Verbindung ist im Terminal zu sehen. Im Verzeichnis „/etc/iscsi/nodes“ sind die Konfigurationsdateien für die Verbindung zu sehen. Die Dateien werden beim Abfragen eines Zieles erstellt. In den Konfigurationsdateien müssen der Benutzername und das Kennwort für die Verbindung hinterlegt werden. Die Daten dazu werden als neue Zeilen in die jeweilige Konfigurationsdatei eingetragen:

node.session.auth.authmethod = CHAP node.session.auth.username = <Benutzername>node.session.auth.password = <Kennwort> node.session.auth.username_in = <Benutzername>node.session.auth.password_in = <Kennwort> node.startup = automatic

Nach Konfigurationsänderungen muss iSCSI auf dem Initiator neu gestartet werden. Das gilt generell für alle Änderungen:

systemctl restart open-iscsi

Anschließend stellt der Client die Verbindung zum Server her. Die Festplatte muss anschließend auf dem Client mit einem Dateisystem konfiguriert werden, in diesem Beispiel mit:

fdisk /dev/sdb

Das Formatieren kann wie folgt erledigt werden:

mkfs.ext3 /dev/sdb1

Zum Schluss wird das Laufwerk auf dem Client noch gemountet:

mount /dev/sdb1 /mnt

Storage-Management Teil 1 – Immer den Überblick behalten

Um einen umfassenden Überblick bieten zu können, behandelt dieses eBook unter anderem die folgenden Themen:
# Was ist Storage-Management?
# Nahe Verwandte des Speichermanagements
# Der Status quo der Storage-Systeme

eBook „Storage-Management“ downloaden

Windows-Freigaben in Ubuntu nutzen – CIFS

Auf Ubuntu-Computern können auch SMB-Freigaben von Windows-Computern genutzt werden. Dazu wird mit CIFS (Common Internet File System) gearbeitet. CIFS ist eine Implementation von SMB und ist ideal dafür, um Netzwerkfreigaben in Linux zur Verfügung zu stellen.

Vor der Verwendung von CIFS muss das Paket auf dem entsprechenden Ubuntu-Computer erst installiert werden:

sudo apt-get updatesudo apt-get install cifs-utils

Sobald CIFS zur Verfügung steht, können Netzlaufwerke angebunden werden. Zunächst wird ein neues Verzeichnis angelegt, das für die Konfiguration und Anbindung der Freigabe verwendet wird. Dieses Verzeichnis wird der Mountpoint für die Windows-Freigabe.

sudo mkdir /mnt/pc01x

Anschließend bearbeiten Sie die Datei „etc/fstab“ und tragen in die Daten die folgende Zeile ein:

//<Servername>/<Freigabe> /mnt/pc01x cifs guest,uid=1000,iocharset=utf8 0 0

Die Option „guest“ legt fest, dass der Zugriff auch ohne Benutzername und Kennwort funktioniert. Wenn notwendig, kann hier auch hinterlegt werden, dass die Anmeldung mit Benutzername und Kennwort erfolgen muss. In diesem Fall sieht der Befehl folgendermaßen aus:

//<Servername</<Freigabe> //mnt/pc01x cifs username=<Benutzername>,password=<Kennwort>,iocharset=utf8,sec=ntlm 0 0

Allerdings ist das nur sinnvoll, wenn niemand sonst als der Anwender Zugriff auf den PC hat, da in der Datei Benutzername und Kennwort gespeichert sind.

Der Mount-Befehl sieht anschließend folgendermaßen aus:

sudo mount -a

Natürlich gibt es noch mehr Möglichkeiten, die Zugriffe zu schützen. Die Optionen dazu sind auf der Seite „MountWindowsSharesPermanently“ der Ubuntu-Wiki zu finden.

Bildergalerie

(ID:47131585)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist