Wiederherstellung der Leistung und Schätzung der Lebensdauer eines gebrauchten SSD-Laufwerks?


70

Mein altes 128-GB-SSD-Laufwerk ist jetzt ungefähr anderthalb Jahre alt, und ich habe seitdem ein Upgrade auf ein anderes Laufwerk durchgeführt.

Ich möchte meine alte SSD aufräumen, um ...

  • Wiederherstellen der Leistung auf ein nahezu neues Niveau

  • rehabilitieren Sie es und geben Sie es im Allgemeinen einen Gesundheitscheck

Wie mache ich das?


4
Obwohl es sich nicht um die Wiederherstellung handelt, ist dieser Blog-Beitrag möglicherweise interessant, um dies zu verhindern.
Tamara Wijsman

1
Ich habe es vielleicht nur verpasst, aber ich habe nicht gesehen, dass eine der folgenden Antworten " überprüft " wurde. Bei dieser Frage bin ich wirklich neugierig, was letztendlich "am besten" für Sie funktioniert hat. (Wenn Sie sich erinnern ...)
irrational John

Antworten:


56

Unter Linux einfach ausführen

hdparm --trim-sector-ranges start:count /dev/sda

Übergeben Sie die gewünschten Blockbereiche an TRIM anstelle von startund countund das SSD-Gerät anstelle von /dev/sda. Es hat den Vorteil, dass es schnell ist und keine Nullen auf das Laufwerk schreibt. Stattdessen sendet es einfach TRIM-Befehle an den SSD-Controller und teilt ihm mit, dass Sie sich nicht um die Daten in diesen Blöcken kümmern und davon ausgehen können, dass sie im Garbage Collection-Algorithmus nicht verwendet werden.

Sie müssen diesen Befehl wahrscheinlich als root ausführen. Da dieser Befehl extrem gefährlich ist, da er sofort zu erheblichen Datenverlusten führen kann, müssen Sie auch ein --please-destroy-my-driveArgument übergeben hdparm(ich habe dies nicht zur Befehlszeile hinzugefügt, um versehentlichen Datenverlust durch Kopieren und Einfügen zu verhindern.)

Sollte in der obigen Befehlszeile /dev/sdadurch das SSD-Gerät ersetzt werden, an das Sie TRIM-Befehle senden möchten. startist die Adresse des ersten Blocks (Sektors) für TRIM und countdie Anzahl der Blöcke, die als frei von dieser Startadresse markiert werden sollen. Sie können dem Befehl mehrere Bereiche übergeben.

Nachdem ich es persönlich mit hdparm v9.32 auf Ubuntu 11.04 auf meinem Laptop mit 128 GB Crucial RealSSD C300 gemacht habe, muss ich auf ein Problem hinweisen: Ich konnte die Gesamtzahl der Festplattenblöcke (0: 250069680) nicht als Bereich übergeben . Ich habe manuell (im Wesentlichen "binär gesucht" von Hand) einen ausreichend großen Wert für die Blockanzahl gefunden, der funktionierte (40000), und konnte TRIM-Befehle für eine Sequenz von 40000 Bereichen ausgeben, um die gesamte Festplatte freizugeben. Dies ist mit einem einfachen Shell-Skript wie dem folgenden möglich (getestet unter Ubuntu 11.04 unter root):

 # fdisk -lu /dev/sda

 Disk /dev/sda: 128.0 GB, 128035676160 bytes
 255 heads, 63 sectors/track, 15566 cylinders, total 250069680 sectors
 ...  

Um das gesamte Laufwerk zu löschen, nehmen Sie die Gesamtzahl der Sektoren und ersetzen Sie 250069680 in der folgenden Zeile durch diese Zahl und führen Sie (add --please-destroy-my-drive) aus:

 # i=0; while [ $i -lt 250069680 ]; do echo $i:40000; i=$(((i+40000))); done \
 | hdparm --trim-sector-ranges-stdin /dev/sda

Und du bist fertig! Sie können versuchen, den unformatierten Inhalt der Festplatte hexedit /dev/sdavorher und nachher zu lesen, und überprüfen, ob das Laufwerk die Daten verworfen hat.


