Wie funktioniert die SSD-Speicherbereinigung?

1727
skryl

Korrigieren Sie mich, wenn ich falsch liege, aber unterscheidet sich die Block-Bitmap (die freie Blöcke auf einem Festplattenlaufwerk verfolgt) für verschiedene Dateisysteme (in Bezug auf Standort und Struktur)? Wie kann OCZ einen generischen Algorithmus für die Speicherbereinigung haben, ohne das verwendete Dateisystem zu berücksichtigen?

4

2 Antworten auf die Frage

7
SysAdmin1138

SSDs haben mehr Blöcke, als die angegebene Kapazität angibt. Diese Blöcke werden als Teil des Verschleißniveaus sowie als Ersatz für Fehler eingesetzt, da Blöcke vollständig abgenutzt sind. Aus diesem Grund muss der Controller der SSD nachverfolgen, welche Blöcke dem System derzeit als welche logischen Blöcke angezeigt werden.

In Abwesenheit von TRIM, wenn ein Schreibvorgang für einen Dirty-Block eintrifft (einer, der bereits Daten enthält, was die SSD betrifft), passiert eines von zwei Ereignissen:

  1. Der Controller liest den alten Block in den lokalen Speicher.
  2. Der Controller ändert die benötigten Bits.
  3. Der Controller schreibt den gesamten Block in den alten Block

Dies ist jedoch aufgrund von Verschleißniveaus wahrscheinlicher:

  1. Der Controller liest den alten Block in den lokalen Speicher.
  2. Der Controller ändert die benötigten Bits.
  3. Der Controller schreibt den gesamten Block in einen neuen Block im reservierten Teil
  4. Der Controller aktualisiert seine logische Zuordnung für das neue Paar aus logischem Block: physischer Block.
  5. Der Controller kennzeichnet den alten Block als Teil von Reserve.

Der Schlüssel dazu ist, dass der SSD-Controller selbst eine Bitmap von Blöcken führt. Im Gegensatz zu einem Dateisystem-Bitmap werden logische Blöcke mit physischen Blöcken abgeglichen. Dies kann sich bei jedem Schreibvorgang ändern.

Ich war eigentlich neugierig auf die GC-Routinen und wann sie eintreten, aber das erklärt es ziemlich gut. Nachdem der Controller die Blöcke als Reserve / Dirty markiert hat, muss der GC nur im Leerlauf laufen und diese Blöcke auf Null setzen. Das Laufwerk ist also für das sofortige Schreiben auf den übermäßig bereitgestellten Flash-Speicher angewiesen und führt die Bereinigung später durch. skryl vor 13 Jahren 0
2
Erik

Durch Überversorgung. OCZ fügt beispielsweise 7% mehr Flash hinzu, als das Laufwerk benötigt. Diese 7% werden für das Abnivellieren und Ersetzen von fehlerhaften Blöcken verwendet. Sie können jedoch ebenso im Leerlauf gelöscht werden, um den Lösch-Schreib-Zyklus zu vermeiden, den Sie andernfalls erleiden würden.

TRIM kommt auch bei SSD-GC zum Einsatz (sofern Hardware und Software dies unterstützen). Dadurch kann das Betriebssystem dem Laufwerk mitteilen, welche Bits die Dateisysteme / Volumes (nicht mehr) verwenden. Chris Johnsen vor 13 Jahren 0
Ja, aber das wäre kein generischer Algorithmus. Erik vor 13 Jahren 0
Selbst bei Über-Provisioning wird es einen Punkt geben, an dem der gesamte verfügbare Speicher des Laufwerks mindestens einmal beschrieben wurde. Wie kann das Laufwerk nach diesem Punkt bestimmen, welche Blöcke während des GC-Zyklus gelöscht werden dürfen? skryl vor 13 Jahren 3