25.01.2019 (Doc Storage)
4.4 von 5, (7 Bewertungen)

SSDs: Was ist mit den Schreibzyklen, wenn SSDs fast voll sind?

Leserfrage: Moderne SSDs sorgen automatisch dafür, dass möglichst gleichmäßig über alle Sektoren geschrieben wird (Wear-Leveling). Als Normalo-User kann man diese Funktion nicht deaktivieren. Was passiert, wenn die SSD nahezu voll ist? Werden die spezifizierten Schreibzyklen in so einem Fall nun nicht sehr schnell erreicht und überschritten?

Antwort Doc Storage:

Zunächst einmal gilt es zwei grundsätzliche Arten von Wear-Leveling zu betrachten, die im Markt etabliert sind. Statisches und Dynamisches.

Beim statischen Wear-Leveling wählt das Medium grundsätzlich die Zelle mit der niedrigsten Schreibrate, um in diese hineinzuschreiben. Oder eben nach Zufallsgenerator eine dieser, wenn mehrere mit exakt derselben Rate vorhanden sind. Damit wird gewährleistet, dass der »freie« Speicher in einer SSD grundsätzlich mit annähernd denselben Nutzungsraten vorliegt. Des Weiteren werden Blöcke mit statischen (also nicht geänderten) Daten nur bewegt, wenn diese unter einem vorher festgelegten Wert bei der Löschungs- bzw. Überschreiberate liegen.

Das dynamische Wear-Leveling fasst Zellen bzw. Blöcke zu einer logischen Einheit zusammen, und der Block bzw. die Zelle innerhalb dieser logischen Einheit wird für den nächsten Schreibvorgang ausgewählt, der die niedrigste Schreibrate vorweist. Hierfür hält der Controller eine Tabelle mit der Anzahl der Schreib- bzw. Löschvorgänge einer Zelle oder eines Blockes vor. Ist das Medium neu, stehen alle Werte auf null, jede Veränderung erhöht diesen Wert um einen Zähler. Beim dynamischen Wear-Leveling werden Daten sehr selten oder gar nicht bewegt, wenn diese lediglich Lesezugriffe vorweisen, und verbleiben somit innerhalb einer logischen Einheit.

Mit beiden Techniken lässt sich die Lebensdauer von SSD-Zellen und damit des gesamten Mediums erheblich verbessern. Dabei werden allerdings nur diejenigen Zellen berücksichtigt, die im Moment eines Schreibvorganges entweder leer und noch nie genutzt oder aber zum Überschreiben freigegeben sind, also gelöschte bzw. Teile veränderter Daten enthalten.

Um nun zur eigentlichen Frage zu kommen: Zunächst stellen sich die Fragen, was »nahezu voll« bedeutet und welche Änderungsrate (also Lösch- und Überschreibevorgänge) das Medium aufweist. Je voller das Medium und je niedriger die Änderungsrate an den vorhandenen Daten ist, desto häufiger muss sich das Wear-Leveling an den noch nie benutzten oder zum Überschreiben freigegebenen Zellen bedienen. Das heißt, eine »flache« Nutzung der Zellen findet in diesem Moment auch nur an diesen Zellen statt. Sollten sich also sehr viele Daten auf der SSD befinden und sich diese kaum oder gar nicht ändern, »leiden« die noch vorhandenen freien oder zum Überschreiben freigegebenen Zellen unter hohen Schreibraten.

Dies ist allerdings in nur sehr wenigen Nischenumgebungen der Fall, beispielsweise bei Video- oder Tonaufzeichnungen. Aber auch hier werden (meist) die ältesten Dateien mit den jeweils neuesten überschrieben, so dass die hier wieder zum Überschreiben freigegebenen Zellen vom Wear-Leveling erfasst werden.

Als Faustregel könnte gelten, dass je dynamischer die Daten auf einer SSD sind, umso unwahrscheinlicher es ist, dass einzelne Zellen auch bei hoher Gesamtbelegung die höchstmögliche Nutzungsrate erreichen. Aber dies gilt nur bei relativ alten Baumustern, die nur über ein Handling für tatsächlich zu ändernden Zellen verfügen. Alle modernen Versionen bewegen mit Hilfe des Wear-Levelings Blöcke über die gesamte Betriebsdauer hin und her, ohne darauf Rücksicht zu nehmen, ob die Zelle nun leer, zum Überschreiben freigegeben oder mit aktiven Daten versehen ist. Der Controller ändert die Vektoren zu den jeweiligen Zellen transparent zum Datei- und Betriebssystem, so dass diese von diesem Vorgang nicht informiert werden müssen.

Als Beispiel: Eine ein TByte SSD ist zu 100 Prozent voll, nehmen wir weiter an, dass sich nur ein GByte dieser Daten tatsächlich jemals ändert. Bei dieser Änderung wird der Controller nun zunächst das eine GByte zum Ändern (also Überschreiben) freigeben, einen ein GByte großen Abschnitt der sich niemals ändernden Daten dorthin verlagern und dann das neue GByte an Daten in den freigewordenen Bereich schreiben. Dabei ändern sich die virtuellen Vektoren zu den Daten, so dass das Betriebs- und Dateisystem von diesen Änderungen nichts mitbekommt.

Alle Wear-Leveling-Algorithmen haben wie beschreiben als Ziel, alle Zellen einer SSD möglichst gleichmäßig mit Schreibzyklen zu belasten. Dies verlangsamt das Laufwerk generell je voller das Medium wird, da immer mehr Daten hin und her kopiert werden müssen, und erhöht dummerweise auch die Gesamtnutzung der Zellen. Dieser Effekt wird Write-Amplification genannt, und ist ein Problem aller modernen SSDs. Leider werden weder die Einflüsse auf die Gesamtleistung der Laufwerke noch die Mehrnutzung der Zellen von den Herstellern offengelegt, so dass wir – zumindest momentan – damit leben müssen.

So, ich hoffe ich habe jetzt alle ausreichend verwirrt. 😉

Gruß
Doc Storage

Stellen Sie Ihre Frage
Doc. tec. Storage beantwortet alle Ihre technischen Fragen zu Storage, Backup & Co.

Stellen Sie Ihre Frage an: DocStorage@speicherguide.de