Ist es für den Flash-Speicher „besser“, mit Einsen statt mit Nullen zu füllen?

Ist es für den Flash-Speicher „besser“, mit Einsen statt mit Nullen zu füllen?

Wenn ich ein Laufwerk sichere, komprimiere ich das Image gerne. Ich fülle es also zunächst mit allen gleichen Werten, sodass der freie Speicherplatz fast auf Null sinkt:

cat /dev/zero > ~/zeros
sync
rm ~/zeros

Bei einem mechanischen/magnetischen Laufwerk werden dabei einfach Nullen in einem Vorgang pro Bit in den gesamten freien Speicherplatz geschrieben. Bei einem Solid-State-/Flash-Gerät wie einer SD-Karte oder einem SSD sind zum Schreiben von Nullen jedoch tatsächlich zwei Vorgänge pro Bit erforderlich:

  • Eine Massenlöschung, die einen ganzen Block auf einmal auf Einsen setzt
  • Ein einzelner Schreibvorgang, der ausgewählte Bits auf 0 zurücksetzt

Wenn man also ein Halbleiter-/Flash-Gerät mit Einsen statt Nullen fülltwie diese Antwort beschreibt, wie zu tun, würde ich den Vorgang beschleunigen oder die Lebensdauer des Geräts verlängern, indem ich den zweiten Schritt des Schreibvorgangs vermeide?

Antwort1

Das fühlt sich wie ein XY-Problem an - die richtige Antwort istes ist wahrscheinlich überhaupt nicht wichtig, aber es ist sinnvoll, dies später zu tun.

Die meisten SSDs verschlüsseln oder verwürfeln Daten zum Zweck der Verschleißnivellierung, sodass Sie das Laufwerk wahrscheinlich nur etwas schneller verschleißen lassen, vermute ich. Bei SD-Karten bin ich mir nicht sicher. Es ist ziemlich ungewöhnlich, sie als Startlaufwerke außerhalb von Szenarien mit sehr wenigen Schreibvorgängen zu verwenden.

Wenn es sich um ein relativ kleines Backup handelt, vermute ich, dass der „intelligente“ Weg darin besteht, ein Image zu erstellen, dann das Image zu mounten und den spärlichen Speicherplatz auf dem Image zu löschen.DannKomprimieren scheint klug. Sie arbeiten auf relativ schnellem Speicher, minimieren das erneute Schreiben auf Flash-Speicher und lesen das gesamte Laufwerk aus und beginnen ohnehin mit einem unkomprimierten Image. Image zuerstDannNullungDannKomprimieren spart Verschleiß.

Es ist auch eine Überlegung wert, wenn ich mich richtig erinnere, Noobs arbeitet mit Disk-Images auf einem FAT32-Laufwerk sowieso, und wenn ja, können Sie einfach die SSD mounten, kopieren über dieDisk-Image im Innerenund führen Sie diese Vorgänge dort aus. Ersetzen Sie dann die Disk-Images nach Bedarf. Oder kopieren Sie einfach den Inhalt des Laufwerks, komprimieren Sie ihn „nach Bedarf“ und ersetzen Sie den Inhalt des alten Laufwerks durch den des neuen.

Antwort2

@AaronD

Möchten Sie fragen, ob das Löschen von freiem Speicherplatz besser mit einem Nullen- oder Einsenmuster erfolgt,
weil so weniger Blöcke verwendet und neu aufgefüllt werden?

Wenn Sie 0 für leer halten, bedeutet dies, dass 1 verwendet wird. Mit dieser Logik können Sie die Lebensdauer eines SSD-Laufwerks verlängern oder verkürzen. Die zweite Logik, die Blöcke auf nicht verwendete Blöcke reduziert, anstatt freien Speicherplatz mit gelöschten oder entfernten Elementen zu haben, sind immer noch Daten, die Speicherplatz und mehr Blöcke verwenden, mehr Schreibvorgänge, was die Verschlechterung beschleunigt.

Sie verstehen nicht, warum Ramhound Ihre Frage nicht versteht.

Es ist mit Ihrer Logik, indem Sie freien Speicherplatz löschen und erstellen und ihn mit

Katze > ~/Nullen

Das Erstellen eines Schreibvorgangs durch Entfernen verwendeter Blöcke ist immer noch ein Schreibvorgang auf diesem Laufwerk, was eine schlechte Idee ist, aber ein guter Gedanke mit schlechter Logik, unabhängig davon, ob er dabei hilft, ein kleineres Backup-Image zu erstellen oder nicht. Dieser Vorgang hilft dabei, ein kleineres komprimiertes Backup-Image zu erstellen, zerstört dabei jedoch Ihr Laufwerk.

Indem Sie die Ausgabedatei auf dasselbe Laufwerk weiterleiten und freien Speicherplatz freigeben, erstellen Sie eine große Datei mit > auf demselben Laufwerk, da das Laufwerk weiterhin mit Daten beschrieben wird, obwohl freier Speicherplatz vorhanden ist. Ein Schreibvorgang auf das Laufwerk ist ein Schreibvorgang, und zwar ein massiver Schreibvorgang.

Ich denke, Sie stellen eine Suggestivfrage. Das heißt, die Logik Ihrer Frage ist zwar sinnvoll, aber sie ist falsch und 100 % kontraproduktiv und führt möglicherweise dazu, dass Ihr Laufwerk 10-mal schneller verschleißt.

Wenn das Laufwerk keinen Speicherplatz hat, aber Schreibvorgänge mithilfe einer Datei mit großer Dateigröße erstellt werden, ist ein Schreibvorgang ein Schreibvorgang. Daher die gesamte Logik, auch wenn ich sie verstehe. Trotzdem hilft Ihre Überlegung, das kleinste Backup-Image zu haben, was wahr ist. Das Löschen des freien Speicherplatzes erstellt viel mehr Schreibvorgänge, als selbst mit freiem Speicherplatz in Ihrem Backup-Image erstellt würden, selbst wenn Sie dies immer wieder tun. Wenn Sie in den freien Speicherplatz schreiben, der eine geringe Menge darstellt, und dann einen Dateischreibvorgang des gesamten freien Speicherplatzes des Laufwerks erstellen, wird immer noch ein massiver Schreibvorgang erstellt, wo der freie Speicherplatz nur eine kleine Menge an Speicherplatz verwenden würde. Das Laufwerk wird schlechter, weil es eine Datei schreibt. Durch das Löschen wird die Datei gelöscht, Sie schreiben eine Datei.

verwandte Informationen