So wie ich es verstehe, wird Wear-Leveling auf USB-Sticks / Flash-Laufwerken :
- helfen, die letzten länger zu machen. (Reduzieren Sie die "Abnutzung", dass eine physikalische Flash-Zelle nur bis zum XX-fachen beschrieben werden kann)
- kann nur wirklich funktionieren, wenn nicht verwendete Flash-Speicherzellen zum Umschalten vorhanden sind. (Je mehr der USB-Stick gefüllt ist, desto weniger alternative Zellen zum Ausgleichen des Verschleißes gibt es)
Im schlimmsten Fall habe ich zu einem bestimmten Zeitpunkt den gesamten Speicher des USB-Sticks verbraucht. Dann ist es weniger wahrscheinlich, dass ein gewisser Verschleiß noch auftreten kann. Kann / (wie würde) ich diesen Zustand wiederherstellen?
Ich meine in Bezug auf USB-Sticks, was leer ist
0000 0000 0000 0000
(Null fill) scheint mir genauso gültig ein Daten als zu sein
1111 1111 1111 1111
oder 1010 1110 0011 1111
oder einem anderen Bit-Muster.
Die Firmware des USB-Sticks muss irgendwie wissen, was als "unbenutzte" Flash-Zelle gilt, damit er sie wieder zum Abnutzungsausgleich verwenden kann. Aber nachdem ich irgendwann einmal den gesamten USB-Stick gefüllt habe, habe ich Probleme zu sehen, wie die Firmware feststellen kann, welche Daten "überschrieben" werden können, da sie keine Daten enthalten.
Meine Frage lautet also: Kann das Auffüllen mit Nullen eine Möglichkeit sein, den Abnutzungsgrad eines USB-Sticks zurückzusetzen
Obwohl ich befürchte, dass dies oft von der Implementierung abhängt ("Firmware" und "Hersteller"), denke ich immer noch, dass es eine Logik für diesen Ansatz geben könnte, anzunehmen, dass "Zero-Filling" das Zurücksetzen des USB-Sticks auf bestimmte - Besser gestaltete USB-Sticks .
Die Logik, die ich mir vorstelle, wäre, dass die Abnutzungskorrektur der Firmware erkennt, dass ein ganzer Block (dh 512 Byte oder 2 KB) nur auf Null gesetzt wird.
Vorher 1101 1011 1000 0010 ... 0001 0011
blockieren : Nachher blockieren:0000 0000 0000 0000 ... 0000 0000
Wenn ich aus diesem Block lese, möchte ich natürlich diese Informationen erhalten:
Block danach: 0000 0000 0000 0000 ... 0000 0000
Diese Informationen können jedoch im laufenden Betrieb generiert werden, indem der Block XYZ = leer in einer bestimmten Flash-Zelle gespeichert wird, die nur der Firmware zur Verfügung steht.
Wenn dies der Fall wäre, würde der Pool beim "Zurücksetzen" (durch Null-Füllen) für andere Zwecke aktiviert, da die Informationen im BLOCK XYZ = leeren Firmware-Speicherbereich des Sticks gespeichert sind.
Ich habe gelesen, dass es einige USB-Sticks geben sollte, die eine solche Firmware haben und daher zurückgesetzt werden können? Kann das wahr sein? Ich möchte durch die Frage eine "Tendenz" kennenlernen, die vielleicht mit Informationen von namhaften Herstellern untermauert ist. Möglicherweise gibt es sogar eine Liste mit USB-Sticks, die auf diese Weise zurückgesetzt werden können. Damit könnte die Antwort einen Link zu einer solchen Liste enthalten.
Ich gehe auch davon aus, dass es nicht "eine neue Firmware" gibt, die von jedem USB-Stick hergestellt wird, und möglicherweise gibt es eine bekannte (häufig verwendete) USB-Firmware, die einen solchen Abnutzungsgrad ausgleicht. Dann könnte die Frage bezüglich dieser Firmware beantwortet werden.
Bestenfalls könnte eine kluge Person einen Weg finden, um die Frage in dieser Form zu beantworten. Sie enthält einige Anweisungen, die es uns Benutzern (von Super-Usern) ermöglichten, "herauszufinden", ob dieser Verschleißausgleich aktiviert ist oder nicht.
Hintergrundinformationen zu meiner Frage
USB-Sticks / Flash-Laufwerke sind sicher eine nette Sache. Das Problem ist aber, dass die Art und Weise, wie sie die Daten speichern, abnutzt, was bedeutet, dass erst nach XX Schreibvorgängen in eine Datenzelle! BINGO! dein stick ist tot!
Eine Möglichkeit, das Problem zu lösen ( Flash-Speicherzellen können nur sehr selten beschrieben werden), ist das "Wear Leveling". Wobei es wichtig ist, dass - falls möglich - die Daten nicht immer auf dieselben Flash-Speicherzellen geschrieben werden .
Anstatt die Daten immer in dieselben physischen Zellen zu schreiben, werden die Daten (wenn sie geändert werden) in einige andere neue physische Zellen geschrieben. Dies reduziert den "Stress", da dies im besten Fall so weitergeht.
Zum besseren Verständnis einiger grundlegender Aspekte des Abnutzungsniveaus habe ich dieses Konzept unten aufgenommen. Es zeigt, wie die Informationen von "Hallo", "Gruß", "Hallo" und "Hallo" anschließend in einer logischen Datenzelle mit dem Namen " Daten " gespeichert werden , die tatsächlich geschrieben wird jedes Mal auf einen anderen physischen Flash-Speicher (daher ein kleines "Konzept" des Wear Leveling).
Zustand 1: [CELL1: leer] [CELL2: leer] [CELL3: leer] => schreibe Daten "Hallo" Zustand 2: [CELL1: Hallo] [CELL2: leer] [CELL3: leer] data = CELL1 => Daten auf "salut" aktualisieren Zustand 3: [CELL1: Hallo] [CELL2: Gruß] [CELL3: leer] data = CELL2 => Daten auf "hola" aktualisieren Zustand 4: [CELL1: hallo] [CELL2: salut] [CELL3: hola] data = CELL3 => aktualisiere Daten auf "hi" state5 [CELL1: hi] [CELL2: salut] [CELL3: hola] data = CELL1
Beobachten Sie, wie nach dem Schreiben von 4-fachen Daten jede Zelle im Durchschnitt nur 1,33-mal geschrieben wurde. Beachten Sie auch, dass die Information, welche Zelle die "logischen Daten " enthält , ebenfalls gespeichert und aktualisiert werden soll (was erfordert, dass die Firmware diese Abrechnung vornimmt - unter Verwendung von etwas reserviertem Speicher auch dafür).
quelle
TRIM soll dieses Problem lösen, indem ein Mechanismus bereitgestellt wird, mit dem das Betriebssystem dem Laufwerk mitteilen kann, dass es nicht erwartet, dass ein Sektor Daten enthält. TRIM ist eine SAS / SATA-Spezifikation und keine USB-Spezifikation, daher funktioniert dies leider nicht für USB-Flash-Laufwerke.
Ohne TRIM ist es für das Laufwerk nicht sicher, anzunehmen, dass keine Daten benötigt werden.
Klar, ob die Firmware so funktioniert. Ohne den Quellcode der Firmware oder die Entwicklerdokumentation ist dies nicht sicher zu wissen. Flash-Chips funktionieren in Seiten und Blöcken. Der Chip kann nur ganze Blöcke auf einmal löschen (z. B. 128 KB), die aus vielen Seiten bestehen (z. B. 2 KB), die normalerweise größer sind als herkömmliche Festplattensektoren, die USB-Laufwerke emulieren (512 Byte).
Angesichts der Tatsache, dass USB-Sticks heutzutage spottbillig sind, ist es sehr wahrscheinlich, dass es sich nicht wirklich lohnt, dem Hersteller diese Informationen zur Verfügung zu stellen.
Jedes USB-Flash-Laufwerk verfügt über einen Mikrocontroller (Mikrocontroller = CPU + ROM oder Firmware). Sie können das Flash-Laufwerk öffnen und anhand der Zahlen auf dem Chip suchen, um den Typ zu ermitteln. Verglichen mit der Gesamtzahl der produzierten Flash-Laufwerke gibt es wahrscheinlich nur eine begrenzte Anzahl, aber es würde mich nicht überraschen, dass es sehr viele Variationen einiger Kerntypen geben würde. Sicher gibt es keine einzige Standardfirmware oder ähnliches.
Es gibt Chip-Dienstprogramme, mit denen Sie den Mikrocontroller auf einigen von ihnen neu programmieren können, um virtuelle CD-ROMs und dergleichen auf bestimmten Arten von Flash-Laufwerken zu erstellen. Dies ist eine wild undokumentierte Gegend, zu der es schwer ist, Informationen zu finden. Ich hatte nicht viel Glück.
Nein, nur diese Zelle. SSDs (und SD-Karten und Flash-Laufwerke) sind überprovisioniert, was bedeutet, dass sie mehr Flash enthalten als auf dem Paket angegeben. Dieser zusätzliche Blitz wird als "Reservebereich" verwendet, um abgenutzte Blöcke abzudecken. Es deckt auch Herstellermängel ab - kein Flash hat zu 100% garantierte Arbeitsblöcke mit Ausnahme des ersten Blocks.
quelle
USB-Speicher sind weder mechanisch (wie die frühen Kügelchen auf einem Gitter) noch magnetisch (wie auf einem Band) oder optisch (wie CDs), sondern elektrisch. Betrachten Sie jeden Ort als eine kleine Batteriezelle, die sich mit der Zeit (über einen längeren Zeitraum) entlädt. Jegliches Schreiben führt zu einer Verschlechterung. Null-Füllung macht die Sache nur noch schlimmer. Der Chip selbst verfügt entweder über einen Controller, der Wear Leveling verwendet, oder nicht - ein Benutzer kann dies nicht ändern. Vereinfacht ausgedrückt sorgt der Wear Leveling lediglich dafür, dass verschiedene Teile des USB einen angemessenen Anteil an der Speicheranforderungslast haben.
quelle