Selbst wenn Sie Linux nicht als primäres Betriebssystem des Computers verwenden möchten, können Sie diesen Trick nutzen, indem Sie von einer Live-CD booten und auf dem Laufwerk ausführen.


3
Tolles Schreiben, aber dies funktioniert leider nicht für SSDs, die nicht von TRIM unterstützt werden. Dafür müssen Sie etwas weiter gehen. Anweisungen zur Verwendung von hdparm finden Sie im ATA-Wiki unter kernel.org . Es wäre sogar noch besser, wenn Sie Ihren ursprünglichen Eintrag so ändern könnten, dass er diese Informationen enthält :)
James,

"fstrim" ist eine einfache Version des oben genannten (siehe separate Antwort).
Bryce

@Bryce, falsch; TRIM wird nur empfohlen und ist aus Performancegründen und nicht aus Sicherheitsgründen gedacht. Dies bedeutet, dass das Laufwerk den Befehl ignorieren oder das Löschen bis zu einem späteren Zeitpunkt verzögern kann, wie es die meisten Laufwerke tun.
Psusi

24

Beginnen wir zunächst damit, zu verstehen, was den Leistungsabfall verursacht. Ohne dies zu wissen, werden viele Leute unangemessene Lösungen vorschlagen (wie ich bereits sehe). Der springende Punkt dieser ganzen Situation ist, wie aus Wikipedia hervorgeht , die folgende Tatsache . Denken Sie daran, es ist wichtig:

Bei NAND-Flash-Speichern müssen Lese- und Programmiervorgänge Seite für Seite ausgeführt werden, während das Entsperren und Löschen blockweise erfolgen muss.

SSDs bestehen aus NAND-Flash und Flash besteht aus "Blöcken". Jeder Block enthält viele "Seiten". Stellen wir uns der Einfachheit halber vor, wir hätten gerade eine glänzende neue SSD gekauft, die einen ganzen Speicherblock enthält und aus 4 leeren Seiten besteht.

Der Klarheit halber unterscheide ich zwischen leeren Seiten, benutzten Seiten und gelöschten Seiten mit ∅, 1 und X. Der Schlüssel ist, dass es aus Sicht des Controllers einen Unterschied zwischen diesen gibt! Es ist nicht so einfach wie Einsen und Nullen. Zu Beginn sehen die Seiten auf unserer neuen Festplatte also so aus:

∅, ∅, ∅, ∅ (alles leer)

Nun werden einige Daten auf das Laufwerk geschrieben, die dann auf dieser ersten Seite gespeichert werden.

1, ∅, ∅, ∅

Als nächstes schreiben wir ein bisschen mehr Daten, nur diesmal genug, dass es zwei Seiten benötigt und so auf der 2. und 3. Seite gespeichert wird:

1, 1, 1, ∅

Wir haben keinen Platz mehr! Wir entscheiden, dass wir die ursprünglichen Daten, die wir geschrieben haben, nicht wirklich benötigen. Löschen wir sie, um Platz zu schaffen:

X, 1, 1, ∅

Schließlich müssen wir einen weiteren großen Datensatz speichern, der die verbleibenden zwei Seiten belegt. DIES IST, WO DIE LEISTUNG HIT IN DRIVES OHNE TRIM ABLÄUFT! Gehen Sie von unserem letzten Zustand zu diesem:

1, 1, 1, 1

... erfordert mehr Arbeit, als die meisten Menschen erkennen. Dies ist wiederum auf die Tatsache zurückzuführen, dass Flash nur blockweise und nicht seitenweise gelöscht werden kann. Genau das erfordert der letzte Übergang. Das Unterscheidungsmerkmal zwischen TRIM- und Nicht-TRIM-basierten SSDs ist, wenn die folgenden Arbeiten ausgeführt werden!

