qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

iSCSI

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Speichermedien/ iSCSI]])

<<<|###| >>> | English



Im_Aufbau


[bearbeiten] iSCSI

Das Protokoll iSCSI (internet Small Computer System Interface) ermöglicht die Nutzung des SCSI-Protokolls über TCP. Dabei wird Storage über das Netzwerk angeboten, daß dieser wie eine lokale Festplatte eingebunden werden kann. Im Gegensatz zu den anderen Netzwerkfreigaben, wie zum Beispiel Samba oder NFS, werden bei iSCSI rohe Datenblöcke übertragen. Dadurch ist das Dateisystem des Speichermediums egal. Das Protokoll iSCSI hat nur geringen Overhead. Der iSCSI-Standard sieht den konkurrierenden Zugriff zweier Server auf dieselbe LUN nicht vor. Wie beim SCSI gibt es einen Controller (Initiator), der die Kommunikation steuert. Die Speichermedien (Festplatten, Bandlaufwerke, optische Laufwerke und so weiter) nennt man Target. Mit Linux lässt sich sowohl die Freigabe wie auch das Einhängen von iSCSI-Speicher realisieren. QEMU kann auf iSCSI-Devices direkt zugreifen.

[bearbeiten] iSCSI-Server (Target)

Damit man das Zusammenspiel von QEMU und iSCSI testen kann wird zunächst ein iSCSI-Server (Target) benötigt. In diesem einfachen Beispiel dient ein separater Linux-Server (Debian 64-Bit) mit dem Namen iscsiserver und IP-Adresse 192.168.178.44 als iSCSI-Server (Target). Es wird eine Partition, eine Festplatte, ein Image-Datei, ein Logical Volume oder ein RAID-Device benötigt. Folgende Pakete sind zu installieren.

iscsiserver ~$ sudo apt-get install iscsitarget iscsitarget-dkms open-iscsi

Es müssen diese Kernel-Module geladen sein:

iscsiserver ~$ lsmod | grep iscsi 
iscsi_tcp              8113 0 
libiscsi_tcp          10946 1 iscsi_tcp
libiscsi              29302 3 ib_iser,iscsi_tcp,libiscsi_tcp
scsi_transport_iscsi  25036 4 ib_iser,iscsi_tcp,libiscsi
scsi_mod             126725 9 ib_iser,iscsi_tcp,libiscsi,scsi_transport_iscsi,firewire_sbp2,sg,sd_mod,sr_mod,libata

Das Verzeichnis /sys/class/iscsi_transport darf nicht leer sein.

iscsiserver ~$ ls /sys/class/iscsi_transport
iser  tcp

In der Datei /etc/default/iscsitarget ist ISCSITARGET_ENABLE=true zu setzen.

# /etc/default/iscsitarget
ISCSITARGET_ENABLE=true

In diesem Beispiel dient eine Image-Datei als iSCSI-Storage.

iscsiserver ~$ mkdir /srv/luns
iscsiserver ~$ cd /srv/luns
iscsiserver ~$ dd if=/dev/zero of=storagelun0 count=0 obs=1 seek=100G

Jedes iSCSI-Target muss einen eindeutigen Namen nach folgenden Muster erhalten:

iqn.yyyy-mm.<reversed domain name>:identifier

Hier ist der Taget-Name iqn.2036-12.de.example:storage.target0. Der Zugriff erfolgt mit dem User admin und dem Passwort geheim. Die Datei /etc/iet/ietd.conf wird entsprechend angepasst.

#  /etc/iet/ietd.conf
Target iqn.2036-12.de.example:storage.target0
        CHAP Users
        IncomingUser admin geheim
        OutgoingUser admin geheim
        Lun 0 Path=/srv/luns/storagelun0,Type=fileio
        Alias lun0

Für den ersten Test wird in der Datei /etc/iet/initiators.allow für alle Rechner der Zugriff auf alle Targets erlaubt (ALL ALL). Die Zeile ALL ALL sollte aber nur zum Testen unkommentiert bleiben, da sich sonst jeder Rechner mit dem Target verbinden kann.

/etc/iet/initiators.allow
ALL ALL
# iqn.2036-12.de.example:storage.target0 192.168.178.27

Das iSCSI-Taget ist zu starten.

iscsiserver ~$ sudo /etc/init.d/iscsitarget start

Getestet wird die Verfügbarkeit des iSCSI-Targets mit dem Befehl iscsiadm (Paket iscsiadm).

iscsiserver ~$ sudo iscsiadm -m discovery -t st -p localhost
127.0.0.1:3260,1 iqn.2036-12.de.example:storage.target0
...

Nun loggt man sich per SSH auf dem Rechner ein, der auf das iSCSI-Target zugreifen soll (Initiator). Dieser hat hier die IP-Adresse 192.168.178.27. Für den Zugriff auf das iSCSI-Target wird das Paket open-iscsi benötigt.

