iSCSI Anleitung · 8 min read · Feb 07, 2026

iSCSI unter Ubuntu 9.04 verwenden (Initiator und Ziel)

iSCSI unter Ubuntu 9.04 verwenden (Initiator und Ziel)

Version 1.0
Autor: Falko Timme

Dieser Leitfaden erklärt, wie Sie ein iSCSI-Ziel und einen iSCSI-Initiator (Client) einrichten können, die beide Ubuntu 9.04 ausführen. Das iSCSI-Protokoll ist ein Protokoll für Speicherbereichsnetzwerke (SAN), das es iSCSI-Initiatoren ermöglicht, Speichergeräte auf dem (fernen) iSCSI-Ziel über normale Ethernet-Kabel zu verwenden. Für den iSCSI-Initiator sieht der entfernte Speicher wie eine normale, lokal angeschlossene Festplatte aus.

Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

Ich verwende hier zwei Ubuntu 9.04-Server:

  • server1.example.com (Initiator): IP-Adresse 192.168.0.100
  • server2.example.com (Ziel): IP-Adresse 192.168.0.101

Da wir alle Schritte dieses Tutorials mit Root-Rechten ausführen werden, können wir entweder allen Befehlen in diesem Tutorial den String sudo voranstellen oder wir werden jetzt Root, indem wir eingeben

sudo su 

2 Einrichten des Ziels (server2)

server2:

Zuerst richten wir das Ziel (server2) ein:

aptitude install iscsitarget

Öffnen Sie /etc/default/iscsitarget…

vi /etc/default/iscsitarget

… und setzen Sie ISCSITARGET_ENABLE auf true:

| ISCSITARGET_ENABLE=true |

Wir können ungenutzte logische Volumes, Bilddateien, Festplatten (z.B. /dev/sdb), Festplattenpartitionen (z.B. /dev/sdb1) oder RAID-Geräte (z.B. /dev/md0) für den Speicher verwenden. In diesem Beispiel werde ich ein logisches Volume von 20 GB mit dem Namen storage_lun1 in der Volume-Gruppe vg0 erstellen:

lvcreate -L20G -n storage_lun1 vg0 

(Wenn Sie eine Bilddatei verwenden möchten, können Sie sie wie folgt erstellen:

mkdir /storage
dd if=/dev/zero of=/storage/lun1.img bs=1024k count=20000

Dies erstellt die Bilddatei /storage/lun1.img mit einer Größe von 20 GB.

)

Als nächstes bearbeiten wir /etc/ietd.conf…

vi /etc/ietd.conf

… und kommentieren alles in dieser Datei aus. Am Ende fügen wir den folgenden Abschnitt hinzu:

| [...] Target iqn.2001-04.com.example:storage.lun1 IncomingUser someuser secret OutgoingUser Lun 0 Path=/dev/vg0/storage_lun1,Type=fileio Alias LUN1 #MaxConnections 6 |

Der Zielname muss ein global eindeutiger Name sein, der iSCSI-Standard definiert den “iSCSI Qualified Name” wie folgt: iqn.yyyy-mm.[:identifier]; yyyy-mm ist das Datum, an dem die Domain gültig ist; der Identifier ist frei wählbar. Die IncomingUser-Zeile enthält einen Benutzernamen und ein Passwort, sodass nur die Initiatoren (Clients), die diesen Benutzernamen und dieses Passwort angeben, sich anmelden und das Speichergerät verwenden können; wenn Sie keine Authentifizierung benötigen, geben Sie keinen Benutzernamen und kein Passwort in der IncomingUser-Zeile an. In der Lun-Zeile müssen wir den vollständigen Pfad zum Speichergerät angeben (z.B. /dev/vg0/storage_lun1, /storage/lun1.img, /dev/sdb usw.).

Jetzt teilen wir dem Ziel mit, dass wir Verbindungen zum Gerät iqn.2001-04.com.example:storage.lun1 von der IP-Adresse 192.168.0.100 (server1.example.com) zulassen möchten…

