iSCSI Anleitung · 9 min read · Nov 26, 2025

So installieren Sie einen iSCSI-Speicherserver auf Ubuntu 22.04

Die Internet Small Computer System Interface (iSCSI) ist ein Protokoll, das in Storage Area Networks (SANs) verwendet wird, um Blockspeicherressourcen wie Partitionen von Festplatten (HDDs) oder Solid State Drives (SSDs), Logical Volume Management (LVM)-Partitionen oder Blockdateien über ein Netzwerk zu teilen. Mit einer Client-Server-Architektur ermöglicht iSCSI die Übertragung von SCSI-Befehlen über TCP/IP-Netzwerke zwischen zwei Hauptkomponenten: dem Initiator und dem Ziel. Das iSCSI-Ziel ist ein Dienst, der auf einem iSCSI-Server gehostet wird und für den Zugriff auf den gemeinsamen Speicher verantwortlich ist. Im Gegensatz dazu fungiert der iSCSI-Initiator als Client, der eine Verbindung zum Ziel herstellt, um die gemeinsamen Speicherressourcen zu nutzen.

Dieses Tutorial ist ein vollständiger Leitfaden zur Einrichtung sowohl von iSCSI-Zielen als auch von Initiatoren auf einem Server, der Ubuntu 22.04 ausführt. Es werden die Schritte zur Einrichtung einer sicheren Speicherfreigabe innerhalb Ihres Netzwerks behandelt.

Anforderungen

  • Ein System, das Ubuntu 22.04 für das iSCSI-Ziel mit 1 GB externem HDD ausführt.
  • Ein System, das ein frisches Ubuntu 22.04 für den iSCSI-Initiator ausführt.
  • Eine statische IP-Adresse 192.168.1.10 ist auf dem iSCSI-Ziel konfiguriert, und 192.168.1.20 ist auf dem iSCSI-Initiator konfiguriert.
  • Ein Root-Passwort ist auf beiden Servern konfiguriert.

System aktualisieren

Bevor Sie beginnen, ist es eine gute Idee, Ihr System mit den neuesten Paketen zu aktualisieren. Sie können dies mit dem folgenden Befehl tun:

apt update -y  
apt upgrade -y

Sobald alle Pakete aktualisiert sind, starten Sie Ihr System neu, um die Änderungen anzuwenden.

iSCSI-Ziel installieren

Das iSCSI-Zielpaket befindet sich standardmäßig im Ubuntu 22.04-Standardrepository. Sie können es installieren, indem Sie den folgenden Befehl auf dem iSCSI-Zielserver ausführen:

apt install tgt -y

Nach der Installation des iSCSI-Ziels überprüfen Sie den Status des Servers mit dem folgenden Befehl:

systemctl status tgt

Sie sollten die folgende Ausgabe erhalten:

? tgt.service - (i)SCSI-Zieldaemon
     Loaded: loaded (/lib/systemd/system/tgt.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-01-03 11:13:04 UTC; 23s ago
       Docs: man:tgtd(8)
   Main PID: 7770 (tgtd)
     Status: "Starting event loop..."
      Tasks: 1
     Memory: 1.1M
     CGroup: /system.slice/tgt.service
             ??7770 /usr/sbin/tgtd -f

Jan 03 11:13:04 ubuntu2204 systemd[1]: Starting (i)SCSI-Zieldaemon...
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: iser_ib_init(3431) Failed to initialize RDMA; load kernel modules?
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: work_timer_start(146) use timer_fd based scheduler
Jan 03 11:13:04 ubuntu2204 tgtd[7770]: tgtd: bs_init(387) use signalfd notification
Jan 03 11:13:04 ubuntu2204 systemd[1]: Started (i)SCSI-Zieldaemon.

An diesem Punkt ist das iSCSI-Ziel auf Ihrem Server installiert. Sie können nun mit dem nächsten Schritt fortfahren.

iSCSI-Ziel konfigurieren

Zuerst erstellen Sie ein LUN (Logical Unit Number)-Gerät auf Ihrem iSCSI-Server. LUN ist ein Backend-Speichergerät, das Teil eines physischen SCSI-Geräts ist. Alle LUNs, die dem iSCSI-Ziel zugeordnet sind, sind virtuell an das Betriebssystem des Clients angeschlossen. Daher können Initiatoren Dateisysteme auf iSCSI-LUNs einrichten und verwalten.

Sie können es konfigurieren, indem Sie eine neue Konfigurationsdatei erstellen:

nano /etc/tgt/conf.d/iscsi.conf

Fügen Sie die folgenden Zeilen hinzu:


     backing-store /dev/sdb
     initiator-address 192.168.1.20
    incominguser iscsi-user password
     outgoinguser iscsi-target secretpass

Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.

Wo:

  • Die erste Zeile definiert den Namen der LUN.
  • Die zweite Zeile definiert den Speicherort und den Namen des Speichergeräts auf dem iSCSI-Zielserver.
  • Die dritte Zeile definiert die IP-Adresse des iSCSI-Initiators.
  • Die vierte Zeile definiert den eingehenden Benutzernamen/Passwort.
  • Die fünfte Zeile definiert den Benutzernamen/Passwort, das das Ziel dem Initiator zur Verfügung stellt, um eine gegenseitige CHAP-Authentifizierung zu ermöglichen.

Als Nächstes starten Sie den iSCSI-Dienst neu, um die Änderungen anzuwenden:

systemctl restart tgt

Überprüfen Sie dann den iSCSI-Zielserver mit dem folgenden Befehl:

tgtadm --mode target --op show

Sie sollten die folgende Ausgabe erhalten:

Target 1: iqn.2024-01.example.com:lun1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            SWP: No
            Thin-provisioning: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
    Account information:
        iscsi-user
        iscsi-target (outgoing)
    ACL information:
        192.168.1.10

An diesem Punkt ist der iSCSI-Zielserver installiert und konfiguriert. Jetzt können Sie mit dem nächsten Schritt fortfahren.

iSCSI-Initiator installieren und konfigurieren

Gehen Sie als Nächstes zur iSCSI-Initiatormaschine und installieren Sie das iSCSI-Initiatorpaket mit dem folgenden Befehl:

apt install open-iscsi -y

Sobald die Installation abgeschlossen ist, entdecken Sie den iSCSI-Zielserver, um die gemeinsamen Ziele mit dem folgenden Befehl zu finden:

iscsiadm -m discovery -t st -p 192.168.1.10

Sie sollten die folgende Ausgabe sehen:

192.168.1.10:3260,1 iqn.2024-01.example.com:lun1

Als Nächstes müssen Sie den Namen des LUN-Geräts in der Datei initiatorname.iscsi definieren:

nano /etc/iscsi/initiatorname.iscsi

Fügen Sie den Namen Ihres iSCSI-Ziel-LUN wie unten gezeigt hinzu:

InitiatorName=iqn.2024-01.example.com:lun1

Speichern Sie die Datei und schließen Sie sie, wenn Sie fertig sind.

Als Nächstes müssen Sie die CHAP-Informationen definieren, die Sie auf dem iSCSI-Ziel konfiguriert haben, um auf das iSCSI-Ziel vom iSCSI-Initiator aus zuzugreifen. Die Knoten-Konfigurationsdatei befindet sich im Verzeichnis ‘/etc/iscsi/nodes/‘ und hat ein Verzeichnis pro verfügbarer LUN.

Sie können dies definieren, indem Sie die folgende Datei bearbeiten:

nano /etc/iscsi/nodes/iqn.2024-01.example.com\:lun1/192.168.1.10\,3260\,1/default

Fügen Sie die folgenden Zeilen hinzu/ändern Sie sie:

node.session.auth.authmethod = CHAP  
node.session.auth.username = iscsi-user
node.session.auth.password = password          
node.session.auth.username_in = iscsi-target
node.session.auth.password_in = secretpass         
node.startup = automatic

Speichern Sie die Datei und schließen Sie sie, und starten Sie dann den iSCSI-Initiatordienst mit dem folgenden Befehl neu:

systemctl restart open-iscsi iscsid

Sie können auch den Status des Dienstes mit dem folgenden Befehl überprüfen:

systemctl status open-iscsi

Sie sollten die folgende Ausgabe erhalten:

? open-iscsi.service - Anmeldung bei Standard-iSCSI-Zielen
     Loaded: loaded (/lib/systemd/system/open-iscsi.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2024-01-03 11:33:13 UTC; 10s ago
       Docs: man:iscsiadm(8)
             man:iscsid(8)
    Process: 2861 ExecStart=/sbin/iscsiadm -m node --loginall=automatic (code=exited, status=0/SUCCESS)
    Process: 2867 ExecStart=/lib/open-iscsi/activate-storage.sh (code=exited, status=0/SUCCESS)
   Main PID: 2867 (code=exited, status=0/SUCCESS)

Jan 03 11:33:14 initiator systemd[1]: Starting Anmeldung bei Standard-iSCSI-Zielen...
Jan 03 11:33:14 initiator iscsiadm[2861]: Anmeldung bei [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] (m>
Jan 03 11:33:14 initiator iscsiadm[2861]: Anmeldung bei [iface: default, target: iqn.2024-01.example.com:lun1, portal: 104.245.33.142,3260] erfolgreich>
Jan 03 11:33:14 initiator systemd[1]: Anmeldung bei Standard-iSCSI-Zielen abgeschlossen.

Sie können auch die iSCSI-Verbindung mit dem folgenden Befehl überprüfen:

iscsiadm -m session -o show

Sie sollten die folgende Ausgabe erhalten:

tcp: [2] 192.168.1.10:3260,1 iqn.2024-01.example.com:lun1 (non-flash)

Sie können auch das vom iSCSI-Ziel freigegebene Speichergerät mit dem folgenden Befehl überprüfen:

lsblk

Sie sollten das freigegebene Gerät sdb in der folgenden Ausgabe sehen:

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   80G  0 disk 
??sda1   8:1    0   80G  0 part /
sdb      8:16   0 1000M  0 disk

Erstellen eines Dateisystems auf dem freigegebenen Gerät

Um das freigegebene Gerät auf dem iSCSI-Initiator zu verwenden, müssen Sie ein Dateisystem auf dem freigegebenen Gerät (sdb) erstellen und es einhängen, um dieses Gerät nützlich zu machen.

Zuerst erstellen Sie ein Dateisystem auf dem freigegebenen Gerät (sdb) mit dem folgenden Befehl:

fdisk /dev/sdb

Beantworten Sie alle Fragen wie unten gezeigt, um ein Dateisystem zu erstellen:

Willkommen bei fdisk (util-linux 2.34).
Änderungen bleiben nur im Speicher, bis Sie sich entscheiden, sie zu schreiben.
Seien Sie vorsichtig, bevor Sie den Schreibbefehl verwenden.

Das Gerät enthält keine erkannte Partitionstabelle.
Eine neue DOS-Diskette mit der Festplattenkennung 0x9743ddcf wurde erstellt.

Befehl (m für Hilfe): n
Partitionstyp
   p   primär (0 primär, 0 erweitert, 4 frei)
   e   erweitert (Container für logische Partitionen)
Wählen Sie (Standard p): 

Verwenden der Standardantwort p.
Partitionsnummer (1-4, Standard 1): 
Erster Sektor (2048-2047999, Standard 2048): 
Letzter Sektor, +/-Sektoren oder +/-Größe{K,M,G,T,P} (2048-2047999, Standard 2047999): 

Eine neue Partition 1 vom Typ 'Linux' und von 999 MiB Größe wurde erstellt.

Befehl (m für Hilfe): w
Die Partitionstabelle wurde geändert.
Aufruf von ioctl(), um die Partitionstabelle erneut zu lesen.
Synchronisieren der Festplatten.

Als Nächstes formatieren Sie die Partition mit dem folgenden Befehl:

mkfs.ext4 /dev/sdb1

Sie sollten die folgende Ausgabe erhalten:

mke2fs 1.45.5 (07-Jan-2020)
Erstellen eines Dateisystems mit 255744 4k-Blöcken und 64000 Inodes
Dateisystem-UUID: e7f06605-a0f5-41e1-b1b2-e85bd7a2d6a3
Superblock-Backups auf Blöcken gespeichert: 
    32768, 98304, 163840, 229376

Zuweisen von Gruppentabellen: abgeschlossen                            
Schreiben von Inode-Tabellen: abgeschlossen                            
Erstellen eines Journals (4096 Blöcke): abgeschlossen
Schreiben von Superblocks und Dateisystembuchhaltungsinformationen: abgeschlossen

Als Nächstes hängen Sie die Partition mit dem folgenden Befehl in das Verzeichnis /mnt ein:

mount /dev/sdb1 /mnt

Sie können nun die eingehängte Partition mit dem folgenden Befehl überprüfen:

df -h

Sie sollten die folgende Ausgabe erhalten:

Dateisystem      Größe  Benutzt Verfügbar Benutzt% Eingehängt in
udev            972M     0  981M   0% /dev
tmpfs           199M  528K  199M   1% /run
/dev/sda1        79G  1.8G   74G   3% /
tmpfs           994M     0  994M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           994M     0  994M   0% /sys/fs/cgroup
tmpfs           199M     0  199M   0% /run/user/0
/dev/sdb1       968M  2.5M  899M   1% /mnt

Häufig gestellte Fragen

Im Folgenden finden Sie die Antworten auf einige häufig gestellte Fragen zu iSCSI-Initiator und -Ziel.

Was ist iSCSI?

iSCSI, oder Internet Small Computer System Interface, ist ein Netzwerkprotokoll, das den Datentransfer über Intranets ermöglicht und die Speicherung über große Entfernungen verwaltet. Es erleichtert den Blockdatenverkehr zwischen einem iSCSI-Initiator auf einem Server und einem iSCSI-Ziel auf Speicherhardware.

Was sind iSCSI-Ziel und -Initiator?

Das iSCSI-Ziel fungiert als Speichereinheit, wie eine Festplatte, die über ein Netzwerk zugänglich ist. Der iSCSI-Initiator ist der Client, der sich mit dem Speicher auf dem Ziel verbindet und mit ihm interagiert.

Kann ich iSCSI über ein WAN verwenden?

Ja, iSCSI kann über ein Wide Area Network (WAN) verwendet werden, erfordert jedoch eine stabile und schnelle Netzwerkverbindung, um Leistung und Zuverlässigkeit sicherzustellen. Sicherheitsüberlegungen wie VPNs oder dedizierte Leitungen sind ebenfalls wichtig, wenn iSCSI über WAN verwendet wird.

Wie unterscheidet sich iSCSI von NFS oder SMB?

Im Gegensatz zu NFS (Network File System) oder SMB (Server Message Block), die dateibasierten Speicherprotokolle sind, arbeitet iSCSI auf Blockebene. Das bedeutet, dass es einem System ermöglicht, mit dem entfernten Speicher zu interagieren, als ob es sich um eine lokale Festplatte handelt, was mehr Flexibilität bei der Verwaltung des Speichers bietet.

Ist iSCSI sicher?

iSCSI selbst enthält keine hochgradigen Sicherheitsfunktionen. Sie können jedoch Ihre iSCSI-Verbindungen mit Methoden wie IPsec für die Sicherheit auf Netzwerkebene oder durch Konfiguration von CHAP (Challenge-Handshake Authentication Protocol) zur Authentifizierung sichern.

Was sind die Leistungsüberlegungen für iSCSI?

iSCSI-Leistung wird von der Netzwerkgeschwindigkeit, der Latenz, der Leistung der Speichergeräte und der Konfiguration des Netzwerks beeinflusst. Eine Hochgeschwindigkeitsnetzwerkverbindung und minimale Latenz sind entscheidend für eine optimale Leistung.

Benötige ich spezielle Hardware für iSCSI?

Es ist keine spezielle Hardware für iSCSI erforderlich. Es kann auf Standard-Netzwerkausrüstung betrieben werden. Dedizierte iSCSI-HBA (Host Bus Adapter) können jedoch für eine verbesserte Leistung verwendet werden.

Wie behebe ich iSCSI-Verbindungsprobleme unter Ubuntu?

Die Fehlersuche kann das Überprüfen der Netzwerkverbindung, das Überprüfen der Konfigurationsdateien für sowohl Initiator als auch Ziel, das Überprüfen der Systemprotokolle und das Sicherstellen, dass das Ziel die Speichergeräte ordnungsgemäß exportiert, umfassen. Darüber hinaus können Tools wie iscsiadm helfen, iSCSI-Verbindungen zu diagnostizieren und zu verwalten.

Fazit

Der obige Leitfaden hat Ihnen beigebracht, wie Sie ein iSCSI-Ziel und einen Initiator auf einem Ubuntu 22.04-Server einrichten. Sie haben auch gelernt, wie Sie ein Gerät auf dem Zielserver freigeben und von dem Initiator darauf zugreifen können.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.