Fachartikel

Storage im Wandel: Entkopplung von Kapazität und Performance

Traditionelle Speichersysteme skalieren über die Anzahl der Spindeln. Je mehr IOPS gefordert sind, desto mehr Platten müssen eingebaut werden. Die Leistung der Platten ist in den letzten 15 Jahren jedoch nicht mehr gestiegen, sondern lediglich die Kapazitäten. Im Gegensatz dazu nimmt die Leistungsfähigkeit der CPUs kontinuierlich weiter zu. Dieser Artikel legt dar, dass moderne Filesysteme sich dies zunutze machen können und die Möglichkeit bieten, rein über die Prozessorleistung zu skalieren – unabhängig von der Spindelanzahl und der Größe der Platten.
Immer größer werdende Festplatten und die zunehmende Nutzung von Flash verlangen nach modernen Speicherarchitekturen.
Die Forderungen nach immer schnelleren Analysemöglichkeiten von Informationen und auch nach immer größer werdende Datenmengen ziehen gewaltige Anforderungen an die Speicherebene nach sich. Traditionelle Architekturen sind damit überfordert, denn der reine Austausch von drehenden Festplatten gegen Flash-basierte Solid State Disks (SSDs) löst die Probleme nicht. SSDs haben zwar eine viel höhere IOPS-Leistung als normale Platten, aber Controller und Cache werden schnell zum Engpass, wenn das dahinterliegende Daten-Layout nicht geändert wird. Hinzu kommt, dass die Leistung der Platten in den letzten 15 Jahren nicht mehr gestiegen ist, sondern lediglich die Kapazitäten gewachsen sind. Die Leistungsfähigkeit der CPUs nimmt dagegen kontinuierlich zu. Log-Structured-File-Systeme sind dazu in der Lage, rein über die Prozessorleistung zu skalieren.
Random Writes verschlechtern Performance
Im Storage wird nach Schreib- und Lesevorgängen differenziert; zusätzlich wird unterschieden zwischen sequentiellen und "random" – also lokal verteilten – Operationen. Schauen wir uns zunächst die Schreibvorgänge an, denn sie stellen eine höhere Anforderung sowohl an mechanische Festplatten als auch an SSDs dar. Drehende Platten arbeiten am besten sequentiell, denn hierbei muss der Schreib-Lesekopf wenig bewegt werden. Bei Random-Vorgängen muss der Kopf häufig mechanisch bewegt werden – eine hohe Latenz und eine niedrigere IOPS-Leistung sind die Folge. Mit dem Cache versuchen die Hersteller, diesen Nachteil zu umgehen. Für Lesevorgänge funktioniert das sehr gut. Für Schreibvorgänge klappt das aber nur so lange, wie der Cache Daten aufnehmen kann und nicht voll ist.

Die Problematik wird also lediglich "nach hinten" verlagert, da irgendwann die Daten auf die Festplatte geschrieben werden müssen und dann die schlechte Performance der Random-Operationen einsetzt. Flash-basierte SSDs haben die gleichen Nachteile. Sie bieten zwar eine sehr viel höhere IOPS-Leistung als drehende Festplatten, aber die sequentiellen Schreibvorgängen sind bei ihnen ebenfalls viel schneller als random Writes. Das hängt mit dem Aufbau von Flash an sich zusammen. Bei Flash können Daten generell nicht direkt überschrieben werden, sondern die Zellen müssen erst geleert werden – man spricht auch von einem Erase-Vorgang – bevor sie sich neu beschreiben lassen. Bei letzterem ist von einem "Program"-Vorgang die Rede.

Die Herausforderung besteht darin, dass das Erase nur auf Block-Ebene funktioniert und das Program auf Page-Ebene, das heißt es muss ein größerer Bereich gelöscht werden als beschrieben wird. Außerdem können nicht einzelne Zellen direkt programmiert werden, sondern es wird immer eine komplette Page sequentiell beschrieben. Daraus folgt: Flash ist ein schlechtes Medium für Random-Writes.

Eine Frage der Skalierung
Traditionelle Speichersysteme skalieren über die Anzahl der Spindeln. Je mehr Leistung (IOPS) gefordert wird, desto mehr Festplatten werden eingebaut. Die Last wird einfach auf mehrere Schreib-Leseköpfe verteilt. Hier ist schnell eine Grenze erreicht, denn ein Array kann natürlich nicht unendlich viele Festplatten aufnehmen. Außerdem ist das Problem nicht gelöst, dass random Writes die Leistung der Platten massiv nach unten ziehen, auch wenn sie zunächst im Cache zwischengespeichert werden. Der einschränkende Faktor ist das sogenannte Write-in-place-Datenlayout. Hier gibt es eine feste Beziehung zwischen der logischen Adresse eines Blocks und der physikalischen Adresse innerhalb des Speichersystems. Sobald ein Block geschrieben wurde, landet er immer an gleichen Stelle auf derselben Platte im Storage-Array. Wenn dieser Block verändert oder überschrieben wird, dann erfolgt dies an Ort und Stelle.

Der Vorteil ist, dass Blöcke, die logisch zusammengehören, auch lokal beieinanderliegen. Die Performance für sequentielle Schreib- und Leseoperationen ist daher recht gut – vorausgesetzt, es gibt genügend Spindeln. Da die Festplatten im Normalfall über einen RAID-Mechanismus geschützt sind, zeigt sich jedoch schnell ein weiterer Nachteil: das RAID-Penalty. Wenn zum Beispiel in einem RAID-5- oder RAID-6-Verbund ein einzelner Block eines Stripe-Sets verändert wird, dann muss das komplette Stripe-Set zunächst in den Hauptspeicher des Controllers geladen werden, der entsprechende Block wird verändert und die Parity-Information wird neu errechnet. Danach wird das komplette Stripe-Set wieder auf die Festplatten geschrieben.