vi /etc/initiators.allow

| [...] iqn.2001-04.com.example:storage.lun1 192.168.0.100 |

… und starten das Ziel:

/etc/init.d/iscsitarget start  

3 Einrichten des Initiators (server1)

server1:

Auf server1 installieren wir den Initiator:

aptitude install open-iscsi

Als nächstes öffnen wir /etc/iscsi/iscsid.conf…

vi /etc/iscsi/iscsid.conf

… und setzen node.startup auf automatic:

| [...] node.startup = automatic [...] |

Dann starten wir den Initiator neu:

/etc/init.d/open-iscsi restart

Jetzt verbinden wir uns mit dem Ziel (server2) und überprüfen, welche Speichergeräte es anzubieten hat:

iscsiadm -m discovery -t st -p 192.168.0.101

server1:~# iscsiadm -m discovery -t st -p 192.168.0.101
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#

iscsiadm -m node

server1:~# iscsiadm -m node
192.168.0.101:3260,1 iqn.2001-04.com.example:storage.lun1
server1:~#

Die Einstellungen für das Speichergerät iqn.2001-04.com.example:storage.lun1 auf 192.168.0.101:3260,1 sind in der Datei /etc/iscsi/nodes/iqn.2001-04.com.example:storage.lun1/192.168.0.101,3260,1/default gespeichert. Wir müssen den Benutzernamen und das Passwort für das Ziel in dieser Datei festlegen; anstatt diese Datei manuell zu bearbeiten, können wir den iscsiadm-Befehl verwenden, um dies für uns zu tun:

iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.authmethod –value=CHAP
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.username –value=someuser
iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –op=update –name node.session.auth.password –value=secret

Jetzt können wir uns anmelden, entweder indem wir…

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --login

server1:~# iscsiadm -m node –targetname “iqn.2001-04.com.example:storage.lun1” –portal “192.168.0.101:3260” –login
Anmeldung bei [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]
Anmeldung bei [iface: default, target: iqn.2001-04.com.example:storage.lun1, portal: 192.168.0.101,3260]: erfolgreich
server1:~#

… oder indem wir den Initiator neu starten:

/etc/init.d/open-iscsi restart 

(Wenn Sie sich abmelden möchten, können Sie ausführen

iscsiadm -m node --targetname "iqn.2001-04.com.example:storage.lun1" --portal "192.168.0.101:3260" --logout

)

In der Ausgabe von

fdisk -l 

sollten Sie jetzt eine neue Festplatte ( /dev/sdb in diesem Beispiel) finden; das ist unser iSCSI-Speichergerät:

server1:~# fdisk -l
Festplatte /dev/sda: 32.2 GB, 32212254720 Bytes
255 Köpfe, 63 Sektoren/Spur, 3916 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Festplattenkennung: 0x00031334

Gerät Boot Start Ende Blöcke Id System
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Erweiterte
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris

Festplatte /dev/sdb: 21.4 GB, 21474836480 Bytes
64 Köpfe, 32 Sektoren/Spur, 20480 Zylinder
Einheiten = Zylinder von 2048 * 512 = 1048576 Bytes
Festplattenkennung: 0x00000000

Festplatte /dev/sdb enthält keine gültige Partitionstabelle
server1:~#

Um dieses Gerät zu verwenden, müssen wir es formatieren:

fdisk /dev/sdb

server1:~# fdisk /dev/sdb
Gerät enthält weder eine gültige DOS-Partitionstabelle noch ein Sun-, SGI- oder OSF-Disklabel
Erstelle ein neues DOS-Disklabel mit der Festplattenkennung 0x882944df.
Änderungen bleiben nur im Speicher, bis Sie sich entscheiden, sie zu speichern.
Danach sind die vorherigen Inhalte natürlich nicht mehr wiederherstellbar.

