iSCSI Storage
Beginnen wir mit einem Blick auf "iSCSI Storage". "iSCSI" ist ein Protokoll, mit dem SCSI Befehle über ein TCP/IP Netzwerk transportiert werden können. Somit lassen sich viele Festplatten in einem Server einbauen und diese Festplatten lassen sich von einem anderen Server aus über das iSCSI Protokoll so ansprechen, als wären es die eigenen Festplatten. Dies ermöglicht Storage Systeme, die von einer einzigen bis mehrere hundert Festplatten aufnehmen und Daten effizient speichern können. Auf einzelne, zugewiesene Teile des gesamten Speichers können dann andere Server so zugreifen, als wäre der zugewiesene Speicher lokal vorhanden, d.h. als eigene Festplatte. iSCSI ist standardisiert und arbeitet so über Hersteller- und Betriebssystemgrenzen hinweg. Speicher lässt sich also von einem Linux System bereitstellen und direkt in einem Windows Server einbinden.
In Produktivumgebungen möchte man in der Regel Ausfallsicherheit garantieren. Im Falle von iSCSI Storage bedeutet es, dass man im Server zwei Netzteile, zwei Netzwerkkarten sowie auch zwei Controller haben möchte, falls einmal ein Teil davon ausfällt. In der Regel legt man die Daten auf RAID Volumes, damit auch der Ausfall einer Festplatte nicht zu einem Datenverlust führt. Bei Standard Server Hardware ist jedoch ein zweiter Controller parallel schon meist nicht möglich. Darüber hinaus kann man eine defekte CPU oder einen defekten RAM Baustein in der Regel kaum redundant auslegen (abgesehen von Sonderlösungen einiger Serverhersteller). Daher führt der Weg zur hohen Verfügbarkeit (High Availability - kurz "HA") meist über ein zweites Storage System welches entweder aktiv oder passiv mit läuft und bei Bedarf ebenfalls Server bedient.
Ein zweites Storage System erhöht natürlich die Kosten. Je nach Produkt oder Hersteller benötigt man dazu also zwei Systeme und eventuell zusätzliche Lizenzen. Geht man diesen Weg, erhält man mit einem iSCSI Storage Cluster ein standardisiertes Verfahren, von dem man keine Wunder mehr erwarten kann und darf, das aber vielen Workloads gewachsen ist und durch die Standardisierung Vorteile bietet.
Ein Nachteil von iSCSI ist die mögliche Skalierung. In der Regel arbeitet pro iSCSI Server ein Controller, der bis zu hunderten von Festplatten bedient. Irgendwann ist jedoch auch ein leistungsfähiger Controller am Ende seiner Leistung angekommen. Selbst wenn man zwei iSCSI Storage Server active-active im Cluster verwendet, ist man irgendwann am Ende der Fahnenstange angelangt. Ein weiterer Ausbau ist dann kaum möglich.
Ceph - Software Defined Storage
Ceph ist ein verteiltes und massiv skalierendes Storage System unter Linux, das unter einer Open Source Lizenz steht. Es verteilt die Daten auf eine Anzahl von Storage Servern, die jeweils eine größere Anzahl Festplatten enthalten. Die Ceph Software fügt dann die Festplatten aller Server zu einem einzigen großen Storage System zusammen. Dieses zusammengeführte Storage System lässt sich über verschiedene Protokolle und Clients ansprechen, z.B. auch über iSCSI.
Da nun jedoch jeder Zugriff auf eine Festplatte möglicherweise auch ein Netzwerkzugriff ist, sollte man unbedingt auf 10 Gbit/s zwischen den Servern verwenden. An diesem Punkt sollte man nicht sparen und weniger verwenden. Steht 10 Gbit/s aus Budgetgründen nicht zur Diskussion, steht auch Ceph nicht mehr zur Diskussion.
"Verteilt" bedeutet, dass Ceph von Beginn an darauf ausgelegt ist, nicht nur auf einem oder zwei Servern Daten vorzuhalten, sondern auf einer vielzahl von Servern. In einigen uns bekannten Umgebungen handelt es sich dabei und hunderte oder gar tausende Server. Ceph skaliert also extrem gut und fühlt sich bis weit in den Petabyte Bereich hin sehr wohl.
"massiv skalierend" bedeutet, dass Ceph sowohl vertikal wie auch horizontal skaliert. So lassen sich in jeden Storage Server weitere Festplatten einbauen um die Kapazität zu erhöhen. Reicht die Geschwindigkeit nicht mehr aus oder haben die Server keine freien Slots mehr, lassen sich auch jederzeit mehr Server in den Verbund mit aufnehmen.
Dabei benötigt Ceph keinen speziellen RAID Controller mehr. Ceph verteilt die Daten so, dass die gleichen Daten mehrfach vorhanden sind nach Vorgabe des Administrators. Ceph ist daher der Klasse "Software Defined Storage" zuzuordnen, da quasi beliebige Hardware unabhängig vom Hersteller verwendet werden kann. Die Möglichkeiten eines Ceph gehen hier weit über die bestehenden RAID Implementierungen hinaus und können 2-fach, 3-fach oder n-fach redundant Daten speichern und mittels Erasure Coding auch sehr effizient ablegen, so dass bei einer großen Anzahl von Servern eine gewisse Anzahl ausfallen darf ohne dass die Daten gefährdet sind.
Nachdem Red Hat den Entwickler und Hersteller von Ceph namens "Inktank" übernommen hat, bieten nun auch Red Hat sowie Suse kommerziellen Support für Ceph an. In unserem Falle erhält Ceph besondere Aufmerksamkeit, weil es in Proxmox VE integriert ist und dort als Storage Backend für KVM Virtual Machine Images sowie auch für LXC Container unterstützt wird.
Aber was nutze ich nun für Proxmox VE?
Wie so oft kommt das ganz darauf an, was man so plant. Oder ob es sich überhaupt planen lässt.
Ceph kann auf derselben Hardware wie Proxmox VE laufen, ein Proxmox Server wird damit auf Wunsch auch zu einem Storage-Server. Damit erzielt man gegenüber zusätzlichen Storage-Servern häufig einen Preisvorteil beim Kauf der Systeme und die Hardware wird besser ausgenutzt. Ceph sollte jedoch mit mindestens 3 Servern betrieben werden damit es redundant und schnell die Daten ausliefert.
iSCSI eignet sich aus unserer Sicht eher für kleinere Umgebungen - wobei das ebenfalls schon an die 100 TB reichen kann. Kleiner als Ceph meint also nicht unbedingt klein.
Wenn Sie immer noch unsicher sind, welchen Weg Sie nehmen sollen - reden Sie gerne mit uns. Wir freuen uns auf Kommentare oder Anrufe zum Thema.
Bildnachweis: By Self Storage (Own work) [CC BY-SA 3.0 (http://creativecommons.org/lic...)], via Wikimedia Commons