24.April 2024    
   homeProjekteLinuxiSCSI-Installation

 

Hobby 234x60
reichelt elektronik – Elektronik und PC-Technik
Seite zuletzt geändert: 07.11.2012 08:52

Installation von iSCSI unter Debian

Dieser Artikel soll die Installation von iSCSI unter Debian Linux beschreiben.

Ich habe versucht, eine Schritt-für-Schritt-Anleitung zu generieren.

 

Weiterführende Links:

Homepage von open-iscsi

 

iSCSI-Target: Voraussetzungen

Debian-Installation mit Kernel-Sourcen (hier: 2.6.23 von http://www.kernel.org) und Übersetzungswerkzeugen

iSCSI-Target-Sourcen (apt-get install iscsitarget-source) aus der derzeit "unstable"-Distribution

 

Installation des iSCSI-Targets

  1. Kernel-Source holen


    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2


    das Archiv nach /usr/src legen
  2. Kernel-Source entpacken
    in /usr/src aufrufen:


    tar -xjvf linux-2.6.23.tar.bz2


    am besten gleich einen symbolischen Link setzen auf ein generisches Verzeichnis /usr/src/linux:


    ln -s linux-2.6.23 linux

  3. Kernel übersetzen:
    in /usr/src/linux zunächst


    make menuconfig


    und damit der Kernel konfigurieren
    Dann mit


    make-kpkg --revision tester kernel-image


    ein Kernel-Image generieren. Dieses liegt anschließend unter /usr/src
  4. Sourcen für iSCSI-Target holen


    apt-get install iscsitarget-source

  5. iSCSI-Target-Module übersetzen
    in /usr/src/linux aufrufen:


    make-kpkg modules-image


    Anschließend liegt unter /usr/src ein Modul-Paket mit der gleichen Revisionsbezeichnung wie beim Kernel angegeben.
  6. Kernel und iSCSI-Target-Module installieren mit


    dpkg -i linux-image-2.6.23_tester_i386.deb


    und


    dpkg -i iscsitarget-module-2.6.23_0.4.15+svn145-1+tester_i386.deb

  7. Neustart
  8. Installation der iscsitarget-Software mit


    apt-get install iscsitarget


    Damit wird im Erfolgsfall auch gleich der ietd-Daemon gestartet.

iSCSI-Client: Voraussetzungen

aktueller Kernel-Source und Übersetzungswerkzeuge

Installation des iSCSI-Clients

  1. Übersetzen des Kernels
    Bei der Compilierung des Kernels muss unter "Device Drivers" - "SCSI device support" - "SCSI low level drivers" der Treiber "iSCSI Initiator over TCP/IP" ausgewählt werden, ich habe mich für die Einbindung als Modul entschieden. In der .config entspricht das dem Eintrag "CONFIG_ISCSI_TCP=m".
    Außerdem muss eine Ebene weiter oben auch der "SCSI disk support" aktiviert werden - sonst kann man später keine iSCSI-Laufwerke einbinden, denn die werden als virtuelle SCSI-Disks angesprochen. Auch hier ist es möglich, ein Modul zu generieren.
  2. Reboot mit neuem Kernel und Aktivierung der Module iscsi_tcp und sd_mod
  3. Installation der open-iscsi-Software mit


    apt-get install open-iscsi


    Das startet auch gleich den Daemon, der, sofern kernelseitig alles korrekt installiert ist.

Test

Wenn alles glattgegangen ist und auch das Target läuft, dann sollte folgendes funktionieren:


iscsiadm -m discovery


Dieser Befehl sucht nach den verfügbaren iSCSI-Nodes im Netzwerk und zeigt sie an. Wenn das im vorherigen Kapitel installierte iSCSI-Target noch in seiner Standard-Konfiguration ist, wird bereits ein Node angezeigt:


# iscsiadm -m discovery
tester:3260 via sendtargets


Und jetzt schauen wir gleich noch, was er genau gefunden hat:


Das entspricht genau dem, was in der iSCSI-Target-Konfiguration aktuell drinsteht! Damit können wir also davon ausgehen, dass sich Client und Target unterhalten können.


# iscsiadm -m node
10.1.100.125:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz

 

Aufbau einer iSCSI-Verbindung

Einrichten eines iSCSI-Targets

In der Datei /etc/ietd.conf finden wir bereits ein Beispiel-Target. Hier brauchen wir, um die Funktionalität zu testen, eigentlich nur noch die Partition anzugeben, die wir als iSCSI-Target zur Verfügung stellen wollen.

Auf dem Testsystem haben wir dazu das physische Laufwerk /dev/hdc angeschlossen. Für dieses zeigt uns "fdisk -l" folgende Daten:


# fdisk -l /dev/hdc
Disk /dev/hdc: 16.9 GB, 16907304960 bytes
16 heads, 63 sectors/track, 32760 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/hdc1               1       32760    16511008+  83  Linux


Wir nehmen daher einfach aus dem Beispiel-Target das "#"-Zeichen der Zeile "Lun 0 Path=......" heraus und passen sie so an, dass sie folgendermaßen aussieht:


Lun 0 Path=/dev/hdc,Type=fileio


Anschließend starten wir den Daemon neu mit


# /etc/init.d/iscsitarget restart
 

Verbinden zum iSCSI-Target

Nachdem wir nun ein laufendes iSCSI-Target haben, müssen wir noch eine Verbindung dorthin herstellen.

Bei der Einrichtung des Clients hatten wir ja bereits eine Verbindung zu unserem Beispiel-Target hergestellt. Die trennen wir jetzt erst mal wieder und bauen sie neu auf.
Trennen:


iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -u


Wiederverbinden:


iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -l


Und jetzt schauen wir mal mit "dmesg", was passiert ist. Wenn wir alles richtig gemacht haben, sehen wir dort folgende Zeilen am Ende:


scsi0 : iSCSI Initiator over TCP/IP
  Vendor: IET       Model: VIRTUAL-DISK      Rev: 0
  Type:   Direct-Access                      ANSI SCSI revision: 04
scsi 0:0:0:0: Attached scsi generic sg0 type 0
SCSI device sda: 33022080 512-byte hdwr sectors (16907 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
SCSI device sda: 33022080 512-byte hdwr sectors (16907 MB)
sda: Write Protect is off
sda: Mode Sense: 77 00 00 08
SCSI device sda: drive cache: write through
 sda: sda1
sd 0:0:0:0: Attached scsi disk sda


Nach "dmesg" haben wir also ein virtuelles SCSI-Laufwerk /dev/sda verbunden. Schauen wir mal, was fdisk dazu meint:


# fdisk -l /dev/sda
Disk /dev/sda: 16.9 GB, 16907304960 bytes
16 heads, 63 sectors/track, 32760 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1       32760    16511008+  83  Linux


Wenn wir das mit der Ausgabe vom iSCSI-Target-System weiter oben vergleichen, stellen wir fest, dass das identische Angaben sind - nur die Devicenamen unterscheiden sich.

Verbinden des Laufwerks

Bisher haben wir ja nur eine iSCSI-Verbindung herstellt. Diese hat uns aber das virtuelle SCSI-Laufwerk eingerichtet - das können wir auf die gewohnte Weise mounten:


#mount /dev/sda1 /mnt


Damit sollten wir unter /mnt den Inhalt des Laufwerks /dev/hdc vom iSCSI-Target-System sehen - sofern bereits Inhalte existieren.

Natürlich können wir auch bei der Verbindung zum iSCSI-Target dort ein völlig leeres Laufwerk haben - das können wir dann remote mit fdisk nach Belieben partitionieren.

Keine Kommentare
Kommentar hinzufügen

* - Pflichtfeld

*



*
Copyright © 2008-2017