meta data for this page
  •  
Übersetzungen dieser Seite:
  • de-informal

Dies ist eine alte Version des Dokuments!


Kurzübersicht zu Datenträgern und Partitionen

Datenträger

Magnetische Festplatten, Blockgröße und LBA-Adressierung

schematische Darstellung eines Datenträgerblocks auf einer Magnetspeicherfestplatte Datenträger zur persistenten Speicherung von Informationen sind heutzutage zumeist herkömmliche Festplatten mit magnetischen Scheiben oder NAND-Flash-Speicher wie z. B. SSDs, USB-Sticks oder Speicherkarten. Während die Speicherbereiche Festplatten früher entsprechend ihrer Geometrie in Cylinders, Heads und Sectors aufgeteilt wurde, wird heutzutage die sogenannte Logical Block Address (LBA) zur Adressierung der Speicherblöcke auf Datenträgern verwendet. Angaben in der alten CHS-Notation haben heutzutage zumeist keine praktische Relevanz mehr und sollten in der Regel ignoriert werden, weil sie oft irrelevante oder irreführende Informationen liefern.

Bei der vorherrschenden LBA-Adressierung werden die Datenträgerblöcke unabhängig von ihrer tatsächlichen physischen Lage einfach mit einer logischen Adresse bei 0 beginnend durchnummeriert. Eine LBA kann, je nach Standard und Verwendung, z. B. 28, 32 oder 48 Bit lang sein. Jede Adresse bezeichnet dabei einen bestimmten Block auf dem Datenträger. Datenträgerblöcke besitzen grundsätzlich eine einheitliche Größe von 512 Byte. Allerdings setzt sich bei moderneren Speichermedien zunehmend eine Blockgröße von 4096 Byte durch.

NAND-Flash-Speichermedien

Moderne Festplatten wie SSDs basieren auf NAND-Flash-Speicher. Für die folgenden Erläuterungen wird von der einfachsten Form, nämlich zweidimensionalem Flash-Speicher mit Single Level Cells (SLC) ausgegangen. Bei SLC-Speicher kann eine einzelne Speicherzelle nur die Werte 1 oder 0 aufnehmen, nämlich wenn die Speicherzelle voll geladen oder leer ist. Modernere Speicherchips arbeiten mit Speicherzellen, die verschiedene Ladungszustände annehmen können und dadurch auch mehr als nur 1 Bit pro Zelle speichern können.

  • SLC: 2 Zustände → 1 Bit pro Zelle
  • MLC: 4 Zustände → 2 Bit pro Zelle
  • TLC: 8 Zustände → 3 Bit pro Zelle
  • QLC: 16 Zustände → 4 Bit pro Zelle

Außerdem werden in neueren Speicherchips die Speicherstrukturen dreidimensional aufgebaut. Zum besseren Grundverständnis wird hier aber eine vereinfachte Darstellung der herkömmlichen zweidimensionalen Anordnung verwendet.


Struktur von Flash-Speicher

Schematische Darstellung eines NAHD-Speicherblockes mit Cells und Pages

  • Es können nicht an jede einzelne Speicherzelle alle Anschlüsse herangeführt werden, die benötigt würden, um sie einzeln anzusteuern. Dabei würde viel zu viel Platz auf den Speicher-Chips für die Anschlusswege verschwendet und es bliebe kaum Platz für die eigentlichen Speicherzellen übrig.
  • Flash-Speicherzellen sind daher in Rastern angeordnet, so dass nur die einzelnen Zeilen und Spalten eines Rasters mit Datenleitungen angebunden werden müssen. Durch Ansteuerung einer bestimmten Zeile und Spalte kann prinzipiell gezielt auf eine Zelle zugegriffen werden.
  • Eine so organisierte Speichereinheit bezeichnet man als Block.
  • Alle Zellen einer einzelnen Zeile bezeichnet man als Page.
  • Ein Speicherblock hat abhängig vom Datenträger meist eine Größe von einigen Megabyte.
  • Bedingt durch die Art und Weise wie ein Block angeschlossen ist, kann immer nur eine ganze Page gelesen werden.
  • Ebenfalls bedingt durch die Anschlussweise kann immer nur ein ganzer Block geschrieben werden. Das Beschreiben eines Blocks erfolgt in mehreren Teilschritten.
    • Zuerst werden alle Zellen eines Blocks vollständig geladen.
    • Danach können einzelne Zellen gezielt entladen werden.
    • Am Ende dieses Vorgangs beinhaltet der Block die gewünschten Daten.

