Blog: Zur Entwicklung von Shared FLASH SSD Server Caching

Starnberg, 5. März 2013 – All-Flash Arrays, hybrid SSD-Storage und Shared Server Caching...

Um was es hier geht: All-Flash-Arrays sind im Vormarsch - entweder dediziert (DAS) oder als shared-SAN Storage eingesetzt. Neben etablierten Anbietern wie IBM (TMS), NetApp (EF540), HP, Oracle oder EMC sind hier Start-Up's wie Pure Storage, Whiptail, Nimbus, Violin Memory, X-IO, Tintri, Smart Storage Systems etc. auf dem Vormarsch. Storage- und Serveranbieter, die hier über keine eigene SSD-Technologie verfügen, kooperieren dann wie üblich meist mit einem der genannten Anbieter (z.B. Fujitsu mit Violin). Die Motivation ist klar: Fortschritte bei der CPU-Leistung (Moore’s Law) und der zunehmende Einsatz von VM’s für rechenintensive Geschäftsanwendungen (IT-Technologie als direkter Wettbewerbsvorteil) sind Gründe für eine zunehmend kritische I/O-Performance-Lücke zwischen Server(n) und Speicher.

Verkompliziert wird die Entwicklung durch erweiterte Möglichkeiten zur dynamischen Workload-Migration. Traditioneller Shared HDD-Storage kann damit schnell an seine Leistungsgrenzen kommen; übrigens mit ein Grund für eine neue Klasse von Direct-Attached-Systemen für dedizierte Applikationen (z.B. Oracle Exadata) bzw. In-Memory-Computing a la SAP, Exasol etc. Eine neue Klasse von Anwendungen - die Anwendern einen Marktvorteil durch die extrem schnelle Analyse ihrer Daten versprechen – beginnt,  existierende shared Storage - Infrastrukturen I/O-seitig an die Leistungsgrenzen zu fahren. 

Um es abzukürzen: mehr Transaktionen verarbeiten, geringere Latenz realisieren, mehr Daten zu speichern und schnellere (real-time) Reaktionszeiten bereit zustellen, funktioniert mit konventioneller Festplattentechnologie schon aus Kostengesichtspunkten (TCO) nicht, weshalb verstärkt SSD-FLASH und sog. Hybride Storage-Lösungen (HDD + FLASH + Caching) bzw. Software RAID für SSDs auf den Markt kommen. Eine inzwischen gängige Option ist PCI-basiertes Server Caching mit SSD, das auf Grund der Nähe zum Server-/RAM und der Anwendung (ohne HBA-/Speichernetz-Beschränkungen) Leistungsvorteile verspricht.

  • Mehr Firmen sehen die Wertschöpfung ihrer IT im Kontext von Geschwindigkeit und Flexibilität und damit werden diese Themen aus Unternehmenssicht wichtiger - Stichwort: IT-Business Alignment.
  • Die technologische Frage lautet: auf welcher Ebene der Infrastruktur implementiere ich sinnvollerweise welche Technologie (Tiering, Caching, SSD, Hybrid Arrays...)?

In meinen letzten Blog hierzu wurde bereits auf einige Vor- und Nachteile von (All-) SSD-Arrays im Zusammenhang mit MLC vs. SLC-NAND Flash eingegangen und deshalb möchte ich hier auf einige neuere Entwicklung im Bereich Server-basierten SSD - Caching eingehen.

Auto-Tiering und Caching mit Solid-State-Technologie im externen Speicher-Array bedeutet zwar für SAN-Storage eine deutliche Performanceverbesserungen, aber „Hot-Data“ kommen deshalb nicht näher an die CPU bzw. Anwendung; weitere Engpässe wie Bandbreite, I/O-Latenzzeiten etc. können für Begrenzungen sorgen. Kein Problem bei den meisten Standard-Anwendungen, aber oft nicht genug für rasch wachsende und sehr anspruchsvolle I/O-Profile (>> small random block-size I/O) wie unter MySQL und Oracle. Hier setzt Solid-State-Disk – Technik in Verbindung mit Server-based SSD-Caching an. Aber auch dieser Ansatz hat Grenzen in Bezug auf Skalierbarkeit (non-shared), Komplexität und Ausfallschutz und muss zudem je nach Anzahl von Servern-/Anwendungen-/virtuellen Instanzen auch kosteneffizient verwaltet werden (mehrere Device-Driver pro virtualisierter Umgebung, konsistentes Caching bei n-node Cluster-Architekturen usw.).

