Stellt der SSD-Garbage Collector Nullblöcke fest?

333
micha

Ist GC (ich habe Samsung 860 Evo) intelligent genug, um zu bemerken, dass ein Block mit Nullen gefüllt ist?

Aus bestimmten Gründen kann ich TRIM nicht auf SSD verwenden. Ich denke, ich könnte TRIM emulieren, indem ich ab und zu alle Leerzeichen mit Nullen fülle (Linux: sfill -z, Windows: sdelete -z) (etwa einmal pro Woche). Wenn die Festplattenfirmware clever ist, sollte sie feststellen, dass der Block leer ist und ihn überhaupt nicht in den Flash-Speicher schreibt. Stattdessen sollte der Block als nicht zugewiesen markiert werden. Aber ... ist die Firmware klug genug?

1
Mögliches Duplikat von [Kann ich TRIM durch das Schreiben aller Nullen emulieren?] (Https://superuser.com/questions/1242000/can-i-emulate-trim-by-writing-all-zeros) sawdust vor 5 Jahren 0
Ein "nicht verwendeter" Block kann einfach nicht durch den Dateninhalt bestimmt werden. Andernfalls würden gültige Daten unbeabsichtigt verloren gehen. Nein, GC kümmert sich nicht um die Daten der verwendeten Blöcke. Es gibt keine solche Methode, um "zu bemerken, dass der Block leer ist" *. Ihre Annahmen sind falsch. sawdust vor 5 Jahren 0
Nicht "unbenutzt" sondern "leer". Das ist nicht das Gleiche. Das Erkennen eines leeren Blocks ist trivial. Der Standard besagt, dass das Lesen eines nicht zugeordneten Blocks Nullen ergibt - es ist also sinnlos, sie in den Flash-Speicher zu schreiben ... Das Endergebnis ist aus Sicht des Lesers identisch. micha vor 5 Jahren 0
Sie gehen fälschlicherweise davon aus, dass ein Nullblock * "leer" * ist. Die tatsächliche Bedeutung der Daten liegt im Anwendungsprogramm, nicht im Speichergerät. Vom Host-Computer angeforderte Blockschreibvorgänge müssen unabhängig vom Inhalt vom Speichergerät ausgeführt werden. Ein Block, der geschrieben wird, kann vom Speichergerät nicht * "nicht zugeordnet" * werden. Sie verbinden zwei verschiedene Zustände. sawdust vor 5 Jahren 0
1. Nein, das Speichergerät muss nicht exakt die vom Host-Computer angeforderten Daten schreiben. Das Speichergerät muss auf Anforderung genau dieselben Daten zum Lesen bereitstellen. Was in der Zwischenzeit geschieht, hängt vom Speichergerät ab. Genau so funktioniert die Komprimierung im laufenden Betrieb. Und jetzt: Beim Lesen eines nicht zugewiesenen Blocks werden dem Host-Computer immer alle Nullen bereitgestellt. Daher muss für diese Nullen kein Ersatzblock zugewiesen werden. micha vor 5 Jahren 0
2. Block kann natürlich "nicht zugeordnet" werden. Dies ist, was jeder Schreibvorgang an ssd macht. Der alte Block wird "nicht zugeordnet" und der neue Block "zugewiesen". micha vor 5 Jahren 0

0 Antworten auf die Frage