Grundlagen: Wie Flash-Speicher funktioniert

Flash-Speicher ist eine Technologie, die hohe Performance und geringe Latenzen garantiert und die Leistung mechanischer Festplatten übertrifft.

Flash-Storage ist derzeit eine beliebte Technologie, die sich rasant in den Rechenzentren verbreitet. Sie bringt höhere Performance, geringere Latenzen und muss nicht mit den Nachteilen herkömmlicher Festplattentechnik kämpfen.

Aber wie funktioniert ein Flash-Laufwerk? Warum sind Schreib-Prozesse problematischer als Lese-Prozesse in Flash? Warum ist die Haltbarkeit einer SSD eingeschränkt? Und was tun Flash-Hersteller, um diese Hürden zu überwinden?

Hier beschreiben wir, was Flash genau ist, wie es auf Controller-Ebene verwaltet wird und was einige Storage-Hersteller tun, damit sie das Beste aus dem Solid-State-Speicher herausholen.

Flash kurz erklärt

Wenn man über Flash-Speicher redet, wird in der Regel NAND-Flash damit gemeint. Das ist Solid-State-Memory, das aus Millionen von Memory-Gates auf einem DIE besteht. Die Flash-Technologie ist nun 30 Jahre alt und Hersteller treiben die Technologie immer weiter voran, um die Speicherdichte eines einzelnen Chips zu vergrößern. Mit dem so genannten V-NAND wie beispielsweise von Samsung erreicht die Technologie nun die dritte Dimension.

V-NAND von Samsung

Flash ähnelt System-Memory, es gibt hier keine beweglichen Teile und zusätzliche Eigenschaften sorgen dafür, dass Daten nicht verloren gehen, wenn die Stromzufuhr unterbrochen ist. Informationen werden in Zellen gespeichert, was die Basis für die Namensgebung der unterschiedlichen Flash-Typen ist: SLC, MLC und TLC.

SLC steht für Single-Level Cell. Hier speichert jede Memory-Zelle nur einen Wert, der in zwei Modi existieren kann (an/aus beziehungsweise 0/1). Die Modi basieren auf der elektrischen Spannung der Zelle. MLC bedeutet Multi-Level Cell und kann bis zu vier Zustände von zwei Daten-Bits sichern: 00, 01, 10 oder 11. Triple-Level Cell, kurz TLC, zeichnet drei Bits pro Zelle auf, wobei acht Zustände genutzt werden, von 000 bis 111.

Flash-Speicher wie Solid-State Disks (SSD) sind NAND-Chips mit einem zusätzlichen Stromkreis und Firmware. Letztere werden Controller genannt und sind für die Verwaltungder Schreib- und Lese-Prozesse sowie andere Aufgaben verantwortlich.

Lese- und Schreib-Prozesse

Zellen im Flash-Speicher sind in Pages angeordnet (typischerweise 4 und 8 KByte groß) und dann in Blöcken von 128 KByte bis 256 KByte Größe gruppiert. Hinzu kommen Checksum-Informationen. Die exakte Größe hängt vom Hersteller und dem Produkt ab.

Die Eigenschaften von NAND-Flash sind so beschaffen, dass ein einzelner Wert in einer Zelle von 1 zu 0 geändert werden kann. Das funktioniert allerdings nicht umgekehrt, ohne den gesamten Block neu formatieren zu müssen. Dieser Vorgang ist als P/E-Zyklus (Program-Erase Cycle) bekannt.

Wear Levelling ist eine Methode, um die Lebensdauer von Flash-Medien zu verlängern.

Das hat zu Folge, dass ein „Write“ auf Flash das Auslesen eines gesamten Blocks erfordert und diese Informationen dann in das Controller-Memory kommen. Das Memory wird mit neuen Daten aktualisiert, der existierende Block wird gelöscht und die Daten zurück in den Flash geschrieben. Dieser ineffiziente Multi-Stage-Prozess wird als Schreibfaktor (Write Amplification) bezeichnet, bei dem jeder Schreib-Prozess mehr als einen physischen Schreib-I/O benötigt.

Diese Write Amplification ist ein Problem für Flash-Speicher, da die NAND-Chips mit jeder Schreib-Operation ein wenig verschleißen und so die Geräte eine begrenzte Anzahl an P/E-Zyklen haben. SLC-NAND hat einen P/E-Zyklus von etwa 100.000 pro Block, aber MLC kann bei sogar nur 5.000 pro Datenblock liegen.

Die begrenzte Haltbarkeit von Flash bedeutet, dass das wiederholte Schreiben von Daten (zum Beispiel, wenn Files oder Datenbankreihen immer wieder neu geschrieben werden) zu einem Ausfall führen kann. Aus diesem Grund haben Flash-Hersteller spezielle Verfahren in den Controller integriert, um den Nachteilen der begrenzen Haltbarkeit entgegenzuwirken.

Wear Levelling

