ISCSI Grundlagen
Dieser Artikel erklärt die prinzipielle Funktionsweise von iSCSI (Internet Small Computer Systems Interface). iSCSI bietet wie Fibre Channel alle notwendigen Komponenten zum Aufbau eines Speichernetzwerkes (SAN, Storage Area Network). iSCSI ist im RFC 3720 definiert.
Inhaltsverzeichnis |
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:
- 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 möglich, einen Server über iSCSI zu booten. Beispiele sind:
- 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:
- Linux Open-iSCSI Initiator
- Microsoft iSCSI Software Initiator
- VMware iSCSI Software Initiator für VMware ESX/ESXi
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:
- in Hardware als iSCSI Storage Array (z.B. EMC AX4-5i oder IBM DS3300).
- in Software als iSCSI Target Software zur Installation auf einem normalen Server:
- Linux: LIO (linux-iscsi.org), andere Targets für Linux siehe LIO Features Comparison
- Windows: Microsoft iSCSI Software Target 3.3
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
- ein iSCSI Target pro phys. Interface:
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 (eine iSCSI Connection entspricht einer TCP Connection) genutzt werden. Ein solches Gespräch wird als iSCSI Session bezeichnet.
Die folgende Darstellung zeigt den schematischen Aufbau eines iSCSI Setups:
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:
- durch allgemeine Storage Multipathing Technologien, die unabhängig von der Übertragungstechnologie oberhalb des iSCSI Protokolles angesiedelt sind
- durch iSCSI Multiple Connections per Session (MC/S)
allgemeine Storage Multipathing Technologien - sog. Multipath I/O
Für Storage Multipathing, welches unabhängig von der Übertragungstechnologie funktionieren soll, gibt es zwei Bereiche:
- Storage Multipathing vom Betriebssystem (z.B. Linux Device Mapper MPIO)
- 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
- ↑ http://www.heise.de/netze/artikel/Booten-via-Netzwerk-223906.html
- ↑ http://www.etherboot.org
- ↑ http://wpkg.org/Diskless_/_remote_boot_with_Open-iSCSI
- ↑ A “Multivendor Post” to help our mutual iSCSI customers using VMware Question 3: Do I use the Software Initiator or the Hardware Initiator?
- ↑ 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
- ↑ RFC 3720 Section 3.2. iSCSI Concepts and Functional Overview
- ↑ RFC 3720 Section 3.3 iSCSI Session Types
Weitere Informationen
- Storage Multipathing Technologien
- http://technet.microsoft.com/de-de/magazine/ff679916.aspx#MtViewDropDownText