Strom sparender Computereinsatz hilft nicht zuletzt auch Kosten zu senken. ADMIN 02/2011 geht der Frage nach, was Administratoren tun können, damit ihre ... (mehr)

Schreibtechniken

Die geschilderte interne Funktionsweise einer SSD erfordert spezielle Schreibtechniken um sowohl eine hohe Performance als auch eine lange Lebensdauer der SSD zu erreichen. Das erstmalige Beschreiben einer neuen SSD ist dabei noch einfach. Alle Blöcke (und somit auch alle Pages) sind gelöscht. Neue Daten schreibt der SSD-Controller direkt auf die entsprechenden Pages.

Schwieriger wird es, sobald bereits vorhandene Daten verändert werden. Ohne zusätzliche Mechanismen müsste der SSD-Controller sämtliche Pages eines Blocks zuerst in einen Cache einlesen, anschließend den gesamten Block löschen, um abschließend die zwischengespeicherten Pages versehen mit den Änderungen wieder in den Block zu schreiben. Die Änderung eines einzelnen Bits würde so das Lesen, Löschen und Neuschreiben von 512 KiB an Daten verursachen.

Das vermeidet der SSD-Controller mit einem einfachen Trick. Wenn er Daten einer Page verändert, schreibt er dazu einfach die neuen Daten in eine andere Page, die noch gelöscht ist. In einer internen Zuordnungstabelle vermerkt der Controller dabei, dass die Daten der logischen LBA-Adresse A nun nicht mehr in Page X, sondern in Page Y zu finden sind. Die ursprüngliche Page X markiert er als ungültig. Damit diese Methode funktioniert, benötigt der SSD-Controller zusätzliche Speicherkapazität. Ansonsten könnte er auf einer vollgeschriebenen SSD keine Daten mehr verändern. Daher hat jede SSD eine sogenannte Spare Area. Typischerweise beträgt die Größe dieser Spare Area zwischen sieben und 27 Prozent der Nennkapazität einer SSD. Eine 160 GB SSD kann etwa tatsächlich über 172 GByte verfügen, 12 GByte versteckt die SSD aber vor dem Betriebssystem und nutzt diese Datenmenge als Spare Area.

Mit fortschreitender Nutzungsdauer verändern sich immer mehr vorhandene Daten. Mehr und mehr Pages markiert der SSD-Controller als ungültig. Einzelne Blöcke enthalten nur mehr 40 bis 60 Prozent echte Daten, die restlichen Pages darin sind ungültig und können vorerst nicht weiter genutzt werden. Bevor nun die Spare Area zur Neige geht, räumt der SSD-Controller auf. Bei dieser Garbage Collection kopiert der SSD-Controller die noch gültigen Pages eines Blocks in einen freien Block, der damit nur teilweise gefüllt ist. Die restlichen Pages dieses neuen Blocks bleiben noch unbeschrieben und können für weitere Schreiboperationen genützt werden. Den ursprünglichen Block löscht der SSD-Controller danach. Somit sind alle Pages dieses gelöschten Blocks wieder beschreibbar. Abbildung 2 zeigt ein solches Beispiel.

Abbildung 2: Viele Pages sind ungültig, weil deren Daten verändert und woanders abgespeichert wurden. Die Garbage Collection macht die ungültigen Bereiche wieder nutzbar.

Wie eingangs erwähnt, ist die Anzahl der möglichen Schreibvorgänge (p/e-Zyklen) pro Speicherzelle begrenzt. Sollen nun neue Daten gespeichert werden, schreibt der SSD-Controller daher immer zuerst auf Pages, die noch wenig abgenützt sind. Dieser Vorgang wird als Dynamic Wear Leveling (dynamische Abnutzungsverteilung) bezeichnet. Dynamisch deshalb, weil nur neue oder veränderte Daten verteilt werden.

Diese Methode erhöht die Lebensdauer der SSD. Daten, die nur einmal geschrieben werden und sich danach nicht mehr ändern, bleiben damit aber auf ihren Pages. Static Wear Leveling geht daher einen Schritt weiter und verschiebt auch solche Daten periodisch auf andere Pages, die schon mehr abgenützt sind. Damit werden tatsächlich alle Pages einer SSD gleichmäßig abgenützt und die Lebensdauer der SSD steigt weiter.

Write Amplification

Durch die geschilderten Algorithmen werden einmal geschriebene Daten, selbst wenn sie nicht verändert werden, in andere Pages kopiert (etwa durch Garbage Collection oder Static Wear Leveling). Ein geschriebenes Byte kann also mit der Zeit vom SSD-Controller durchaus mehrfach kopiert werden und somit zu mehreren Schreibvorgängen führen. Der Faktor, wie oft es statistisch zu einem solchen Kopiervorgang kommt, wird als Write Amplification bezeichnet.

Eine hohe Write Amplification führt naturgemäß zu einer höheren Abnutzung und damit geringeren Lebensdauer. Manche SSD-Controller (etwa von Sandforce) versuchen, durch eine Komprimierung der Daten im SSD-Controller die nötigen Schreibvorgänge zu reduzieren, um damit die Abnutzung zu reduzieren. Eine weitere Möglichkeit ist die Vergrößerung der Spare Area. Dadurch sinkt zwar die nutzbare Kapazität, da aber seltener eine Garbage Collection erforderlich ist, steigt dennoch die Lebensdauer der SSD.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019