schematische Darstellung eines Schreibvorganges bei NAND-Flash-Speicher


Lebensdauer und Wear Leveling

Das Lesen aus Flash-Speicher stellt für die Speicherzellen keine nennenswerte Belastung dar. Allerdings geht der Schreibvorgang mit einer tatsächlichen physischen Belastung der Speicherzellen einher, was zu einer schrittweisen Abnutzung der Zellen führt. Ist diese zu weit fortgeschritten, kann sie ihre Ladung nicht mehr vollständig halten und es kommt zu Fehlern. Dabei sind SLCs weniger anfällig, denn auch eine zu 70% gefüllte Zelle kann noch als 1 gewertet werden. Bei MLC, TLC oder QLC-Speicher kommt es schneller zu einer Fehlinterpretation. SLC-Speicher hat eine Lebenserwartung von ca. 100.000 Schreibzyklen. Bei den anderen Zelltypen fällt dieser Wert z. T. deutlich niedriger aus.

Damit nicht bereits nach kurzer Zeit stark beanspruchte Bereiche von Flash-Speichermedien kaputtgehen, sorgt die Firmware auf dem Controller-Chip dafür, dass die Schreibzyklen gleichmäßig über den gesamten vorhandenen Speicherbereich verteilt werden. Die Komponente der Firmware, die dafür zuständig ist, bezeichnet man auch als Flash Translation Layer (FTL). Die FTL ist dafür zuständig, einer Anfrage, die auf eine bestimmte LBA-Adresse lesend oder schreibend zugreifen soll, den Zugriff auf den richtigen Abschnitt des Flash-Speichers zu ermöglichen. Über die Lebensdauer eines Flash-Speichermediums wechselt also immer wieder die Zuordnung einer bestimmten LBA-Adresse zu dem gerade damit verknüpften Speicherbereich. Für das Betriebssystem ist diese Zuordnung transparent. Dieses Verfahren, das zur gleichmäßigen Abnutzung alles Speicherbereiche führen soll, bezeichnet man als Wear Leveling.

schematische Darstellung von dynamischem Wear Leveling Wenn eine Datei geändert werden soll, deren Inhalt sich in bereits stärker abgenutzten Speicherzellen befindet, dann wird der neue Inhalt nicht mehr an die selbe Stelle geschrieben wie der alte, sondern es werden stattdessen weniger abgenutzte Speicherzellen verwendet. Die LBA-Adresse bleibt dabei gleich. Dieses Variante des Wear Leveling, bei der jeweils dann, wenn gerade etwas neu geschrieben werden soll, einem neuen Bereich zugeordnet wird, nennt sich dynamisches Wear Leveling.

schematische Darstellung von statischem Wear Leveling Dem gegenüber steht das statische Wear Leveling. Dieses kommt dann zum tragen, wenn bestimmte Inhalte auf dem Datenträger über lange Zeit unangetastet bleiben, also statisch sind. Das können z. B. große Video-Dateien, Archive, etc. sein, welche so gut wie nie verändert werden. Wird der Abnutzungsgrad der ständig veränderten und der statisch belegten Zellen zu groß, so werden die statischen Inhalte trotzdem in stärker abgenutzte Zellen verschoben. Auf diese Weise stehen die noch besser erhaltenen Zellen wieder für dynamische Schreibvorgänge zur Verfügung.

Wear Leveling kann auch noch mit Spare-Seicher kombiniert werden. Das bedeutet, dass Flash-Speichermedien mit mehr tatsächlichem Speicherplatz hergestellt und ausgeliefert werden, als sie nominal besitzen. Der überzählige Speicher, sogenannter Spare-Speicher (Ersatz-Speicher), kann verwendet werden um defekte Speicherbereiche zu ersetzen. Auch dieser Speicher kann in das Wear Leveling mit einbezogen werden.

Dieser besondere Umgang mit dem vorhandenen Speicherplatz führt dazu, dass Flash-Speichermedien fast bis zum Ende ihrer Lebensdauer ihre komplette Speichergröße zur Verfügung stellen können. Allerdings bedeutet dies auch, dass solche Speichermedien dazu neigen, innerhalb kürzester Zeit vollständig kaputtzugehen, wenn erst einmal die ersten Bereiche damit angefangen haben. Schließlich sind alle Speicherzellen ungefähr gleich stark abgenutzt.


Partitionen

in Arbeit