Eine effiziente Informationsablage (Speicher) ist das Fundament einer modernen und leistungsstarken Rechenzenterlösung. Der effizienteste Mitarbeiter im 10. Stock bringt keine Leistung, wenn seine Ordner im Keller gelagert sind. Neue und agile Ansätze wie Deep Learning, Micro Segmentation oder Artificial Intelligence und das enorme Wachstum an gespeicherten Informationen stellen ganz neue Anforderungen an eine moderne Speicherlösung.
Gefordert sind speziell:
* Skalierbarkeit.
* paralleler Zugriff
* 100% Verfügbarkeit
Monolithische Denkansätze scheitern meist an diesen Herausforderungen. Das Nadelöhr ist oft der Speicherkontroller oder die Devices (Disks), die ab einer gewissen Kapazität nicht mehr die geforderte Leistung (Durchsatz und Transaktionen/Sekunde) liefern. Zudem verhindern Lifecycles monolithischer Speicherlösungen meist einen unterbruchfreien Betrieb (Storage Migration).
Software-definierte Ansätze machen unabhängig von Hardware und ermöglichen zudem je nach Design massive Skalierbarkeit nicht nur der Kapazität sondern – linear zur Kapazität – auch der Performance.
Diesem Ansatz folgt NetApp mit der Speicherlösung SolidFire. ITRIS testete den 4 Node SolidFire Cluster im hauseigenen Innovation Lab ausgiebig unter realen Bedingungen. Ist die Lösung wirklich so flexibel, wie es die Marketing-Slides einem versprechen? Skaliert die Performance linear mit jedem weiteren Node? Was passiert, wenn eine Disk ausfällt, was, wenn ein ganzer Node das Zeitliche segnet? Und wie werden Verbindungsabbrüche zwischen den Nodes gehandhabt? Fragen, die wir mit unserem POC ausführlich klären konnten.
NetApp hat den Trend zum SDS erkannt und Ende 2015 das Startup SolidFire übernommen. Die von SolidFire entwickelte All-Flash-Lösung wurde unter demselben Namen ins Portfolio übernommen und deckt die oben genannten Features ab. Es handelt sich dabei um einen reinen iSCSI Storage ähnlich zum CEPH Storage von RedHat, jedoch als Enterprise Appliance und mit entsprechendem hochwertigem Support.
Beim Software Defined Storage wird der bisher zentral vorhandene Storage Controller auf mehrere (theoretisch unbegrenzt viele) Nodes verteilt, die üblicherweise aus gewöhnlichen x86-Server bestehen. Diese Nodes bilden auf Software-Ebene einen virtuellen Controller, der sich über das Gesamtsystem erstreckt und in der Regel fast beliebig skalierbar ist. Daraus ergeben sich neue Möglichkeiten was die Erweiterung von Performance und Kapazität betrifft. Bei einem Hardware-Refresh ist die unterbrechungsfreie Migration auf neue Generationen von Nodes möglich.
HELIX-Architektur als Fundament von SolidFire
SolidFires zum Patent angemeldeter Helix-Datenschutz ist ein verteilter Replikationsalgorithmus, der mindestens zwei redundante Kopien von Daten über alle Laufwerke im System verteilt. Dieser «RAID-lose» Ansatz ermöglicht es dem System, mehrere gleichzeitige Fehler auf allen Ebenen der Speicherlösung zu absorbieren. Darüber hinaus werden Fehler isoliert und so Auswirkungen auf die Leistung anderer Aspekte des Systems vermieden, während alle «Quality of Service (QoS)»-Einstellungen beibehalten werden.
Quality of Service (QoS)
Bei hoch skalierbaren Lösungen ist es umso wichtiger, die auf dem System zur Verfügung gestellten Speicherdienste mit «Quality of Service» zu versehen. Auch hier geht NetApp mit SolidFire neue Wege und bietet nicht nur „high watermarks“ sondern auch die Möglichkeit, einzelne LUNs mit einer minimalen Leistungsgarantie zu versehen („low watermark). So kann z.B. eine elementare Datenbank LUN in den QoS Einstellungen mit z.B. minimal 20k IOPS versehen werden. Das System wird dann alles daransetzen, dieser spezifischen LUN stets mindestens 20k IOPS zu garantieren.
Effizienz dank Deduplikation und Kompression
Inline Deduplikation und Kompression sind bei modernen Speicherlösungen nicht mehr wegzudenken. Die SolidFire-Speicherlösung erreichte in unseren eigenen Tests die höchste Speichereffizienz für Scale-Out-Lösungen. So belegten 50x identische VMware VMs à jeweils 13GB (650GB Total) lediglich 12.5GB der Nettokapazität des Speichersystems, was einer Datenreduktion von 50:1 entspricht und dem System auch unter Berücksichtigung von konventionellen monolithischen Speicheransätzen einen Platz unter den TOP 3 beschert! Hammer!
Verfügbarkeit – Disk-Ausfall
SolidFire verwendet also keinerlei Raid-Verbund über die Festplatten. Die einzelnen Disks werden vom Cluster auch einzeln erkannt und verwaltet. Schutz vor Datenverlust wird auf Block-Ebene durch mehrfaches Speichern desselben Blocks auf unterschiedlichen Nodes sichergestellt. Wenn eine Disk ausfällt, sind alle Blöcke auf ihr mindestens noch einmal im System vorhanden. Nach 5 Minuten startet das System einen Rebuild und sorgt dafür, dass die betroffenen Blöcke wieder doppelt vorhanden sind. Dieser Rebuild dauerte meist weniger als 10 Minuten. Die RAW-Kapazität des Gesamtsystems verringert sich automatisch um die entsprechende Grösse der Disk. Wurde eine Disk auf den übrigen Disks hergestellt, ist das System wieder voll redundant. So können theoretisch so viele Disks ausfallen, bis entweder die benötigte Kapazität oder die minimal benötigte Anzahl an Nodes unterschritten wird.
Verfügbarkeit – Nodeausfall
SolidFire verwaltet fast alles auf Disk und nicht auf Node-Ebene. Der Ausfall eines Nodes ist also ähnlich wie der Ausfall von 10 einzelnen SSDs. Die Gesamtleistung und Kapazität der Lösung wird dabei um die eines Nodes reduziert. SolidFire bindet jedes LUN mit 2 iSCSI-Pfaden immer über 2 Nodes an, dabei wird anhand der Min-IOPS QoS Einstellung des LUNs entschieden, welcher Node verwendet wird. Die iSCSI Sessions des ausgefallenen Nodes laufen einfach in ein Timeout, und der Request wird automatisch auf den anderen Pfad umgeleitet. Ein Node Rebuild dauerte im Test meist weniger als 60 Minuten. Es können so viele Nodes ausfallen, bis entweder die benötigte Kapazität oder die minimal benötigte Anzahl an Nodes unterschritten wird.
Entfernen und Hinzufügen von Nodes ist kinderleicht
Ein einfacher Klick im Webinterface reicht, um einen Node zu entfernen, alles andere (Neuverteilung der Blöcke, Rebalancing der LUNs, iSCSI Multipathing usw) erfolgt komplett automatisch im Hintergrund. Das Hinzufügen eines neuen Nodes ist minimal umständlicher. Über den Management Node (mNode) können neue Nodes mit geringem Aufwand hinzugefügt werden.
Flexibel skalieren in alle Richtungen
Was uns sehr gut gefällt, sind die unbegrenzten Kombinationsmöglichkeiten verschiedener Nodes. So kann der Kunde bei steigenden Performance-Anforderungen einfach leistungsfähigere Nodes kaufen und dem Gesamtsystem hinzufügen. IOPS intensive LUNs werden dann automatisch (unter Berücksichtigung der Min-IOPS QoS) auf diese Nodes migriert. Auch der Hardware-Refresh kann laufend erfolgen, einzige Limitation: Der grösste Node darf nicht mehr als 30% der Gesamtkapazität stellen. Das System kann so laufend erweitert werden und alte Nodes können, wenn sie unwirtschaftlich werden, Stück für Stück ausgemustert werden.
Verfügbarkeit – asynchrone und synchrone Replikation
Dank SnapMirror verfügt SolidFire über eine bewährte asynchrone und synchrone Replikation. Es können Daten nicht nur unter SolidFire-Systemen repliziert, sondern auch SnapShots asynchron an die Unified Storage Systeme (FAS/AFF) von NetApp gesendet werden. Dadurch wird eine plattformübergreifende Redundanz geschaffen, die – meist unter hohem Kostenaufwand – nur wenige andere Hersteller ebenfalls bieten können.
Integration in VMware und andere Umgebungen
Ins vCenter integriert sich SolidFire fast nahtlos. Das Plugin bildet die meisten Funktionen des Webinterfaces nach und auch das Anlegen neuer Datastores kann das Plugin automatisieren. Sehr gut wurde die Integration von Fehlermeldungen gelöst: Das Plugin meldet jeden Fehler auf dem Storage und ermöglicht so das Monitoring mit vCenter-Bordmitteln. SolidFire lässt sich zudem dank starkem API optimal in unterschiedlichste Infrastrukturen integrieren. Auf NetApp’s «thePub» und GitHub findet man SDKs zu Java, GoLang, DotNet und Python, ein Web-Interface, CLI sowie PowerShell Scripts, ein vRealize Orchestrator Plugin sowie Cynder, Terraform- und OpenStack-Integrationen und vieles mehr.
Keine Eierlegende Wollmilchsau
Auch wenn sich viele Kunden das anders wünschen, so hat jedes Speichersystem seine Stärken und Schwächen. Scale-Out-Ansätze, Scale-Up-Ansätze und Vorteile sind meist nicht im selben System vereinbar. Scale-Up-Ansätze bieten oft optimale Performance für einige wenige LUNs und werden dann, je mehr LUNs auf dem System abgelegt werden, kontinuierlich inneffizienter. Scale-Out-Ansätze beginnen erst richtig zu performen, wenn eine gewisse Anzahl LUNs auf dem System vorhanden sind. Dies gilt auch für SolidFire. Diese Lösung liebt es, viele LUNs parallel mit hoher Leistung zu versorgen. Muss eine einzelne Applikation mehr als 100k IOPS machen können, dann sollte deren Volume im Falle von SolidFire aus mehreren LUNs bestehen, damit diese aggregiert die geforderte Leistung erbringen können. Hierzu ist ein Volume Manager auf Serverseite nötig. Solche Anforderungen werden jedoch meist nur noch von einigen wenigen monolithischen Applikationen gestellt, welche selbst vor der Herausforderung stehen, durch neue applikatorische Scale-Out-Ansätze (Micro Services) vom Markt verdrängt zu werden.
Fazit
Die Software Defined Scale Out Storage Lösung von NetApp konnte uns überzeugen. Sie erfüllt vollumfänglich die drei Anforderungen
* Skalierbarkeit
* paralleler Zugriff
* 100% Verfügbarkeit
und bietet zudem viele weitere sinnvolle Funktionen, z.B. die gute Integration in VMware. Kunden können das System bei uns im Innovation Lab begutachten und wir können die von uns im Artikel erwähnten Punkte ohne grossen Aufwand demonstrieren!
Für welche Kunden ist denn nun eine SolidFire-Lösung geeignet? Einfach gesagt: Alle Kunden, die eine hochverfügbare, einfach zu verwaltende und in Leistung und Kapazität maximal skalierbare und zugleich äusserst effiziente Speicherlösung benötigen. Dies gilt speziell für Web-Hoster und Anbieter von Shared Services, jedoch auch für grosse VM-Farmen mit mehreren hundert VMs, uvm.