Host ~$ sudo apt-get install open-iscsi

In der Datei /etc/iscsi/iscsid.conf ist node.startup = automatic zu setzen.

# /etc/iscsi/iscsid.conf
...
node.startup = automatic
...

Man testet die Verfügbarkeit des iSCSI-Targets vom Initiator. In diesem Beispiel hat der iSCSI-Server die IP-Adresse 192.168.178.44.

Host ~$ sudo iscsiadm -m discovery -t st -p 192.168.178.44
192.168.178.44:3260,1 iqn.2036-12.de.example:storage.target0
Host ~$ sudo iscsiadm -m node
192.168.178.44:3260,1 iqn.2036-12.de.example:storage.target0

Mit folgenden Befehlen wird der User und das Passwort für den Zugriff definiert.

Host ~$ iscsiadm -m node --targetname "iqn.2036-12.de.example:storage.target0" --portal "192.168.178.44:3260" \
        --op=update --name node.session.auth.authmethod --value=CHAP
Host ~$ iscsiadm -m node --targetname "iqn.2036-12.de.example:storage.target0" --portal "192.168.178.44:3260" \
        --op=update --name node.session.auth.username --value=admin
Host ~$ iscsiadm -m node --targetname "iqn.2036-12.de.example:storage.target0" --portal "192.168.178.44:3260" \
        --op=update --name node.session.auth.password --value=geheim

Die Einstellungen dieses Storages-Devices werden in der folgenden Datei gespeichert.

/etc/iscsi/nodes/iqn.2036-12.de.example\:storage.target0/192.168.178.44\,3260\,1/default

Nun loggt man sich ein.

Host ~$ iscsiadm -m node --targetname "iqn.2036-12.de.example:storage.target0" --portal "192.168.178.44:3260" --login
Logging in to [iface: default, target: iqn.2036-12.de.example:storage.target0, portal: 192.168.178.44,3260]
Login to [iface: default, target: iqn.2036-12.de.example:storage.target0, portal: 192.168.178.44,3260]: successful

Das neue Device wird von fdisk -l angezeigt. Hier ist es /dev/sdb.

Host ~$ fdisk -l
...
Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table

Das Device wird partitnioniert, formatiert und eingebunden (siehe auch http://qemu-buch.de/d/Anhang/_N%C3%BCtzliche_Tools#Partitionierung). Zum Beispiel /dev/sdb:

Host ~$ fdisk /dev/sdb
Host ~$ mkfs.ext3 /dev/sdb1
Host ~$ mount /dev/sdb1 /mnt
Host ~$ df -h /mnt
Filesystem          Size  Used Avail Use% Mounted on
/dev/sdb1          1004M   18M  936M   2% /mnt

[bearbeiten] Verwendung von iSCSI-Devices in QEMU

Es gibt zwei Varianten um iSCSI-Devices in QEMU zu nutzen. Bei der ersten Variante wird das iSCSI-LUN (Logical Unit Number) im Host-System per Mount eingebunden (siehe oben).

Bei der zweiten Variante wird der in QEMU eingebaute iSCSI-Initiator verwendet. Dazu muss QEMU unter Einbindung der Bibliothek libiscsi kompiliert worden sein (--enable-libiscsi). Damit kann QEMU direkt auf eine iSCSI-Resource zugreifen und diese dem Gast-System zur Verfügung stellen. Dabei werden sowohl Festplatten- als auch CD/DVD-Images unterstützt. Die Syntax zur Angabe der iSCSI-LUNs ist folgende:

iscsi://[<username>[:<password>@]]<host>[:<port]/<target-iqn-name>/<lun>

Die Authentifizierung per username/password ist optional und wird nur verwendet, wenn das Ziel die CHAP-Authentifizierung verwendet. In diesem Beispiel erfolgt keine Authentifizierung.

Host ~$ qemu-system-x86_64 --drive file=iscsi://192.168.178.44/iqn.2036-12.de.example:storage.target0/0

In diesem Beispiel erfolgt eine Authentifizierung mit Benutzername admin und Passwort geheim.

Host ~$ qemu-system-x86_64 -drive file=iscsi://admin:geheim@192.168.178.44/iqn.2036-12.de.example:storage.target0/0 

In diesem Beispiel werden Benutzername und Passwort mit Environment-Variablen übergeben.

Host ~$ LIBISCSI_CHAP_USERNAME="admin" 
Host ~$ LIBISCSI_CHAP_PASSWORD="geheim" 
Host ~$ qemu-system-x86_64 --drive file=iscsi://192.168.178.44/iqn.2036-12.de.example:storage.target0/0 


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Speichermedien/_iSCSI

Diese Seite wurde bisher 12.383 mal abgerufen. Diese Seite wurde zuletzt am 16. April 2013 um 18:53 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …