ISCSI Grundlagen

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Dieser Artikel erklärt die prinzipielle Funktionsweise von iSCSI (Internet Small Computer Systems Interface). iSCSI bietet wie Fibre Channel alle erforderlichen Komponenten zum Aufbau eines Speichernetzwerkes (SAN, Storage Area Network). iSCSI ist im RFC 3720 definiert.

iSCSI Komponenten

Bei einer iSCSI Kommunikation sprechen folgende Komponenten miteinanander:

  • iSCSI Initiator
  • iSCSI Target

iSCSI Initiator

Ein Client in einem iSCSI Speichernetz wird als iSCSI Initiator Node (oder kurz 'iSCSI Initator') bezeichnet. Dieser iSCSI Initiator kann sich mit einem Server (dem iSCSI Target) verbinden. Der iSCSI Initiator schickt dabei SCSI Kommandos an das iSCSI Target. Diese SCSI Kommandos sind dazu in IP Pakete verpackt.

iSCSI Initatoren gibt es in folgenden Formen:

  1. iSCSI Hardware Initiator: eine PCI-X oder PCIe Karte, auf der die iSCSI Initator Funktionalität implementiert ist. Eine solche Karte wird auch iSCSI HBA genannt. Im Betriebssystem eines Servers scheint eine solcher iSCSI HBA wie ein RAID-Controller oder ein FC HBA auf. Mit einem iSCSI HBA ist es möglich, einen Server über iSCSI zu booten. Beispiele sind:
  2. iSCSI Software Initiator: ein in Software implementierter iSCSI Initiator. Die Rechenoperationen des iSCSI Initiators werden bei dieser Lösung von der CPU des Servers durchgeführt (und nicht von Hardware-Komponenten auf einer eigenen PCI-X/PCIe Karte). Durch die gestiegene Performance aktueller Server-CPUs ist das heutzutage aber kein Problem mehr. Hardware-seitig werden hier zur Kommunikation mit dem iSCSI Target gewöhnliche Netzwerkkarten verwendet. Beispiele sind hier:

Solange Booten von iSCSI kein Kriterium ist, spricht nichts gegen den Einsatz von iSCSI Software Initiatoren. Mit etwas zusätzlichen Konfigurationsaufwand ist ein Netz-Boot mit dem iSCSI Software Initiator sogar durchaus möglich.[1][2][3] iSCSI Software Initiatoren sind billiger, sehr weit verbreitet und sehr stabil. Auch iSCSI über 10 GBit Ethernet wird sich künftig damit sehr einfach mit normalen 10 GBit Ethernet Netzerkkarten implementieren lassen.[4]

iSCSI Target

Ein Server in einem iSCSI Speichernetz wird als iSCSI Target Node (oder kurz 'iSCSI Target') bezeichnet. Ein solches iSCSI Target kann ein oder mehrere sogenannte logical units (LU) bereitstellen. Oft wird für den Begriff logical unit die Abkürzung LUN verwendet (obwohl diese Abkürzung eigentlich für LU number = logical unit number steht).

iSCSI Targets gibt es in folgenden Formen:

iSCSI Server implementieren die iSCSI Target Funktionalität auf unterschiedliche Weise:[5]

  • manche iSCSI Storage Arrays haben genau ein iSCSI Target (das Storage Array selbst)
  • andere iSCSI Storage Arrays haben mehrere iSCSI Targets, z.B.
    • ein iSCSI Target pro phys. Interface:
      • NetApp
      • EMC CLARiiON (für die EMC CLARiiON AX4-5i ist dies konkret in diesem Beispiel ersichtlich)
    • ein iSCSI Target pro LUN:
      • Dell/EqualLogic
      • HP/LeftHand
    • beliebige Konfiguration von iSCSI Targets:
      • bei EMC Celerra Arrays können bis zu 1.000 iSCSI Targets konfiguriert und einem beliebigen virtuellen oder physischen Netzwerkinterface zugeordnet werden

SCSI Quellen

iSCSI hat seine Ursprünge im normalen SCSI (Small Computer Systems Interface). Genaugenommen ist iSCSI die Abbildung des SCSI remote procedure invocation model über das TCP Protokoll:[6]

  • 'SCSI commands' werden dabei als 'iSCSI requests' übertragen
  • 'SCSI responses' und 'SCSI status' werden als 'iSCSI responses' übertragen

Der iSCSI Initiator und das iSCSI Target teilen die Kommunikation in einzelne Nachrichten. Eine solche iSCSI Nachricht wird als 'iSCSI protocol data unit' bezeichnet.

iSCSI Kommunikation

Wie oben erwähnt sprechen bei einer iSCSI Kommunikation ein iSCSI Initator und iSCSI Target miteinander. Das Gespräch wird aber immer vom iSCSI Initator begonnen. Für ein Gespräch können eine oder mehrere iSCSI Connections (für jede iSCSI Connection wird eine eigene TCP Connection aufgebaut) genutzt werden. Ein solches Gespräch wird als iSCSI Session bezeichnet.

Die folgende Darstellung zeigt den schematischen Aufbau eines iSCSI Setups:

Iscsi-grundlagen-1.png

iSCSI Session Typen

In iSCSI gibt es zwei Session Typen:[7]

  • Normal operational session: dabei handelt es sich um eine unlimitierte Session.
  • Discovery-session: diese Session dient nur der Target Discovery. Das iSCSI Target darf in einer solchen Session nur SendTargets Text-Requests erlauben.

Der Typ einer iSCSI Session wird während des iSCSI Logins definiert.

iSCSI Multipathing

Für Multipathing unter iSCSI kann auf folgende Arten umgesetzt werden:

  1. durch allgemeine Storage Multipathing Technologien, die unabhängig von der Übertragungstechnologie oberhalb des iSCSI Protokolles angesiedelt sind
  2. durch iSCSI Multiple Connections per Session (MC/S)

allgemeine Storage Multipathing Technologien - sog. Multipath I/O (MPIO)

Für Storage Multipathing, welches unabhängig von der Übertragungstechnologie funktionieren soll, gibt es zwei Bereiche:

  1. Storage Multipathing vom Betriebssystem (z.B. Linux Device Mapper MPIO)
  2. Storage Multipathing durch Softwarelösungen von Storageherstellern (z.B. EMC Powerpath)

Details zu diesen Möglichkeiten liefert der Artikel Storage Multipathing Technologien.

iSCSI Multiple Connections per Session (MC/S)

iSCSI bietet darüber hinaus direkt im Protokoll auch Möglichkeiten für Multipathing über MC/S (Multiple Connections per Session). Damit MC/S verwendet werden kann, müssen sowohl der iSCSI Initiator als auch das iSCSI Target MC/S unterstützen.

Initiator MC/S Support? weitere Informationen
Linux Open-iSCSI Software Initiator nein ISCSI Multipathing unter Linux
Microsoft iSCSI Software Initiator ja http://technet.microsoft.com/en-us/library/dd759096.aspx
Target MC/S Support? weitere Informationen
EMC CLARiiON nein
EMC Celerra ja http://technet.microsoft.com/en-us/library/dd759096.aspx
NetApp ja http://technet.microsoft.com/en-us/library/dd759096.aspx
http://blogs.netapp.com/dropzone/2009/05/the-free-consultant-iscsi-part-ii.html

Referenzen

  1. http://www.heise.de/netze/artikel/Booten-via-Netzwerk-223906.html
  2. http://www.etherboot.org
  3. http://wpkg.org/Diskless_/_remote_boot_with_Open-iSCSI
  4. A “Multivendor Post” to help our mutual iSCSI customers using VMware Question 3: Do I use the Software Initiator or the Hardware Initiator?
  5. A “Multivendor Post” to help our mutual iSCSI customers using VMware Zitat: "iSCSI target = an iSCSI server, usually on an array of some type. Arrays vary in how they implement this. Some have one (the array itself), some have many, some map them to physical interfaces, some make each LUN an iSCSI target." und Question 1: How do I configure MPIO
  6. RFC 3720 Section 3.2. iSCSI Concepts and Functional Overview
  7. RFC 3720 Section 3.3 iSCSI Session Types

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.


Das könnte Sie auch interessieren

ISCSI Performance Tuning
SvSAN Software Upgrade
ZFS Dateisystem