Ein einzelner Host-IO hat somit eine Vielzahl von Lese- und Schreiboperationen auf den Festplatten zur Folge, dies wird auch als sogenannte "Write Amplification" bezeichnet. Daraus entstehen erhebliche Performance-Nachteile, denn die IOPS, die jede einzelne Platte liefert, können nicht einfach multipliziert und mit Host-IOPS gleichgesetzt werden. Außerdem ergibt sich gerade bei SSDs eine erhöhte Abnutzung (Wear-out) und damit eine verkürzte Lebensdauer.

Log-Structured-Filesystem vs. Spindelanzahl
Moderne Speichersysteme arbeiten mit einem sogenannten Log-Structured-Filesystem, das aufgrund des sequentiellen Datenlayouts diese Probleme löst. Alle Writes werden zunächst in einem sehr schnellen NVRAM (non-volatile = nicht-flüchtiger RAM) zwischengespeichert. Dabei werden die Blöcke in der Reihenfolge, in der sie ankommen, hintereinander in einer Art Container abgespeichert. Die Hosts, die die Daten in das Speicherarray schreiben, erhalten die Bestätigung, sobald die Daten im NVRAM gelandet sind; sie müssen also nicht auf die langsamen Platten warten, sodass die Antwortzeiten im Bereich von Mikrosekunden statt Millisekunden liegen.

Die Blöcke können unterschiedliche Größen haben und aus Sicht der Hosts random, sprich lokal verteilt sein. Außerdem ist es sehr einfach, die Blöcke zu komprimieren, bevor sie weiterverarbeitet werden, da auf Sektorgrenzen der Platten nicht geachtet werden muss. Der Vorgang findet im Cache statt, sodass die Komprimierung keinen negativen Einfluss auf die Antwortzeit hat. Die Container beinhalten zusätzlich Parity-Informationen und haben die Größe eines kompletten Stripe-Sets des angeschlossenen Plattenverbunds. Ein Container, der mehrere tausend Host-IOs enthält, wird dann als Full-Stripe-Write mit einer einzelnen Operation je Festplatte heruntergeschrieben. Auf diese Weise lassen sich mehrere tausend Host-IOs mit nur wenigen Festplatten-IOs schreiben.

Die Parity-Informationen sorgen dafür, dass es bei einem Ausfall nicht zu einem Datenverlust kommt. Wenn ein bereits geschriebener Block von dem Host geändert wird, dann werden die neuen Daten in einem neuen Container gespeichert und schlussendlich in einem weiteren Stripe-Set auf die Platten geschrieben; der alte Block wird als ungültig markiert und bei einer späteren Garbage Collection endgültig gelöscht. Random Writes werden in Platten- und SSD-freundliche sequentielle Operationen umgewandelt, durch die Komprimierung wird Speicherplatz gespart und die erhöhte Anzahl von Backend-IOs aufgrund der RAID-Penalty wird eliminiert.

    Seite 1: Eine Frage der Skalierung
    Seite 2: Sequentielles Datenlayout für mehr IOPS


Seite 1 von 2 Nächste Seite >>
2.11.2016/ln/Jan Ulrich Maue, Enterprise Sales Engineer bei Nimble Storage

Nachrichten

Hybrides NAS [6.03.2020]

QNAP bringt mit dem "TS 1886XU-RP" ein neues NAS der Unternehmensklasse auf den Markt. Die Appliance dient als hybrides Speichergerät und bietet Platz für zwölf Festplatteneinschübe und sechs dedizierte SSDs. Das 2U-Rackmount-NAS ist mit einem Intel-Xeon-Prozessor der D-1600 Serie sowie DDR4-Error-Correcting-Code-Speicher ausgestattet. [mehr]

All-Flash-Speicher im Abo [6.03.2020]

Im Rahmen seines Subskriptionsmodells "Evergreen" stellt Pure Storage eine neue Version der Betriebsumgebung "Purity" für sein All-Flash-Produkt "FlashArray" vor. Laut Hersteller bietet Purity 5.3 unter anderem mehr Multi-Cloud-Unterstützung, eine verstärkte Sicherheitsfunktionalität und eine Verbesserungen der Quality-of-Service. [mehr]

Tipps & Tools

Das bringt 2020 für Flash-Speicher [12.03.2020]

In diesem Jahr wird Flash für noch mehr Workloads eingesetzt, die bisher auf HDD- oder Hybridsystemen betrieben wurden. Dazu gehören Tier-2-Anwendungsfälle, Big-Data-Analytik und die schnelle Wiederherstellung von immer größer werdenden geschäftskritischen Systemen und Datenbanken. Flash gewinnt außerdem in Hybrid-Cloud-Szenarien und als Scale-out-Speicherlösung mit Datei- und Objektspeicherung an Bedeutung. Der Fachartikel gibt einen Ausblick darauf, mit welchen Neuerungen im Bereich Flash 2020 zu rechnen ist. [mehr]

Download der Woche: Meld [15.10.2019]

Bei der Systemwartung finden sich immer wieder doppelt vorhandene Dateien und Ordner unter Windows. Diese sorgen nicht nur für Verwirrung, sondern rauben auch Zeit beim Säubern der Struktur auf dem Rechner. Mit dem kostenfreien Tool "Meld" lassen sich durch einen sogenannten "Zwei- und Drei-Wege-Vergleich" sowohl von Files als auch Verzeichnissen die nicht mehr benötigten Daten ermitteln. [mehr]

Buchbesprechung

Technik der IP-Netze

von Anatol Badach und Erwin Hoffmann

Anzeigen