Die Anzahl der Zylinder für diese Festplatte ist auf 20480 gesetzt.
Es ist nichts falsch damit, aber dies ist größer als 1024,
und könnte in bestimmten Setups Probleme verursachen mit:

  1. Software, die beim Booten läuft (z.B. alte Versionen von LILO)
  2. Boot- und Partitionierungssoftware von anderen OSs
    (z.B. DOS FDISK, OS/2 FDISK)
    Warnung: ungültige Flagge 0x0000 der Partitionstabelle 4 wird durch w(rite) korrigiert

Befehl (m für Hilfe): <– m
Befehlsaktion
a Umschalten eines bootfähigen Flags
b BSD-Disklabel bearbeiten
c Umschalten des DOS-Kompatibilitätsflags
d Eine Partition löschen
l Bekannte Partitionstypen auflisten
m Dieses Menü drucken
n Eine neue Partition hinzufügen
o Eine neue leere DOS-Partitionstabelle erstellen
p Die Partitionstabelle drucken
q Ohne Speichern der Änderungen beenden
s Eine neue leere Sun-Disklabel erstellen
t Ändern der System-ID einer Partition
u Anzeige/Einheitseinheiten ändern
v Die Partitionstabelle überprüfen
w Tabelle auf die Festplatte schreiben und beenden
x zusätzliche Funktionalität (nur für Experten)

Befehl (m für Hilfe): <– n
Befehlsaktion
e erweitert
p primäre Partition (1-4)
<– p
Partitionsnummer (1-4): <– 1
Erster Zylinder (1-20480, Standardwert 1): <– ENTER
Standardwert 1 verwenden
Letzter Zylinder oder +Größe oder +GrößeM oder +GrößeK (1-20480, Standardwert 20480): <– ENTER
Standardwert 20480 verwenden

Befehl (m für Hilfe): <– t
Ausgewählte Partition 1
Hex-Code (Typ L zum Auflisten der Codes): <– L

0 Leer 1e Verstecktes W95 FAT1 80 Alter Minix be Solaris-Boot
1 FAT12 24 NEC DOS 81 Minix / alter Lin bf Solaris
2 XENIX-Root 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-
3 XENIX-usr 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 versteckt C: c6 DRDOS/sec (FAT-
5 Erweitert 41 PPC PReP Boot 85 Linux erweitert c7 Syrinx
6 FAT16 42 SFS 86 NTFS-Volume-Set da Nicht-FS-Daten
7 HPFS/NTFS 4d QNX4.x 87 NTFS-Volume-Set db CP/M / CTOS / .
8 AIX 4e QNX4.x 2. Teil 88 Linux-Plaintext de Dell-Dienstprogramm
9 AIX bootfähig 4f QNX4.x 3. Teil 8e Linux LVM df BootIt
a OS/2 Boot-Manager 50 OnTrack DM 93 Amoeba e1 DOS-Zugriff
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e3 DOS R/O
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS e4 SpeedStor
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi eb BeOS fs
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ee EFI GPT
10 OPUS 55 EZ-Drive a6 OpenBSD ef EFI (FAT-12/16/
11 Verstecktes FAT12 56 Golden Bow a7 NeXTSTEP f0 Linux/PA-RISC b
12 Compaq-Diagnose 5c Priam Edisk a8 Darwin UFS f1 SpeedStor
14 Verstecktes FAT16 <3 61 SpeedStor a9 NetBSD f4 SpeedStor
16 Verstecktes FAT16 63 GNU HURD oder Sys ab Darwin-Boot f2 DOS sekundär
17 Verstecktes HPFS/NTF 64 Novell Netware b7 BSDI fs fd Linux raid auto
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fe LANstep
1b Verstecktes W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid ff BBT
1c Verstecktes W95 FAT3 75 PC/IX
Hex-Code (Typ L zum Auflisten der Codes): <– 83

Befehl (m für Hilfe): <– w
Die Partitionstabelle wurde geändert!

Aufruf von ioctl(), um die Partitionstabelle erneut zu lesen.
Festplatten synchronisieren.
server1:~#

Danach sollte die Ausgabe von

fdisk -l

wie folgt aussehen:

server1:~# fdisk -l
Festplatte /dev/sda: 32.2 GB, 32212254720 Bytes
255 Köpfe, 63 Sektoren/Spur, 3916 Zylinder
Einheiten = Zylinder von 16065 * 512 = 8225280 Bytes
Festplattenkennung: 0x00031334

Gerät Boot Start Ende Blöcke Id System
/dev/sda1 * 1 3749 30113811 83 Linux
/dev/sda2 3750 3916 1341427+ 5 Erweiterte
/dev/sda5 3750 3916 1341396 82 Linux swap / Solaris

Festplatte /dev/sdb: 21.4 GB, 21474836480 Bytes
64 Köpfe, 32 Sektoren/Spur, 20480 Zylinder
Einheiten = Zylinder von 2048 * 512 = 1048576 Bytes
Festplattenkennung: 0x882944df

Gerät Boot Start Ende Blöcke Id System
/dev/sdb1 1 20480 20971504 83 Linux
server1:~#

Jetzt erstellen wir ein Dateisystem auf /dev/sdb1…

mkfs.ext3 /dev/sdb1

… und mounten es zu Testzwecken:

mount /dev/sdb1 /mnt

Sie sollten jetzt das neue Gerät in den Ausgaben von…

mount

server1:~# mount
/dev/sda1 auf / Typ ext3 (rw,errors=remount-ro)
tmpfs auf /lib/init/rw Typ tmpfs (rw,nosuid,mode=0755)
proc auf /proc Typ proc (rw,noexec,nosuid,nodev)
sysfs auf /sys Typ sysfs (rw,noexec,nosuid,nodev)
odev auf /dev Typ tmpfs (rw,mode=0755)
tmpfs auf /dev/shm Typ tmpfs (rw,nosuid,nodev)
devpts auf /dev/pts Typ devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 auf /mnt Typ ext3 (rw)
server1:~#

… und

df -h

server1:~# df -h
Dateisystem Größe Benutzt Verfügbar Benutzt% Eingehängt
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
odev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /mnt
server1:~#

Sie können es so aushängen:

umount /mnt

Um das Gerät beim Booten automatisch einzuhängen, z.B. im Verzeichnis /storage, erstellen wir dieses Verzeichnis…

mkdir /storage

… und fügen die folgende Zeile zu /etc/fstab hinzu:

vi /etc/fstab

| [...] /dev/sdb1 /storage ext3 defaults,auto,_netdev 0 0 |

Zu Testzwecken können Sie jetzt das System neu starten:

reboot

Nach dem Neustart sollte das Gerät eingehängt sein:

mount

server1:~# mount
/dev/sda1 auf / Typ ext3 (rw,errors=remount-ro)
tmpfs auf /lib/init/rw Typ tmpfs (rw,nosuid,mode=0755)
proc auf /proc Typ proc (rw,noexec,nosuid,nodev)
sysfs auf /sys Typ sysfs (rw,noexec,nosuid,nodev)
odev auf /dev Typ tmpfs (rw,mode=0755)
tmpfs auf /dev/shm Typ tmpfs (rw,nosuid,nodev)
devpts auf /dev/pts Typ devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 auf /storage Typ ext3 (rw,_netdev)
server1:~#

df -h

server1:~# df -h
Dateisystem Größe Benutzt Verfügbar Benutzt% Eingehängt
/dev/sda1 29G 685M 27G 3% /
tmpfs 253M 0 253M 0% /lib/init/rw
odev 10M 88K 10M 1% /dev
tmpfs 253M 0 253M 0% /dev/shm
/dev/sdb1 20G 173M 19G 1% /storage
server1:~#

4 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.