Wear Levelling ist eine Methode, um die Lebensdauer von Flash-Medien zu verlängern. Dabei werden die Write-Daten nicht immer am gleichen Platz gespeichert, sondern mittels Wear Levelling über den gesamten Flash-Speicher und immer auf eine neue, leere Page geschrieben. Somit wird der Verschleiß gleichmäßig über alle NAND-Zellen verteilt und die Lebensdauer des Mediums erhöht.

Zusätzlich zur Mean Time Between Failures (MTBF) geben Hersteller auch noch die Device/Drive Writes per Day (DWPD)an. Diese Zahl gibt Auskunft darüber, wie viele Schreib-Prozesse über eine bestimmte Zeit (drei bis fünf Jahre) ausgeführt werden können bevor ein Ausfall wahrscheinlich wird.

Die DWPD-Zahlen können enorm variieren: von weniger als eins bis hin zu 50. Das hängt davon ab, ob es sich um ein Consumer- oder ein Enterprise-Medium handelt. Normalerweise sind die Speicher mit längerer Haltbarkeit auch teurer.

Die Bedeutung des Controllers

Der Controller und seine Firmware verwalten die Lese- und Schreib-I/Os des NAND-Chips. Flash-Hersteller haben signifikant in die Optimierung der Firmware investiert, damit der Controller optimal mit NAND arbeitet und eine bessere Lebensdauer gewährleistet.

Garbage Collection

Wie oben beschrieben, speichern Flash-Architekturen Daten in Pages, die in Blocks für P/E-Zyklen angeordnet sind. Da Methoden wie Wear Levelling die Schreib-I/Os über den gesamten Flash-Speicher verteilen, werden die Blöcke mit Pages an validen (viel genutzten) und nicht validen Daten gefüllt.

Probleme treten beim Flash meist nur bei den Schreib-Prozessen auf.

Um diese Pages mit invaliden – also nicht mehr genutzten – Daten wieder nutzen zu können, muss der Block gelöscht werden. Das so genannte Garbage Collection sorgt für das verschieben und die Konsolidierung valider Pages zwischen Blöcken. Dabei kann ein gesamter Block gelöscht werden, um den Platz wieder neu nutzen zu können.

Die Effizienz des Garbage Collection kann sich direkt auf die Performance des Flash auswirken. Werden Daten erstmalig auf eine SSD geschrieben, so wird der Inhalt in leere oder nur teilweise gefüllte Blöcke abgelegt, was zu sehr schnellen Schreib-Prozessen führt.

Ab einem bestimmten Zeitpunkt muss der Controller aber die Pages wiederverwendbar machen. Wenn dies geschieht, kann es zu Performance-Einbußen kommen, die man Write Cliffs nennt. Die Qualität der Algorithmen für die Garbage Collection hat direkten Einfluss auf die Performance und unterstreicht einmal mehr die Bedeutung des Controllers im Flash-Speicher.

Schreib-Prozesse mit TRIM beschleunigen

Probleme treten beim Flash meist nur bei den Schreib-Prozessen auf. Kann man die Anzahl dieser Schreib-I/Os minimieren, so lassen sich Performance und Haltbarkeit des Mediums optimieren.

Eine Methode, Schreib-I/Os zu vermeiden, ist TRIM. Hierbei wird das Betriebssystem in die Lage versetzt, Datenblöcke zu kennzeichnen, die vom lokalen File-System kommen. Das Betriebssystem startet dann den Lösch-Prozess, bevor der nächste Schreib-Befehl kommt.

Normalerweise passieren Reads und Writes auf Page-Ebene, ein Löschen findet allerdings immer auf der Block-Ebene statt. Bei einem normalen Schreib-Prozess erfolgt ein löschen auf Block-Level, aber TRIM sorgt dafür, dass das Löschen des P/E-Zyklus eher stattfindet.

TRIM wird von allen herkömmlichen Betriebssystemen unterstützt sowie vom SCSI-Protokoll als Unmap-Kommando, welches wiederum von Hypervisor-Herstellern unterstützt wird.

Implementierungen

Flash-Speicher haben andere Eigenschaften als Festplatten. Deswegen mussten Hersteller neue Architekturen für Flash-Speicher entwickeln oder zumindest bestehende Produktlinien entsprechend modifizieren, damit sie mit Flash-Drives arbeiten können. Zu den Verfahren gehört zum Beispiel in Block-Größe zu lesen und zu schreiben wie in EMCs ExtremIO oder in 3PAR StoreServ-Systemen von HP.

Hitachi Data Systems entwickelte seine eigenen Flash-Module, die Management-Funktionen in einem individuellen Controller konsolidieren statt eine Standard-SSD zu verwenden. Violin Memory verwendet Wear Levelling auf System-Ebene und über alle Module seiner Systeme hinweg und nicht in jedem Laufwerk.

Einige dieser Flash-Vorteile sind in der Hardware implementiert, aber wirkliche Innovationen werden typischerweise durch Architektur-Design und Software erreicht. Das wiederum ist nicht überraschend, da die Storage-Industrie immer mehr zu einer Software-definierten Welt wird.

Folgen Sie SearchStorage.de auch auf Twitter, Google+ und Facebook!

Erfahren Sie mehr über Flash Storage und SSD