TRIM und Dateifragmentierung auf einer SSD

TRIM und Dateifragmentierung auf einer SSD

Ich habe dieTRIM-Testvorgeschlagen vonFrostschutzund fand auchHier. Die resultierende 1 MB große Datei ist stark fragmentiert. Wie kann das sein?

Mein einziges Speichergerät /dev/sdaist eine Samsung 500 GB SSD. Es ist „TRIM-fähig“ und der Kernel wird mit einer fstrimausführbaren Datei in geliefert /etc/cron.weekly. Ich wollte den Test trotzdem ausführen, sagen wir mal aus Neugier. Der Test erzeugte eine 1 MB große Datei, trim.test, gefüllt mit dem yalphanumerischen Zeichen.

Nach der Dateierstellung habe ich die genaue Position der Datei auf der Festplatte überprüft:

> cd /
> yes | sudo dd iflag=fullblock bs=1M count=1 of=trim.test
> sudo filefrag -s -v trim.test

Filesystem type is: ef53
Filesystem cylinder groups approximately 177
File size of trim.test is 1048576 (256 blocks of 4096 bytes)
 ext:     logical_offset:        physical_offset: length:   expected: flags:
   0:        0..      15:    2816076..   2816091:     16:             merged
   1:       16..      31:     170064..    170079:     16:    2816092: merged
   2:       32..      63:     170848..    170879:     32:     170080: merged
   3:       64..     127:     168269..    168332:     64:     170880: merged
   4:      128..     255:     170112..    170239:    128:     168333: merged,eof
trim.test: 5 extents found, perfection would be -1 extent

Dies wiederholt sich, wenn ich die Datei lösche und den Vorgang wiederhole.Wie kann eine 1 MB große Datei so stark fragmentiert sein?

Antwort1

Nachdem ich zum Thema TRIM und Fragmentierung herumgeschnüffelt und gelesen habe, könnte die Beantwortung meiner eigenen Frage anderen helfen.

Wenn man über TRIM liest, wird häufig auf die Dateifragmentierung hingewiesen. Beide Aspekte sind Anlass für berechtigte Fragen zur SSD-Speicherleistung, die beiden Probleme sind jedoch unterschiedlich.

  • Dateifragmentierungbesteht darin, dass eine Datei in vielen verschiedenen, nicht zusammenhängenden Schreibbereichen auf die Festplatte oder SSD geschrieben wird, wobei physische Blöcke verwendet werden, die über das Speichermedium innerhalb einer Partition verteilt sind. Im speziellen Kontext von SSDs werden wir sehen, dass dies nichts mit den Aktionen von TRIM oder sogar mit der Speicherverwaltungsebene von TRIM zu tun hat, sondern dass es damit zusammenhängtVerschleißnivellierung(WL), ein weiterer Prozess für die Verwaltung von Speichermedien auf niedriger Ebene, der bei SSDs immer vorhanden ist (im Gegensatz zu TRIM). Die interne Datenverwaltung bei SSDs unterscheidet sich grundlegend von der bei HDDs in der Zuweisung von Sektoren zu nichtflüchtigen Flash-Speicherzellen (d. h. SSD-Zellen) und ihren entsprechenden Blöcken (Flash-Blöcken). Dies hat direkte Auswirkungen auf die Dateifragmentierung.
  • TRIMMENbereitet mindestens einmal geschriebene physische Blöcke auf einer SSD für neue Schreibvorgänge (Wops) vor, wodurch die Notwendigkeit entfällt, die Zielblöcke unmittelbar vor dem Wop tatsächlich zu löschen (wie dies bei einem Setup ohne TRIM der Fall wäre). Dafür muss die SSD über einen Hardware-Controller verfügen, der TRIM-fähig ist. Dies ist nicht immer der Fall. Nach der ersten Nutzungsphase (d. h. wenn die SSD noch relativ neu ist und alle ihre Blöcke noch nicht mindestens einmal überschrieben wurden) werden Wops langsamer, bis sie ein Geschwindigkeitsplateau erreichen. In diesem Stadium gilt als Faustregel, dass TRIM die Schreibzeiten auf TRIM-fähigen SSDs im Vergleich zur gleichen Hardware ohne aktiviertes TRIM ungefähr halbiert.

Während eines Wop verhalten sich SSDs ganz anders als HDDs. Bei einer HDD muss vor einem Wop nie ein Block gelöscht werden. Bei einer SSD ist das immer der Fall und das ist zeitaufwändig. TRIM hilft, diesen Zeitaufwand zu verringern, indem kürzlich freigegebene Blöcke auf der TRIM-fähigen SSD vorkonditioniert werden, im Wesentlichen durch Vorlöschen von Blöcken, die freigegeben werden, nachdem eine Datei geändert und in einen anderen Bereich des Datenträgers verschoben wurde. Dies ist eine vereinfachte Sicht der Realität, aber eine, auf die sich der nicht fachkundige Benutzer grob verlassen kann, um Entscheidungen über Hardware und Hardwareverwaltung auf niedriger Ebene zu treffen. Lesen Sie weiter...

Hat TRIM etwas mit der Fragmentierung von SSDs zu tun?
- Kurze Antwort: Nein, sie sind nicht verwandt.
- Lange Antwort: Fragmentierung ist mit Wear-Leveling (WL) verwandt, aberein andererProzess, der die Lebensdauer von SSDs optimiert. WL ist wichtig, um Wops über den gesamten freien/verfügbaren/nicht reservierten Blockspeicher der SSD innerhalb eines Volumes/einer Partition zu homogenisieren. Dies geschieht, weil jeder Wop die entsprechenden SSD-Zellen altern lässt, indem eine relativ hohe Spannung über einen winzigen Bereich der Halbleiterschicht angelegt wird, wodurch ihre Lebensdauer verkürzt wird. (Ich glaube, dies hat mit thermisch bedingten Defekten zu tun, die im Großteil der SSD auftreten, aber das ist nicht das Thema.)

Würden Wops auf SSDs wie auf HDDs gehandhabt, würden bestimmte Bereiche des Speichermediums viel früher verschleißen als andere, was zu nicht funktionsfähigen Blöcken, Kapazitätsverlust, Datenverlust und Fehlern führen würde. WL stellt tatsächlich sicher, dass alle Blöcke in einer beliebigen SSD-Partition der gleichen Menge an Wops ausgesetzt sind und dass der Verschleiß über den gesamten verfügbaren Partitionsspeicher der SSD „ausgeglichen“ wird. In diesem Sinne erhöht es effektiv die Lebensdauer der SSD, während ihre volle Kapazität bis zu ihrem Ende erhalten bleibt.

Es gibt zwei WL-Modi: statisch und dynamisch.Wiki(auf Deutsch) gibt an, dass sich die Anzahl der Schreibzyklen am Ende der Lebensdauer einer SSD im Vergleich zur gleichen Hardware mit ausgeschaltetem WL um das 100-fache bei statischem und um das 25-fache bei dynamischem WL erhöhen kann.

Da WL Wops (den Grenzparameter, der die Lebensdauer von SSDs definiert) physisch so gleichmäßig wie möglich über den gesamten Speicherplatz der SSD innerhalb einer Partition verteilt, trägt es zwangsläufig zu deren Datenfragmentierung bei. Dies geschieht, um das Hauptziel einer optimierten Verteilung der geschriebenen Blöcke über die Partition einer beliebigen SSD zu erreichen. Die Erkenntnis ist, dass jede auf einer SSD gespeicherte Datei wesentlich stärker fragmentiert sein kann als auf einer herkömmlichen Festplatte.Die Fragmentierung führt allerdings nicht zu einem Leistungsverlust der SSD.

Die Funktionsweise von WL hat noch weitere Konsequenzen: Je größer das SSD-Volumen, desto länger ist seine Lebensdauer unter bestimmten Nutzungsbedingungen. Für den Benutzer bedeuten „Nutzungsbedingungen“ in erster Linie:
- die Menge des verwendeten Speicherplatzes auf einer SSD-Partition und
- die Wop-Frequenz, d. h. wie stark auf das Speichermedium geschrieben wird.
Dies kann tatsächlich dafür sprechen:
- den lx-Swap, /home, /tmp und /var auf einer Festplatte zu platzieren, während der Rest des Betriebssystems problemlos auf einer kleineren SSD weiterleben kann.
- keine Partitionen mit vielen Wops auf einer SSD zu klein zu machen. Wenn der Swap beispielsweise auf einer SSD sein muss und Sie gelesen haben, dass der lx-Swap am besten auf die doppelte Größe Ihrer DRAM-Größe eingestellt werden sollte, machen Sie ihn viermal so groß. Ich weiß nicht, ob meine Rechnung richtig ist, aber die allgemeine Idee ist, dass dies auch die Lebensdauer Ihres Swap-Speichers mehr oder weniger verdoppelt. Wenn Sie viele Vorgänge durchführen, die Swapping erfordern (Server mit stark beanspruchter Datenbank usw.), sollten Sie Ihren Swap und /tmp auf eine Festplatte verschieben – es sei denn, Ihnen gefällt natürlich die Idee, Ihre SSD mit einem Gasbrenner zu betreiben.

In der Zwischenzeit bereitet TRIM die SSD-Blöcke für jeden neuen Wop vor. Es bereitet einmal geschriebene Zellen für einen neuen Wop vor, indem es diese Zellen löscht (tatsächlich erfolgt die Operation auf Blockebene) und startetSpeicherbereinigungbei Bedarf. In diesem Sinne behält TRIM die Verteilungskarte neu freigegebener (und mindestens einmal verwendeter) Blöcke im Auge, während diese vom WL-Controller auf niedriger Ebene verwaltet werden.

Abschluss:

  • Fragmentierung ist kein Problem. Sie ist nicht schädlich für die Leistung der SSD. SSDs brauchen nicht (sieheIntels Vortrag zu SSDs) noch profitieren sie von einer Defragmentierung. Egal, welches Betriebssystem Sie verwenden, schalten Sie die Defragmentierung aus. Jetzt.
  • TRIM ist wichtig und nützlich, vorausgesetzt, die SSD ist TRIM-fähig. Heute bieten einige wenige Marken TRIM-fähige SSDs an. Wenn Sie diesen Thread von Anfang an gelesen haben, kennen Sie den Namen von mindestens einer dieser renommierten Marken. Außerdem galt vor einigen Jahren ext2 als die bessere Option gegenüber ext3, da Journaling bei der Verwendung von SSDs der 1. Generation tatsächlich einige der Vorteile von TRIM zunichtemachte. Dies ist nicht mehr der Fall und ext4 wird tatsächlich mit TRIM + Garbage Collection empfohlen.

HTH.

verwandte Informationen