Da wir eine leere Seite und eine gelöschte Seite verwenden müssen, muss die SSD zuerst den Inhalt des gesamten Blocks in einen externen Speicher lesen, den ursprünglichen Block löschen, den Inhalt ändern und diesen Inhalt dann zurückschreiben der Block. Es ist nicht so einfach wie ein "Schreiben", sondern es ist jetzt ein "Lesen-Löschen-Schreiben" geworden. Dies ist eine große Änderung, und es ist wahrscheinlich die ungünstigste Zeit, während wir viele Daten schreiben. Es könnte alles vermieden werden, wenn diese "gelöschte" Seite vorzeitig wiederhergestellt würde, was TRIM genau vorsieht. Mit TRIM stellt die SSD unsere gelöschten Seiten entweder unmittelbar nach dem Löschen wieder her oder zu einem anderen Zeitpunkt, den die TRIM-Algorithmen für angemessen halten. Der wichtige Teil ist jedoch, dass es mit TRIM nicht passiert, wenn wir mitten im Schreiben sind!

Ohne TRIM können wir das oben beschriebene Szenario letztendlich nicht vermeiden, da wir unsere Laufwerke mit Daten füllen. Zum Glück gehen einige neuere SSDs über TRIM hinaus und machen auf Hardwareebene ohne die erforderlichen ATA-Befehle (manche nennen diese Garbage Collection) dasselbe wie TRIM im Hintergrund. Aber für diejenigen von uns, die das Pech haben, auch nicht zu haben, ist es wichtig zu wissen, dass das Schreiben von Nullen auf das gesamte Laufwerk nicht ausreicht, um die ursprüngliche Leistung wiederherzustellen !!!!! Das Schreiben aller Nullen auf das Laufwerk zeigt dem Controller nicht an, dass die Seite in Flash zum Schreiben frei ist. Die einzige Möglichkeit, dies auf einem Laufwerk zu tun, das TRIM nicht unterstützt, besteht darin, den Befehl ATA Secure Erase auf Ihrem Laufwerk mit einem Tool wie HDDErase (über Wayback Machine) aufzurufen .

Ich glaube, es gab einige frühe SSDs, die TRIM nur beim Löschen von Partitionen oder unter Windows 7 ("diskpart clean all") und nicht beim Löschen einzelner Dateien unterstützten. Dies kann ein Grund dafür sein, dass ein älteres Laufwerk bei Ausführung dieses Befehls anscheinend die Leistung wiedererlangt. Das scheint mir allerdings ein bisschen dunstig zu sein ...

Ein Großteil meiner Kenntnisse über SSDs und Hardware / Gadgets im Allgemeinen stammt von anandtech.com . Ich dachte, er hätte eine großartige Beschreibung, die das alles erklärt, aber für mein Leben kann ich es nicht finden!



Nur überflogen, aber +1 für die Erwähnung des sicheren Löschens von ATA und des Zitats pro Block vs. pro Seite.
Christopher Galpin

1
Während der größte Teil dieser Antwort richtig ist, ist der Teil über die Speicherbereinigung falsch. Alle SSDs verfügen über eine Garbage Collection. Sie würden nicht ohne es arbeiten. Die Garbage Collection ist keine Alternative zu TRIM. In einem leeren Zustand repräsentiert eine NAND-Zelle eine 1, und Sie können sie dann in eine 0 schreiben. Um sie jedoch wieder auf Null zu bringen, müssen Sie einen ganzen Block auf einmal löschen. Anstatt vorhandene Daten zu überschreiben, werden alle Änderungen in einen neuen Block geschrieben und die alten Daten als ungültig markiert. Das Löschen ungültiger Daten ist Garbage Collection. TRIM weist die SSD an, Daten als ungültig zu markieren, wenn Sie sie im Betriebssystem löschen.
Mr Alpha

Nicht ganz Mr Alpha. Der Begriff "Garbage Collection" (Speicherbereinigung) stammt von Controllern, die den von Ihnen beschriebenen Prozess zu optimalen Zeiten proaktiv ausführen und nicht nur reagieren, wenn dies unbedingt erforderlich ist (was wiederum zu einer schlechten Leistung führt, wenn das Laufwerk voll ist).
James

1
Vielleicht hätten wir es nie "Garbage Collection" nennen sollen und stattdessen nur die älteren, reaktiven Controller "Hoarder" genannt.
James

17

Anscheinend ist die Standardempfehlung, alle Nullen vollständig zu schreiben. Ich bin mir nicht ganz sicher, warum dies hilft (töten nicht viele Schreibvorgänge irgendwann SSDs?), Aber es scheint von den SSD-Supportforen der großen Anbieter befürwortet zu werden.