Neu im kommerziellen IT-Umfeld (nicht HPC) ist Shared Server Caching: dazu werden gemeinsame Storage-Cache-Pools über mehrere Hosts hinweg realisiert - nicht über clustered Infiniband mit RDMA - sondern mit PCIe – oder neu auch auf HBA-Ebene (!) im Host. Diese Architekturen bieten versprechen sowohl dynamische Skalierbarkeit als auch Hochverfügbarkeit zu vertretbaren Kosten (kein Application-Rewrite etc).

Ein konkretes Beispiel ist der neue - Codename Mt. Rainier - Ansatz von QLogic: dort wird ein gemeinsam genutzter Server-basierter SSD-Pool mit Hilfe der neuen SAN-HBAs QLE10000 erzeugt, der sich nach Herstellerangaben für alle gängigen mission-critical-, Single-Server-und clustered Shared-Ressource-Umgebungen eignet. Die Mt. Rainier-Technologie wird wie eine klassische SAN HBA – Umgebung im Rechenzentrum verwaltet (aktuell FC; in Zukunft 10GbE iSCSI, FCoE) und erlaubt gemeinsam genutztes Data Caching. Vorteil: die Lösung arbeitet unabhängig vom Betriebssystem (Driver-Problematik) und zu 100% Anwendungs-transparent; unterstützt sind laut Hersteller alle derzeit gängigen Speicher wie PCIe Flash Storage oder SAS-SSD-Drives. Mt. Rainier installiert sich als Standard I/O Adapter und es werden keine zusätzlichen, z.T. mehrstufigen SW-Driver benötigt. Eine synchrone peer-to-peer – Spiegelung zwischen zwei HBAs stellt die Verfügbarkeit der Daten sicher. Durch HBA-basiertes Caching (aka „offload engine“) wird keine zusätzliche Host-Performance beansprucht, um mit Hilfe der shared Caching - Architektur gängige Multi-Server-Applikationen I/O-seitig zu bedienen. Die Einschränkungen beim normalen Server-Caching hinsichtlich Skalierbarkeit (Direkt-Attached-Modell) und Verfügbarkeit sind hier nicht gegeben.

http://www.qlogic.com/Pages/itgenius.aspx

Einen anderen Weg geht z.B. das US-Startup Virident: der Hersteller hat mit seiner vFAS Software eine Lösung entwickelt, die Flash-Kapazitäten auf seinen FlashMAX PCIe-SSD-Speicherkarten (MLC-/SLC NAND auf Basis von Micron Technologies) als single Volume auf dem jeweiligen Host-Server abbildet. Damit wird der Einsatz von zusätzlicher RAID-Software überflüssig, um wie derzeit Kapazität und Performance über ein logisches Pooling (Striping) aus jeweils einzelnen, verteilten Laufwerken zu steigern. Die Speicherkarten erreichen laut Virident über 1.5 Mio IOPS. Ein weiterer Vorteil der Software ist das globale wear-leveling zur Maximierung der Lebenszeit aus vorhandenen Flash-Zellen (insbesondere bei MLC von Bedeutung). Weitere Funktionen betreffen die Verfügbarkeit mit „Flash-aware RAID“: Einzelne Flash-Komponenten können als separate Segmente für Flash-optimierten (7 +1) RAID-Schutz isoliert werden. Als Ergebnis können mehrere Ausfälle ohne Unterbrechung der Anwendung auftreten.

http://www.virident.com/products/flashMAX/

Was ist zu tun? Neben einigen neuen Entwicklungen sind je nach Anwendung, Budget, Unternehmensgröße und Leistungsanforderungen derzeit wie geschildert die verschiedensten Lösungen am Markt. Die alles „erschlagende“ Überlösung existiert aus meiner Sicht nicht, zu vielfältig sind die vorhandenen Infrastrukturen mit ihren jeweils ganz spezifischen Randbedingungen. Um so wichtiger ist deshalb eine möglichst sorgfältige Analyse der eigenen Anforderungen und der am Markt vorhandenen Lösungsangebote um mittels Kombination verschiedener Technologien im Rahmen einer abgestuften (Tiered) Architektur sowohl die Kriterien Performance als auch die geforderte Flexibilität im Rahmen des vorhandenen Budgets möglichst verträglich zusammenzuführen. Dies setzt jedoch vor allem ein fundiertes Wissen über Workload- und I/O-Profile meiner Kernanwendungen (Apps, Datenbanken etc.) voraus. In einem der nächsten Blogs soll dieses Thema weiter vertieft werden.