Flash-Speichergeräte (wie sie für heutige SSDs verwendet werden) können zu keinem Zeitpunkt beliebige Daten schreiben. vor dem Schreiben auf eine Zelle (in der Regel 4 KB) muss zuerst gelöscht werden. Leider ist der Löschvorgang sehr langsam. Aus diesem Grund waren Flash-Geräte trotz fehlender beweglicher Teile viel langsamer als magnetische Laufwerke.
Moderne SSDs verbergen die Löschzeit, indem sie einen Satz vorgelöschter Zellen beibehalten. Das bedeutet, dass ein Schreibbefehl vorhandene Daten nicht sofort überschreibt. Stattdessen wählt der Controller des Laufwerks eine gelöschte Zelle aus, ordnet sie neu zu und schreibt sie mit den neuen Daten. Das (und mehrere Schreib dachte Cache - Strategien) gibt dem Antrieb einen großen Speedup, stark magnetische Antriebe übertroffen.
Um sicherzustellen, dass immer ein Satz vorgelöschter Zellen vorhanden ist, plant das Laufwerk das Löschen im Hintergrund und fügt es der Liste der Gebührenzellen hinzu, wenn eine Zelle nicht benötigt wird.
Leider bemühten sich vorhandene Dateisysteme nicht, dem Laufwerk mitzuteilen, wann ein Sektor frei war. Schließlich sollte das Laufwerk nur ein blödes Repository von Bits sein. Das Löschen einer Datei oder eines anderen Vorgangs, der einen Sektor aus Sicht des Dateisystems als frei kennzeichnet, war nur eine Markierung in einer Metadatenstruktur. Der Sektor selbst wurde nicht berührt. Selbst wenn das Dateisystem es löschte, indem es Nullen darüber schrieb, konnte das Laufwerk nicht wissen, ob dies bedeutete, dass der Sektor frei war, oder ob der Benutzer einige Nullen für eine Datei wünschte. Nach einiger Zeit würde das Laufwerk keine freie Zelle mehr haben, die vor dem Schreiben gelöscht werden könnte. und Leistung auf tragische Weise verschlechtert.
Die TRIM-Anweisung wurde schnell erstellt und von den meisten derzeit verwalteten Dateisystemen übernommen. Es ist ein einfaches Signal, das das Dateisystem verwendet, um dem Laufwerk mitzuteilen, dass der Inhalt eines Sektors nicht mehr wichtig ist. Sobald alle auf einer Zelle zugeordneten Sektoren frei sind, hebt der SSD-Controller die Zuordnung der Zelle auf und plant die Löschung. Wenn der Host diese Sektoren liest, stört die SSD das Abrufen von Flash nicht. Sie antwortet sofort mit Nullen. Der wichtigste Effekt ist jedoch, dass die Liste der vorgelöschten Zellen immer aktualisiert wird.
Dennoch weisen die meisten SSDs eine geringere Kapazität als die physische Größe des Flash-Speichers auf, manchmal nur 75%. Das erlaubt es, einige unbenutzte Zellen sogar auf einem 100% vollen System zu behalten, so dass das (Über-) Schreiben von benutzten Sektoren immer noch schnell ist.
TRIM wurde eingeführt, damit ein Betriebssystem (das Dateisystem innerhalb des Betriebssystems) mit einem ATA-Speichermedium kommunizieren kann, dass ein Sektor vom Dateisystem nicht mehr verwendet wird. Dies hat nichts mit dem Schreiben auf die Festplatte zu tun.
TRIM garantiert nicht, dass der Sektor in den Medien auf Null gesetzt ist. Wenn das Dateisystem einen Lesevorgang von diesem Sektor anfordert, wird garantiert, dass Nullen zurückgegeben werden (da die SSD weiß, dass der Sektor Nullen sein sollte, werden diese zurückgegeben, unabhängig davon, was tatsächlich auf dem Medium gespeichert ist. Möglicherweise ist eine Wiederherstellung möglich Daten von einer Festplatte, die einfach beschnitten wurde, obwohl SSDs in der Regel tatsächlich den Speicher löschen.
Dateisysteme tendieren dazu, ihre Schreibvorgänge zu verteilen (aus einer Vielzahl von Gründen, angefangen beim Versuch, Schreibebenen zu erstellen, über die Garbage Collection bis hin zur zufälligen Anordnung von Speicherorten und mehr). Wenn der Datenträger nicht weiß, welche Sektoren das Dateisystem nicht verwendet, bedeutet das einfache Schreiben von Nullen nicht unbedingt, dass der Sektor nicht verwendet wird, und es muss schließlich davon ausgegangen werden, dass die gesamte Festplatte verwendet wird.
Bei SSDs bedeutet diese Annahme, dass ein Sektor zum Zeitpunkt des Schreibens gelöscht werden muss, wodurch die Schreibgeschwindigkeit verringert wird. Anstatt den Speicherort zum Zeitpunkt des Löschens der Datei zu löschen. Ähnlich wie bei virtuellen Festplattendateien in Virtualisierungssystemen wird die dynamische Festplattendatei möglicherweise die volle Kapazität der virtuellen Festplatte umfassen. Wenn das Virtualisierungssystem TRIM implementiert, weiß es, wenn ein Sektor nicht mehr verwendet wird, und daher muss die dynamische Festplatte diesen Speicherort nicht mehr verfolgen.
quelle