iSCSI mit Linux

iSCSI mit Linux

Virtualisierungslösungen und Cloud-Computing befeuern die Nachfrage nach Storage-Netzwerken, in denen mehrere Hosts auf gemeinsamen Plattenplatz zugreifen können, um so die Migration von VMs zu ermöglichen. Eine flexible und kostengünstige Alternative für ein solches Speichernetz bietet iSCSI. Dieser Beitrag behandelt en Detail die Installation und Administration verschiedener iSCSI-Implementierungen unter Linux.

Bei iSCSI handelt es sich um ein blockbasiertes Storage-Protokoll, wie es auch bei Fibre Channel, ATA oder SCSI zum Tragen kommt. iSCSI verpackt SCSI-Kommandos zum Lesen oder Schreiben bestimmter Blöcke in TCP-Segmente innerhalb von IP-Paketen und übermittelt sie via Ethernet an Speichergeräte.

Storage via Netzwerk

Auch andere Storageprotokolle lassen sich in Netzwerkprotokolle kapseln, um so Rechnergrenzen zu überwinden, das passiert etwa bei Fibre Channel over Ethernet (FCoE) oder ATA over Ethernet (AoE). Diesen Lösungen gemein ist die Tatsache, dass der Speicher und das System, das Daten ablegen möchte, auf unterschiedlichen Rechnern lokalisiert sind. Für diesen Fall gibt es eine spezielle Terminologie, die eine eindeutige Zuordnung erlaubt. Der Storage-Server fungiert als so genanntes Target und der Client wird als Initiator bezeichnet. Ein wesentlicher Unterschied zwischen AoE oder FCoE einerseits und iSCSI andererseits ergibt sich durch den Netzwerk-Layer. der den Transport der Daten zwischen Target und Initiator übernimmt. Während die beiden ersten Lösungen direkt auf der Sicherungsschicht des OSI-Modells arbeiten, werden Daten und Kommandos bei iSCSI über das TCP/IP-Protokoll weitergeleitet. Das hat den Vorteil, dass sich Target und Initiator nicht im selben Netzwerk befinden müssen. Daher kann iSCSI sehr große Entfernungen überbrücken, weil sich die Pakete durch Router auch in andere Netze transportieren lassen. Nachteilig wirkt sich jedoch der Overhead aus. Allein die Berechnung der TCPChecksumme kann die CPU der Systeme bisweilen stark belasten.

Beschleuniger

Moderne Ethernetkarten arbeiten aus diesem Grund häufig mit sogenannten TCP Offload Engines (TOE). Allerdings unterstützt der Linux-Kernel kein TOE [1]. Aktuell bieten viele Kernelmodule für Netzwerkkarten jedoch zumindest die Möglichkeit, die Berechnung und Prüfung von Checksummen auf die Hardware auszulagern und hierdurch CPU-Rechenzeit einzusparen. Einige Hardwarehersteller stellen außerdem Patches zur Aktivierung von TOE unter Linux bereit, jedoch sind für deren Nutzung immer Anpassungen des Kernels erforderlich. Gerade das aber widerspricht den Supportbedingungen der Enterprise-Linuxdistributionen. Eine weitere Möglichkeit bieten spezielle iSCSI Host Bus Adapter (HBA), die besondere Hardware für iSCSI bereitstellen. Oft handelt es sich dabei um eine Kombination aus Gigabit-Ethernetschnittstelle, TCP Offload Engine und SCSIHBA. iSCSI-Storage-Lösungen lassen sich jedoch auch ohne die Anschaffung spezieller Hardware mit den Mittel einer normalen Distribution aufbauen. Einen Überblick über die wichtigsten Begrifflichkeiten aus der iSCSI-Welt fasst der Kasten iSCSI-Begriffe zusammen.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019