So machen Sie das in Windows:

  • Starten Sie eine Eingabeaufforderung mit Administratorrechten
  • Führen Sie den Befehl aus diskpart

Sobald Sie das Dienstprogramm DISKPART>aufgerufen haben, werden Sie aufgefordert, die folgenden Befehle auszuführen:

DISKPART> list disk
DISKPART> select disk x

Offensichtlich LASSEN SIE DIE RICHTIGE SSD DRIVE AUSGEWÄHLTE , bevor Sie fortfahren!

DISKPART> clean all
DISKPART> create partition primary
DISKPART> format quick fs=NTFS 

Die Magie hier ist, clean alldie alle Nullen auf das Laufwerk schreibt :

Wenn Sie den Parameter all angeben, kann jeder Sektor auf Null gesetzt werden, und alle auf dem Laufwerk enthaltenen Daten können gelöscht werden.

Danach kann ich bestätigen, dass die Festplattenleistung erheblich gestiegen ist.


11
@Jeff Der Grund, warum das Schreiben aller Nullen hilfreich sein kann, wurde kürzlich von David Spillett erklärt : Einige Controller gehen davon aus, dass die mit Nullen versehenen Blöcke verworfen und in den Pool des freien Speicherplatzes zurückgegeben werden können, wobei der Effekt des Befehls TRIM emuliert wird.
sblair

1
2 Punkte - Erstens löscht der Flash-Löschbefehl normalerweise Blöcke in allen 0xffs, sodass es besser zu sein scheint, diese anstelle von 0en zu schreiben. Ich müsste allerdings die Datenblätter überprüfen, um sicherzugehen. Zweitens: Wenn Sie versuchen, den Controller zum Trimmen des Laufwerks zu verleiten, wäre es nicht eine gute Idee, ein Dienstprogramm auszuführen, das nur jeden Block auf dem Laufwerk trimmt? Persönlich würde ich wahrscheinlich beides machen (0xffs und TRIM), aber ich bin hier wahrscheinlich ein bisschen pedantisch.
Dennis Munsie

2
@dennis sicher, wenn es ein solches Dienstprogramm gibt - zögern Sie nicht, mich auf eines zu verweisen.
Jeff Atwood

1
@Dennis: Wenn das Laufwerk "physische" "Ein" -Bits verwendet und diese ansonsten in logische Ein-Bits übersetzt werden, ist 0xff möglicherweise das von Ihnen benötigte Muster. Sie könnten jedoch invertierte Logik verwenden, sodass Dokumentation oder Kommunikation mit dem Hersteller der einzige Weg ist, um sicherzugehen, bevor Sie fortfahren. Mein Vorschlag, sdelete oder ähnliches zu verwenden, ist, unbenutzte Blöcke auf einem funktionierenden Dateisystem zu trimmen. Natürlich führt dies dazu, dass alle Blöcke in der SSD-Zuordnung, die eine Mischung aus verwendet und nicht verwendet sind, nicht beschnitten werden.
David Spillett

2
Ich bin ein bisschen verblüfft, dass so viele Leute anscheinend nicht wissen, dass eine SSD sicher gelöscht wird. Es ist nicht erforderlich, jeden einzelnen Block zu TRIMMEN. Führen Sie einfach ein Dienstprogramm aus, das einen Secure Erase ATA-Befehl an die SSD sendet, und Ihr Problem ist behoben, unabhängig davon, ob die SSD TRIM unterstützt oder nicht.
James

16

Ich habe auch ein Tool gefunden, SSD Life Pro . Es hat einige schlechte Nachrichten für mich.

SSDLife Pro - Laufwerksgesundheit ist schlecht!

Zur Berechnung werden die SMART SSD-Indikatoren verwendet. Anscheinend versucht es, basierend auf SMART-Daten vorherzusagen :

  • Die Lebensdauer des Flash-Speichers, auf dem SSDs basieren, ist auf 10.000 Schreibvorgänge pro Zelle begrenzt
  • Die meisten Laufwerke zeigen auch Daten zu geschriebenen und / oder gelesenen Informationen in ihren SMART-Parametern an

Dies ist schwierig, da es auch wissen muss, wann die Daten geschrieben wurden, um zu schätzen, aber hier sind die zugrunde liegenden Daten:

01 Fehlerrate lesen 7
09 Anzahl der Einschaltstunden 7085
0C Power Cycle Count 318
B8 Initial Bad Block Count 15
C3-Programmfehler-Blockzählung 0
C4 Erase Failure Block Count 0
C5 Read Failure Block Count 0
C6 Read Sectors 5468243171
C7-Schreibsektoren 41640920876
C8-Lesebefehle 100482453
C9 Schreibbefehle 417315851
CA-Fehlerbits aus Flash 345270
CB-Lesesektoren mit korrigierbarem Bitfehler 340001
CC Bad Block Full Flag 0
CD Maximum P / E Count Spezifikation 5000
CE Minimum Erase Count 3774
CF Maximum Erase Count 65348
D0 Durchschnittliche Löschanzahl 4837
D1 Verbleibende Lebensdauer des Laufwerks 4

Die beängstigende Zahl ist die verbleibende Lebensdauer des Laufwerks, die 4 % beträgt !

Und die daraus resultierenden Berechnungen:

Modell: CRUCIAL_CT128M225
Größe: 128 GB
Seriennummer: xxxxxxxxxxxxxxxxx456
Firmware: 2030
Einschaltzeiten: 318    
TRIM-Unterstützung in Laufwerk / Betriebssystem: aktiviert / aktiviert
Arbeitszeit: 9 Monate 16 Tage 5 Stunden
Insgesamt gelesene Daten: 2607,46 GB
geschrieben: 19855.94 GB

Das Laufwerk wurde ursprünglich im Oktober 2009 gekauft, es ist also etwas mehr als anderthalb Jahre alt.


3
@Jeff Während sich die Prozessgröße des Flash-Speichers verbessert hat, hat sich die Anzahl der Programmier- / Löschzyklen verringert . Der Wert 0xCD legt nahe, dass Sie ein 34-nm-basiertes Laufwerk mit 5.000 Nenn-P / E-Zyklen anstelle von 10.000 haben.
sblair

1
@sblair gut zu wissen; Ich habe das Tool auf einem neuen OCZ Vertex 2 ausprobiert und es hat völlig unterschiedliche SMART-Felder und -Werte.
Jeff Atwood

2
Diese Daten sehen ein bisschen anders aus - es heißt, Sie haben fast zehnmal so viele Daten geschrieben, wie Sie gelesen haben. Klingt das nicht hoch? Ich würde mehr Lesungen als das erwarten. Haben Sie eine Auslagerungsdatei auf diesem Laufwerk?
Dennis Munsie

1
Mehr Datenpunkte - Ich habe eine ähnliche SSD im MacBook meiner Frau installiert. Dies war früher mein Laptop, der für Entwicklungszwecke verwendet wurde. Ich habe mir gerade die Statistiken auf dieser SSD angesehen und in den ungefähr 8 Monaten ihres Lebens hatte sie insgesamt 17 Betriebsstunden im Vergleich zu 7085 (295 Tage). Ich weiß, dass die Maschine insgesamt mehr als 17 Stunden in Betrieb war, aber es scheint, dass das Betriebssystem das Laufwerk aggressiv ausschaltet.
Dennis Munsie

2
20 TB auf ein 128-GB-Laufwerk geschrieben !? Wofür genau verwenden Sie dieses Laufwerk?
BlueRaja - Danny Pflughoeft

6

Ich habe festgestellt, dass das Schreiben von Nullen über das Laufwerk nicht der beste Ansatz ist. Obwohl es kurzfristig hilfreich sein könnte, stellte ich fest, dass mein Laufwerk definitiv nicht die volle Leistung wiedererlangt (ich besitze eine ziemlich alte Intel-SSD ohne TRIM-Unterstützung). Nach ungefähr einem Jahr mit ziemlich starker Beanspruchung kommt es zu einem Einfrieren von 1 bis 2 Sekunden, wenn die SSD versucht, in eine beliebige Datei zu schreiben , auch nachdem sie die SSD auf Null gesetzt hat.

Das einzige, was ich gefunden habe, das die Leistung vollständig wiederherstellt, war ein sicheres Löschen mit hdparm. Ich habe es mir zur Gewohnheit gemacht, meine SSD alle 6-12 Monate zu löschen, wenn es zu kleinen Schluckaufzuständen kommt. Jemand auf Macrumors hat ein spezielles Tutorial für Mac * Geräte erstellt.

Nach all den Behauptungen, die ich gesehen habe, sendet ein sicheres Löschen einen speziellen Befehl an die SSD, der bewirkt, dass alle Sektoren auf einer viel niedrigeren Ebene als nur mit ddoder so auf Null gesetzt werden .


Wenn das Laufwerk TRIM nicht unterstützt, sind alle Wetten deaktiviert.
Jeff Atwood

1
Inkorrekt, Jeff, ein sicheres Löschen ist völlig unabhängig von TRIM. Dies ist ein tatsächlicher ATA-Befehl und das einzige, was Sie tun können, um Laufwerke, die nicht von TRIM unterstützt werden , vollständig wiederherzustellen. Wenn eine SSD diesen Befehl empfängt, werden alle NAND-Zellen als leer markiert, wodurch die ursprüngliche Schreibleistung des Laufwerks wiederhergestellt wird, ohne dass TRIM erforderlich ist. Hierfür stehen zahlreiche Tools zur Verfügung, einschließlich hdparm, auf das in der obigen Antwort verwiesen wird.
James

5

Schauen Sie sich auf dem Mac den digilloydTools DiskTester an . Es gibt dort auch einige interessante Datenpunkte, um die Auswirkungen der Aufbereitung auf die Laufwerksleistung zu sehen.


Ich glaube, alles, was Sie tun müssen, ist, eine sehr große Datei von Null auf Ihre SSD zu schreiben. Sie können die Ergebnisse speichern, indem Sie tun cat /dev/zero > /tmp/bigfile.
Kendall Hopkins

4

ThinkPads verfügen über ein verstecktes BIOS-Menü (aktivieren Sie es über http://www-307.ibm.com/pc/support/site.wss/MIGR-68369.html ), mit dem Ihre SSD zurückgesetzt wird.


Es macht wahrscheinlich dasselbe wie die anderen empfohlenen Tools und schreibt Nullen auf das gesamte Laufwerk, die von der Steuerung als TRIM-Löschbefehle für jeden Block interpretiert werden.
Jeff Atwood

vielleicht? Ich habe keine Ahnung.
chx

2

Um die verbleibende Lebensdauer der SSD auf einer SSD (Solid-State-Laufwerk) zu überprüfen, müssen Sie das Paket smartmontools installieren. Es enthält zwei Hilfsprogramme (smartctl und smartd) zur Steuerung und Überwachung von Speichersystemen mithilfe des Self-Monitoring-, Analyse- und Reporting-Technologie-Systems (SMART), das in die meisten modernen ATA- und SCSI-Festplatten integriert ist.

Für Ubuntu-, Mint- oder Debian-basierte Distributionen

# apt-get install smartmontools

For Fedora, Centos, or Red Hat based distributions
# yum install smartmontools

Der Media_Wearout_Indicator ist das, wonach Sie suchen. Für 100 bedeutet, dass Ihre SSD 100% Leben hat, die niedrigere Zahl bedeutet, dass weniger Leben übrig ist.

# smartctl -a /dev/sda | grep Media_Wearout_Indicator

Ausgabe von meinem Laptop

233 Media_Wearout_Indicator 0×0032 100 100 000 Old_age Always – 0

Wenn Sie weitere Details und vollständige Attribute von Ihrem Laufwerk sehen möchten, können Sie ausführen

# smartctl -data -A /dev/sda

Quelle: namhuy.net/1024/how-to-check-ssd-life-left.html


2

Es gibt jetzt eine viel bessere Antwort für Linux-Systeme als die @LeakyCode-Antwort:

sudo fstrim -v / boot

Der Befehl "fstrim" von "util-linx" durchläuft das Dateisystem und gibt TRIM-Befehle für den gesamten nicht verwendeten Speicherplatz aus. Auf Distributionen wie Ubuntu ist dies standardmäßig deaktiviert, mit Ausnahme einer Auswahlliste von "bekannten sicheren" Laufwerken von Intel und Samsung. Der Befehl kann jedoch auf jeder Partition für jedes Laufwerk manuell ausgeführt werden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.