Der TRIM-Befehl ( im ATA-Befehlssatz als TRIM und im SCSI-Befehlssatz als UNMAP bekannt ) ermöglicht es einem Betriebssystem , einem Speichermedium mitzuteilen, welche Datenblöcke nicht mehr als „in Verwendung“ gelten und daher intern gelöscht werden können. [ 1 ] TRIM wird hauptsächlich auf Solid-State-Drives (SSDs) verwendet, kommt aber auch bei einigen Shingled Magnetic Recording (SMR)-Festplatten zum Einsatz . [ 2 ]
Trim-Befehle wurden kurz nach SSDs eingeführt. Da SSDs eine andere Technologie als frühere magnetische Festplatten verwenden, führten die bisherigen Datenspeichertechniken dazu, dass frühe SSDs mit zunehmender Nutzung langsamer wurden. [ 3 ] Durch Trimmen kann die SSD unnötige Daten effizient löschen , die andernfalls zukünftige Schreibvorgänge verlangsamen würden. [ 4 ]
Obwohl bereits vor der Einführung des Trimmings Tools zum Zurücksetzen einiger Laufwerke in einen Neuzustand verfügbar waren, löschten diese auch alle Daten auf dem Laufwerk, was ihre Anwendung für die kontinuierliche Optimierung unpraktisch machte. [ 5 ] Seit 2010 verfügen viele SSDs und Flash-Speichergeräte über interne Speicherbereinigungsmechanismen für bestimmte Dateisysteme (wie FAT und NTFS ), die unabhängig vom Trimming funktionierten. Obwohl dies ihre Lebensdauer auch unter Betriebssystemen ohne Trimming-Unterstützung erfolgreich verlängerte, brachte es die Nachteile einer erhöhten Schreibverstärkung und eines höheren Verschleißes der Flash-Zellen sowie einer verringerten Schreibleistung mit sich. [ 6 ]
Hintergrund
Da viele Dateisysteme Löschvorgänge auf eine bestimmte Weise handhaben, indem sie Datenblöcke als „nicht in Verwendung“ kennzeichnen [ 7 ] [ 8 ], wissen Speichermedien (SSDs, aber auch herkömmliche Festplatten) in der Regel nicht, welche Sektoren/Seiten tatsächlich belegt sind und welche als freier Speicherplatz gelten. Im Gegensatz zu beispielsweise einem Überschreibvorgang beinhaltet ein Löschvorgang kein physisches Schreiben in die Sektoren, die die Daten enthalten. Da eine herkömmliche SSD keine Kenntnis von den Dateisystemstrukturen, einschließlich der Liste ungenutzter Blöcke/Sektoren, hat, ist sich das Speichermedium nicht bewusst, dass die Blöcke wieder verfügbar sind. Dies ermöglicht es zwar häufig Wiederherstellungstools , Dateien von elektromechanischen Festplatten wiederherzustellen [ 8 ] [ 9 ], obwohl die Dateien vom Betriebssystem als „gelöscht“ gemeldet wurden, bedeutet aber auch , dass ein späterer Schreibvorgang des Betriebssystems in einen der Sektoren, den es als freien Speicherplatz betrachtet, aus Sicht des Speichermediums effektiv einem Überschreibvorgang gleichkommt. Bei magnetischen Festplatten unterscheidet sich das Überschreiben vorhandener Daten nicht vom Schreiben in einen leeren Sektor. Aufgrund der Funktionsweise einiger SSDs auf der untersten Ebene verursacht das Überschreiben jedoch einen erheblichen Mehraufwand im Vergleich zum Schreiben von Daten in eine leere Seite, was die Schreibleistung potenziell stark beeinträchtigen kann. [ 8 ] [ 10 ]
SSDs speichern Daten in Flash-Speicherzellen, die in Seiten von typischerweise 4 bis 16 KiB gruppiert sind . Diese Seiten wiederum sind in Blöcken von typischerweise 128 bis 512 Seiten zusammengefasst, beispielsweise in 512-KiB-Blöcken, die 128 Seiten à 4 KiB enthalten. [ 7 ] [ 11 ] NAND-Flash- Speicherzellen können nur dann direkt beschrieben werden, wenn sie leer sind. Enthalten sie Daten, müssen diese vor einem Schreibvorgang gelöscht werden. Ein SSD-Schreibvorgang kann zwar auf eine einzelne Seite erfolgen, aufgrund von Hardwarebeschränkungen wirken sich Löschbefehle jedoch immer auf ganze Blöcke aus. [ 11 ] Folglich ist das Schreiben von Daten auf leere Seiten einer SSD sehr schnell, verlangsamt sich aber erheblich, sobald zuvor beschriebene Seiten überschrieben werden müssen. Da vor dem erneuten Beschreiben die Zellen einer Seite gelöscht werden müssen, aber nur ganze Blöcke gelöscht werden können, löst ein Überschreiben einen Lese-Lösch-Änderungs-Schreib-Zyklus aus: [ 7 ] [ 12 ] Der Inhalt des gesamten Blocks wird im Cache gespeichert, anschließend wird der gesamte Block von der SSD gelöscht, dann werden die überschriebenen Seiten in den Cache geschrieben und erst dann kann der gesamte aktualisierte Block auf das Flash-Medium geschrieben werden. Dieses Phänomen wird als Schreibverstärkung bezeichnet . [ 13 ] [ 14 ]
Betrieb
Der TRIM-Befehl ermöglicht es einem Betriebssystem, das Laufwerk über Seiten zu informieren, die keine gültigen Daten mehr enthalten. Beim Löschen einer Datei markiert das Betriebssystem die Sektoren der Datei als frei für neue Daten und sendet anschließend einen TRIM-Befehl an das Laufwerk. Nach dem Trimmen speichert das Laufwerk beim Schreiben neuer Daten auf eine Flash-Speicherseite keine Inhalte des Blocks. Dies führt zu einer geringeren Schreibverstärkung (weniger Schreibvorgänge), einem höheren Schreibdurchsatz (da keine Lese-Lösch-Änderungssequenz erforderlich ist) und somit zu einer längeren Lebensdauer des Laufwerks.
Die verschiedenen Laufwerke implementieren den Befehl etwas unterschiedlich, daher kann die Leistung variieren. [ 4 ] [ 9 ]
Der TRIM-Befehl weist das Laufwerk an, einen LBA- Bereich als ungültig zu markieren , sodass nachfolgende Lesevorgänge in diesem Bereich keine sinnvollen Daten mehr liefern. Für einen sehr kurzen Zeitraum können die Daten intern im Flash-Speicher noch vorhanden sein. Nach dem Ausführen des TRIM-Befehls und der Speicherbereinigung kann die Wiederherstellung gelöschter oder beschädigter Daten je nach Implementierung des Befehls in der Firmware des Laufwerks schwierig oder unmöglich sein. [ 15 ]
Durchführung
Betriebssystemunterstützung
Der TRIM-Befehl ist nur dann von Vorteil, wenn das Laufwerk ihn unterstützt und das Betriebssystem ihn anfordert. Die folgende Tabelle listet die wichtigsten Betriebssysteme und die erste Version auf, die den Befehl unterstützt. Ältere SSDs, die vor der Einführung des TRIM-Befehls im ATA-Standard entwickelt wurden, benötigen Firmware-Updates, da der neue Befehl sonst ignoriert wird. Allerdings lässt sich nicht jedes Laufwerk für die TRIM-Unterstützung aufrüsten.
Die Unterstützung für TRIM hängt auch davon ab, was der jeweilige Dateisystemtreiber des Betriebssystems leisten kann, da nur ein Programm, das weiß, welche Teile der Festplatte freier Speicherplatz sind, den Befehl sicher ausführen kann, und auf Systemebene liegt diese Fähigkeit in der Regel im Dateisystemtreiber selbst.
| Betriebssystem | Unterstützt seit | Anmerkungen |
|---|---|---|
| DragonFly BSD | Mai 2011 [ 16 ] | |
| FreeBSD | 8.1 – Juli 2010 [ 17 ] | Die Unterstützung für Blockgeräte wurde in Version 8.1 hinzugefügt. Dateisystemunterstützung wurde in FreeBSD 8.3 und FreeBSD 9, beginnend mit UFS, eingeführt . [ 18 ] ZFS- Trimming-Unterstützung wurde in FreeBSD 9.2 hinzugefügt. [ 19 ] [ 20 ] FreeBSD 10 unterstützt Trimming in Software- RAID- Konfigurationen. [ 21 ] |
| NetBSD | Oktober 2012 [ 22 ] | |
| Linux | 2.6.28–25. Dezember 2008 [ 23 ] | Die erste Unterstützung für Discard-Operationen wurde für FTL -NAND-Flash- Geräte in Version 2.6.28 hinzugefügt . Die Unterstützung für den ATA-TRIM-Befehl wurde in Version 2.6.33 hinzugefügt. [ 24 ] Nicht alle Dateisysteme nutzen TRIM. Zu den Dateisystemen, die TRIM-Anforderungen automatisch senden können, gehören ext4 [25], Btrfs [26], FAT, GFS2, JFS [27], XFS [28], ZFS [ 29 ] und NTFS - 3G . In einigen Distributionen ist dies jedoch aus Performancegründen standardmäßig deaktiviert [ 30 ] und stattdessen auf unterstützten SSDs ein geplantes Trimmen durchgeführt [ 31 ] . Ext3 , NILFS2 und OCFS2 bieten ioctls für Offline - Trimming. Die TRIM-Spezifikation sieht die Unterstützung einer Liste von Trim-Bereichen vor, aber ab Kernel 3.0 wird TRIM nur noch mit einem einzigen Bereich aufgerufen, was langsamer ist [ 32 ] . In vielen neueren Linux-Distributionen stellt systemd eine Unit bereit |
| macOS | 10.6.8–23. Juni 2011 [ 35 ] | Obwohl der AHCI -Blockgerätetreiber ab Version 10.6.6 (10J3210) anzeigen konnte, ob ein Gerät TRIM unterstützt, [ 36 ] blieb diese Funktionalität bis Version 10.6.8 unzugänglich. Erst dann wurde TRIM über die IOStorageFamily bereitgestellt und die Unterstützung für Dateisysteme (HFS+) hinzugefügt. Bis Version 10.10.4 aktivierte Mac OS X TRIM nativ nur für SSDs von Apple, mit Ausnahme externer, austauschbarer SSDs. Für SSDs anderer Hersteller standen Drittanbieter-Dienstprogramme zur Verfügung. Ältere TRIM-Treiber von Drittanbietern funktionierten ab dem Yosemite-Update nicht mehr. [ 37 ] Mittlerweile sind aktualisierte Treiber verfügbar, die mit OS X Yosemite kompatibel sind. [ 38 ] [ 39 ] Mit dem Mac OS X- Update 10.10.4 fügte Apple ein Befehlszeilenprogramm hinzu, trimforcemit dem TRIM auf SSDs von Drittanbietern aktiviert werden kann. [ 40 ] |
| Microsoft Windows | Windows 7 und Windows Server 2008 R2 – Oktober 2009 [ 41 ] [ 42 ] | Windows 7 unterstützte TRIM ursprünglich nur für Laufwerke der AT-Anschlussfamilie, einschließlich Parallel ATA und Serial ATA , und nicht für andere Geräte, einschließlich Storport PCI-Express SSDs, selbst wenn das Gerät den Befehl akzeptiert hätte. [ 43 ] Es ist bestätigt, dass der TRIM-Befehl mit nativen Microsoft-Treibern unter Windows 7 im AHCI- und Legacy-IDE/ATA-Modus funktioniert. [ 44 ] Windows 8 und spätere Windows-Betriebssysteme unterstützen den Befehl „unmap“ für Geräte, die den SCSI-Treiberstapel verwenden, einschließlich USB Attached SCSI Protocol (UASP). Windows 8.1 und spätere Windows-Betriebssysteme unterstützen den TRIM-Befehl für NVM-Express -SSDs. Microsoft hat ein Update für Windows 7 veröffentlicht, das die Unterstützung für NVM-Express einschließlich TRIM für PCIe-SSDs hinzufügt. [ 45 ] [ 46 ] TRIM wird bekanntermaßen für ReFS und NTFS unterstützt , die beide über einen Schalter namens „DisableDeleteNotify“ verfügen, um TRIM zu deaktivieren. [ 47 ] Es wird auch für BitLocker-Volumes mit ReFS- und NTFS-Volumes unterstützt. Windows unterstützt TRIM jedoch nicht für exFAT oder die älteren Dateisysteme FAT/FAT32. [ 48 ] |
| OpenSolaris | Juli 2010 [ 49 ] | |
| Android | 4.3 [ 50 ] – 24. Juli 2013 [ 51 ] | Führt den Vorgang fstrimautomatisch bis zu einmal alle 24 Stunden aus, wenn das Gerät mindestens eine Stunde lang nicht benutzt wurde und mindestens 80 % Akkuladung aufweist (30 %, wenn es an ein Ladegerät angeschlossen ist). [ 50 ] Die tatsächliche Implementierung kann von den OEMs abweichen . |
| Windows Phone | Windows Phone 7 | Unterstützt TRIM seit Windows Phone 7 . |
| iOS | iOS 4 | Unterstützt TRIM seit iOS 4 und iPhone 4 . |
RAID-Probleme
Stand Januar 2017 ist die Unterstützung für den TRIM-Befehl in den meisten hardwarebasierten RAID- Technologien nicht implementiert. Softwarebasierte RAID-Implementierungen beinhalten jedoch häufig die Unterstützung für TRIM.
Windows
Windows 10 bietet Unterstützung für TRIM in SSD-ID-Volumes über die Option „Laufwerke optimieren“ beim Konfigurieren eines RAID-Volumes.
macOS
Der macOS-RAID-Treiber unterstützt TRIM nicht. Dies gilt für alle Versionen von Mac OS X von 10.7 bis macOS 10.12.x.
TRIM wird für RAID-Volumes (0, 1, 4, 5 und 10) bei Verwendung der Drittanbieter-Anwendung SoftRAID® unterstützt, einschließlich TRIM-Unterstützung für SSDs von Drittanbietern. (Hinweis: TRIM für SSDs von Drittanbietern muss explizit mit dem Terminalbefehl „sudo trimforce enable“ aktiviert werden.)
Linux
TRIM ist mit RAID-Volumes in den Linux-Kernel-Versionen nach Januar 2011 verfügbar , die dmraid implementieren, welches BIOS-gestützte „Pseudo-Hardware-RAID“-Unterstützung implementiert und nun alle TRIM-Anforderungen vom Dateisystem, das sich auf dem RAID-Array befindet, weiterleitet. [ 52 ]
Nicht zu verwechseln mit dmraid: Das universelle Software-RAID-System von Linux, mdraid , bietet experimentelle Unterstützung für stapelbasiertes (statt Live- ) TRIM auf RAID-1-Arrays, wenn Systeme so konfiguriert sind, dass sie das Dienstprogramm mdtrim regelmäßig auf Dateisystemen ausführen (auch solchen wie ext3 ohne native TRIM-Unterstützung). [ 53 ] In späteren Linux-Versionen, z. B. Red Hat Enterprise Linux 6.5 und höher, unterstützt mdraid die Ausführung von TRIM-Befehlen in Echtzeit, anstatt sie nur als Stapelverarbeitung durchzuführen. [ 54 ]
Red Hat rät jedoch von der Verwendung der Software-RAID-Level 1, 4, 5 und 6 auf SSDs mit den meisten RAID-Technologien ab, da die meisten RAID-Verwaltungsprogramme (z. B. mdadm unter Linux ) während der Initialisierung alle Blöcke der Geräte beschreiben, um die korrekte Funktion der Prüfsummen (bzw. der Laufwerk-zu-Laufwerk-Verifizierung bei RAID 1 und 10) sicherzustellen. Dies führt dazu, dass die SSD annimmt, alle Blöcke außer dem Reservebereich seien belegt, was die Leistung erheblich beeinträchtigt. [ 55 ]
Andererseits empfiehlt Red Hat die Verwendung von RAID 1 oder RAID 10 für LVM -RAIDs auf SSDs, da diese RAID-Level TRIM („Discard“ in der Linux-Terminologie) unterstützen und die LVM-Dienstprogramme beim Erstellen eines RAID-1- oder RAID-10-Volumes nicht alle Blöcke beschreiben. [ 54 ]
Firmwarebasiertes RAID
Im März 2010 wurde Nutzern kurzzeitig suggeriert, dass die Intel Rapid Storage Technology (RST) 9.6-Treiber (und spätere Versionen) unter Windows 7 TRIM auf RAID-Volumes unterstützen würden. Intel stellte jedoch später klar, dass TRIM zwar für die BIOS-Einstellungen im AHCI- und RAID-Modus unterstützt werde , nicht aber, wenn das Laufwerk Teil eines RAID-Volumes sei. [ 56 ]
Im August 2012 bestätigte Intel, dass Chipsätze der 7er-Serie mit Rapid Storage Technology (RST) 11.2-Treibern TRIM für RAID 0 unter Microsoft Windows 7 unterstützen. [ 57 ] Intel bestätigte zwar keine Unterstützung für Chipsätze der 6er-Serie, jedoch konnte TRIM auf RAID-0-Volumes auf Z68-, P67- und X79-Chipsätzen mithilfe eines modifizierten RAID- Option-ROMs nachgewiesen werden . [ 58 ] Es wird vermutet, dass die fehlende offizielle Unterstützung für Chipsätze der 6er-Serie eher auf Validierungskosten [ 59 ] oder den Versuch zurückzuführen ist, Verbraucher zum Upgrade zu bewegen [ 60 ] , als auf technische Gründe.
Eine Ausnahme von der Notwendigkeit eines modifizierten Option-ROMs auf Mainboards mit X79-Chipsatz besteht, wenn der Hersteller einen ROM-Schalter hinzugefügt hat. In diesem Fall befinden sich sowohl das RST- als auch das RST-E-ROM im BIOS/UEFI. Dadurch kann das RST-ROM anstelle des RST-E-ROMs verwendet werden, wodurch TRIM funktioniert. [ 61 ] Intel weist darauf hin, dass die beste Leistung mit einem Treiber derselben Version wie das ROM erzielt wird. Wenn das BIOS/UEFI beispielsweise ein Option-ROM der Version 11.0.0.0m enthält, sollte ein Treiber der Version 11.x verwendet werden. [ 62 ]
Nicht unterstützte Dateisysteme aktivieren
Wenn das Dateisystem TRIM nicht automatisch unterstützt, können einige Dienstprogramme Trimmbefehle manuell senden. Normalerweise ermitteln sie, welche Blöcke frei sind, und übergeben diese Liste dann als Folge von Trimmbefehlen an das Laufwerk. Solche Dienstprogramme sind von verschiedenen Herstellern erhältlich (z. B. Intel [ 63 ] , G.Skill [ 64 ] ) oder als allgemeine Dienstprogramme (z. B. der Linux- „Wiper“ hdparm seit Version 9.17 [ 65 ] [ 66 ] oder mdtrim, wie oben erwähnt ). Sowohl hdparm als auch mdtrim finden freie Blöcke, indem sie eine große Datei im Dateisystem anlegen und deren physischen Speicherort ermitteln.
Unabhängig vom Betriebssystem kann das Laufwerk erkennen, wenn der Computer einen Speicherblock mit Nullen überschreibt, und diesen Block freigeben (trimmen), anstatt ihn zu speichern. Wenn das Lesen eines freigegebenen Blocks immer Nullen zurückgibt, ist diese Vorgehensweise für den Benutzer transparent, abgesehen von der schnelleren Schreib- (und Lese-)Geschwindigkeit von Blöcken voller Nullen, zusätzlich zum üblichen Vorteil des schnelleren Schreibens in ungenutzte Bereiche. Betriebssysteme schreiben nicht einfach Nullen, um Dateien zu „löschen“ oder Speicherplatz freizugeben, einige Dienstprogramme tun dies jedoch.
Hardwareunterstützung
ATA
Die Spezifikation des TRIM-Befehls [ 67 ] wurde im Rahmen des AT Attachment (ATA)-Schnittstellenstandards standardisiert, der vom Technischen Komitee T13 des Internationalen Komitees für Informationstechnologiestandards (INCITS) geleitet wird. [ 68 ] TRIM ist im Entwurf der ACS-2-Spezifikation unter dem Befehl DATA SET MANAGEMENT (Opcode 06h) implementiert. [ 69 ] Der ATA-Standard wird sowohl von paralleler (IDE, PATA) als auch von serieller (SATA) ATA-Hardware unterstützt.
Ein Nachteil des ursprünglichen ATA-TRIM-Befehls bestand darin, dass er als nicht in die Warteschlange einreihungsfähiger Befehl definiert war und sich daher nicht ohne Weiteres mit einer normalen Arbeitslast aus in der Warteschlange befindlichen Lese- und Schreibvorgängen kombinieren ließ. SATA 3.1 führte einen in die Warteschlange einreihungsfähigen TRIM-Befehl ein, um dieses Problem zu beheben. [ 70 ]
Es gibt verschiedene Arten von TRIM, die durch die SATA-Wörter 69 und 169 definiert werden, die von einem ATA IDENTIFY DEVICE-Befehl zurückgegeben werden:
- Nicht-deterministisches TRIM: Jeder Lesebefehl an die logische Blockadresse (LBA) nach einem TRIM kann unterschiedliche Daten zurückgeben.
- Deterministisches TRIM (DRAT): Alle Lesebefehle an den LBA nach einem TRIM liefern entweder die gleichen Daten zurück oder werden deterministisch.
- Deterministisches Lesen von Null nach TRIM (RZAT): Alle Lesebefehle an den LBA nach einem TRIM geben Null zurück.
Weitere Informationen finden sich in SATA Word 105, das die maximale Anzahl von 512-Byte-Blöcken pro DATA SET MANAGEMENT-Befehl beschreibt, die ein Laufwerk unterstützen kann. Standardmäßig beträgt dieser Wert 8 (bzw. 4 kB), viele Laufwerke reduzieren ihn jedoch auf 1, um die Microsoft Windows-Hardwareanforderungen für TRIM zu erfüllen. Demnach darf die Befehlsausführungszeit 20 ms oder 8 ms × (Anzahl der LBA-Bereichseinträge) nicht überschreiten, je nachdem, welcher Wert größer ist, und muss immer unter 600 ms liegen. [ 71 ]
Ein einzelner LBA-Bereich wird als LBA-Bereichseintrag bezeichnet und durch acht Bytes repräsentiert. Die LBA wird durch die ersten sechs Bytes des LBA-Bereichseintrags ausgedrückt, die Bereichslänge ist ein nullbasierter Zähler (z. B. 0 = 0 und 1 = 1), der durch die verbleibenden zwei Bytes dargestellt wird. Ist die Bereichslänge null, wird der LBA-Bereichseintrag als Füllbytes verworfen. [ 72 ] Dies bedeutet, dass für jeden 512-Byte-Block von TRIM-Bereichen, den ein Gerät unterstützt, maximal 64 Bereiche à 32 MB oder 2 GB möglich sind. Unterstützt ein Gerät SATA Word 105 mit 8 Bytes, kann es 16 GB mit einem einzigen TRIM-Befehl (Data Set Management) trimmen.
SCSI
SCSI stellt den UNMAP-Befehl (ein vollständiges Analogon zu TRIM) und den WRITE SAME-Befehl (Varianten 10 und 16) mit gesetztem UNMAP-Flag bereit. [ 73 ]
SD/MMC
Der MultiMediaCard- und SD- ERASE-Befehl (CMD38) bietet eine ähnliche Funktionalität wie der ATA-TRIM-Befehl, erfordert jedoch, dass gelöschte Blöcke mit Nullen oder Einsen überschrieben werden. In eMMC 4.5 und optional auch in SDHC- und SDXC-Karten ist die Unteroperation DISCARD definiert, die ATA TRIM insofern ähnlicher ist, als der Inhalt verworfener Blöcke als undefiniert betrachtet werden kann (d. h. „egal“).
NVM Express
Der NVM Express -Befehlssatz enthält einen generischen Dataset-Management- Befehl, der dem Speichermedium die Absicht des Hosts bezüglich bestimmter Blockbereiche mitteilt. Wird dieser Befehl mit dem auf 1 gesetzten Attribut-Delocate-Bit (AD) in Befehls-Dword 11 ausgeführt, führt er ein Trimmen durch. Er enthält außerdem einen Befehl zum Schreiben von Nullen , der in Befehls-Dword 12 ein Deallocate-Bit (DEAC) enthält, das es der Festplatte ermöglicht, zu trimmen und Nullen zurückzugeben. [ 74 ]
Nachteile
- Manche Verschlüsselungsverfahren, die eine Abstreitbarkeit erschweren, bestehen darin, die gesamte Festplatte wie zufälligen Datenmüll aussehen zu lassen. Die Verwendung von TRIM untergräbt diese Ebene der plausiblen Abstreitbarkeit , da die erzeugten Blöcke, die ausschließlich mit Nullen (oder Einsen) gefüllt sind, leicht erkennen lassen, welche Blöcke verwendet werden. [ 75 ] Es wurde argumentiert, dass auch die Deaktivierung von TRIM verdächtig wirken könnte. [ 76 ]
- Die ursprüngliche Version des TRIM-Befehls wurde vom T13-Unterkomitee als nicht in die Warteschlange eingeordneter Befehl definiert und kann daher bei unachtsamer Verwendung, z. B. nach jedem Löschbefehl im Dateisystem, zu erheblichen Leistungseinbußen führen. Aufgrund der nicht in die Warteschlange eingeordneten Natur des Befehls muss der Treiber zunächst warten, bis alle ausstehenden Befehle abgeschlossen sind, den TRIM-Befehl ausführen und anschließend die normalen Befehle fortsetzen. Die Ausführung von TRIM kann, abhängig von der Firmware der SSD, viel Zeit in Anspruch nehmen und sogar einen Garbage-Collection- Zyklus auslösen. Diese Leistungseinbußen lassen sich minimieren, indem man TRIM-Befehle in Batches oder periodisch ausführt, anstatt sie bei jeder Dateilöschung auszuführen . Dies kann erreicht werden, indem man solche Batch-Jobs zu Zeiten geringer Systemauslastung plant. Dieser Nachteil von TRIM wurde in Serial ATA Revision 3.1 mit der Einführung des Queued TRIM Command behoben. [ 77 ] [ 78 ] Windows 8 hat die Unterstützung für periodisches und in die Warteschlange eingeordnetes TRIM hinzugefügt.
- Nur einige Hypervisoren (wie Hyper-V und Parallels Desktop ) haben TRIM für das Gastbetriebssystem implementiert (Stand 2023).
- Fehlerhafte Firmware von Festplatten, die die Unterstützung für Queueed TRIM falsch meldet oder kritische Implementierungsfehler aufweist, wurde mit schwerwiegenden Datenbeschädigungen und/oder schwerwiegenden Fehlern wie häufigen Systemabstürzen bei verschiedenen Geräten in Verbindung gebracht, insbesondere bei den M500-Modellen von Micron und Crucial [ 79 ] sowie den Serien 840 und 850 von Samsung [ 80 ] . Die Datenbeschädigung wurde unter Linux bestätigt (dem einzigen Betriebssystem mit Queueed-TRIM-Unterstützung zum 1. Juli 2015) [ 81 ] .
Diese Geräte sind in der libata-core.c des Linux-Kernels auf eine Blacklist gesetzt , um zu erzwingen, dass nicht in die Warteschlange gestellte TRIM-Befehle ( ATA_QUIRK_NO_NCQ_TRIM ) an diese Laufwerke gesendet werden, anstatt in die Warteschlange gestellte TRIM-Befehle zu senden: [ 82 ]
- Micron/Crucial M500 mit allen Firmware-Versionen, einschließlich werksüberholter SSDs
- Micron M510 mit Firmware-Version MU01
- Micron/Crucial M550 mit Firmware-Version MU01
- Crucial MX100 mit Firmware-Version MU01
- Samsung SSDs der Serien 840 und 850 mit allen Firmware-Versionen
Diese Datei sperrt außerdem den SuperSSpeed S238 generell für TRIM, da er beim Auslösen von TRIM zu Datenverlusten in den falschen Blöcken führt. [ 82 ] [ 83 ]
Die Datei libata-core.c enthält außerdem eine Whitelist für SSDs, von denen die Entwickler des Subsystems wissen, dass sie die DRAT- und RZAT-Flags ( ATA_QUIRK_ZERO_AFTER_TRIM ) korrekt implementieren, anstatt sie zu ignorieren, wie es bei vielen Laufwerken der Fall ist. Die aufgeführten Laufwerke sind: [ 82 ]
- Crucial SSDs
- Intel SSDs mit Ausnahme der Intel SSD 510
- Micron SSDs
- Samsung SSDs
- Seagate SSDs [ 84 ]
Siehe auch
Referenzen
- ^ „Intel High Performance Solid State Drive – Vorteile von TRIM“ . Intel.com . Intel . 14. September 2010. Abgerufen am 21. Februar 2012 .
- ^ „Trim-Befehl – Allgemeine Vorteile für Festplatten“ (PDF) . Documents.westerndigital.com . Abgerufen am 7. November 2021 .
- ^ Shimpi, Anand Lal (18. März 2009). „Die SSD-Anthologie: SSDs und neue Laufwerke von OCZ verstehen“ . AnandTech.com . S. 4. Archiviert vom Original am 30. März 2010. Abgerufen am 19. Juni 2010 .
- ^ a b Shimpi, Anand Lal. (18. März 2009). S. 10. TRIM ist ein ATA-Befehl (Advanced Technology Attachment Command), der es einem Betriebssystem ermöglicht, eine SSD über nicht mehr benötigte Datenblöcke zu informieren. Die SSD löscht diese Datenblöcke dann, um Platz für neue zu schaffen. TRIM dient im Wesentlichen der Verbesserung der Leistung und Lebensdauer der SSD. Leider wird dieser Vorteil von TRIM zum Nachteil bei der Datenwiederherstellung von SSDs. Daher wird dringend empfohlen, regelmäßig Sicherungskopien Ihrer Daten mit einem zuverlässigen Tool (z. B. Disk Drill für Windows) zu erstellen, insbesondere wenn Ihr Betriebssystem vor einem SSD-Ausfall warnt.
- ^ Shimpi, Anand Lal. (18. März 2009). S. 11.
- ^ „Kingston SSDNow V Plus 100 Testbericht“ . AnandTech.com . Anand Lal Shimpi. 11. November 2010. Abgerufen am 10. Dezember 2010 .
{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link ) - ^ a b c Savill, John (21. April 2009). „Ich habe gehört, dass die Schreibleistung von Solid-State-Disks (SSDs) mit der Zeit abnimmt. Warum?“ WindowsITPro. Archiviert vom Original am 19. August 2012. Abgerufen am 19. Juni 2010 .
- ^ a b c Shimpi, Anand Lal. (18. März 2009). S. 7.
- ^ a b Savill, John (22. April 2009). „Was ist die TRIM-Funktion für Solid-State-Disks (SSDs) und warum ist sie wichtig?“ . WindowsITPro . Abgerufen am 19. Juni 2010 .
{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link ) - ^ Malventano, Allyn (13. Februar 2009). „Langzeit-Leistungsanalyse von Intel Mainstream SSDs“ . PC Perspective . Abgerufen am 10. Februar 2012 .
- ^ a b Shimpi, Anand Lal. (18. März 2009). S. 5.
- ^ Shimpi, Anand Lal. (18. März 2009). S. 8.
- ^ Case, Loyd (8. September 2008). „Schreibverstärkung: Intels Geheimrezept“ . Extremetech . ExtremeTech.com. Archiviert vom Original am 15. November 2010. Abgerufen am 6. November 2010 .
- ^ „Im Inneren des X25-M-Controllers: Verschleißausgleich, Schreibverstärkungssteuerung“ . TomsHardware.com. 8. September 2008. Abgerufen am 6. November 2010 .
- ^ „Zu viel TRIM? Wenn die Datenwiederherstellung von SSDs unmöglich ist“ . Forensic Focus . 23. September 2014. Abgerufen am 8. Mai 2024 .
- ^ "Vorläufige TRIM-Unterstützung" . leaf.dragonflybsd.org .
- ^ „FreeBSD 8.1-RELEASE Versionshinweise: Festplatten und Speicher“ . Abgerufen am 1. September 2010 .
- ^ „Kernelseitige Unterstützung für BIO_DELETE/TRIM auf UFS hinzufügen“ . Abgerufen am 1. Februar 2011 .
- ^ „ZFS TRIM-Unterstützung hinzugefügt, die standardmäßig aktiviert ist .“ Abgerufen am 5. Juni 2013 .
- ^ „FreeBSD 9.2-RELEASE Announcement“ . Abgerufen am 4. Oktober 2013 .
- ^ „Basisrevision 242323 – Hinzufügen grundlegender BIO_DELETE-Unterstützung zur GEOM-RAID-Klasse für alle RAID-Level“ . Abgerufen am 30. Oktober 2012 .
- ^ „TRIM-Unterstützung in NetBSD“ . 19. Oktober 2012.
- ^ "Linux_2_6_28 - Linux Kernel Newbies" . kernelnewbies.org .
- ^ „Speicheränderungen in Linux 2.6.33“ . Kernel Newbies . Abgerufen am 1. September 2010 .
- ^ „Forked by Nicolay - HOWTO: Configure Ext4 to Enable TRIM Support for SSDs on Ubuntu and Other Distributions“ . sites.google.com .
- ^ "Linux_2_6_32 - Linux Kernel Newbies" . kernelnewbies.org .
- ^ „Das JFS-Dateisystem kann jetzt TRIM verarbeiten .“ Abgerufen am 28. März 2012 .
- ^ "Linux_3.0 - Linux Kernel Newbies" . kernelnewbies.org .
- ^ „OpenZFS TRIM-Unterstützung“ . openzfs.org .
- ^ Freemyer, Greg (2010). "OpenSUSE-Forum – SSD-Erkennung beim erstmaligen Erstellen der fstab" .
- ^ „Wie aktiviere ich TRIM?“ . Ask Ubuntu . Abgerufen am 11. November 2015 .
- ^ „SDB:SSD discard (trim) support - openSUSE Wiki“ . en.opensuse.org .
- ^ „Changes/EnableFSTrimTimer - Fedora Project Wiki“ . fedoraproject.org . Abgerufen am 10. Dezember 2020 .
- ^ "swapon(8) — Arch manual pages" . man.archlinux.org . Abgerufen am 20. Juni 2024 .
- ^ „Mac OS X 10.6.8 bringt TRIM-Unterstützung für Apple SSDs, Grafikverbesserungen“ . 24. Februar 2012.
- ^ „MacBook Pros werden mit aktiver SSD-TRIM-Unterstützung ausgeliefert .“ 4. März 2011.
- ^ „Yosemite beendet die Unterstützung von SSDs von Drittanbietern“ . ZDNet .
- ^ „Chameleon SSD Optimizer“ . chameleon.alessandroboschini.com .
- ^ „Sie suchten nach Trim Enabler“ . Cindori.org . Archiviert vom Original am 8. November 2021. Abgerufen am 7. November 2021 .
- ^ Lee Hutchinson (30. Juni 2015). „Neuestes OS X-Update ermöglicht die Aktivierung von TRIM für SSDs von Drittanbietern“ . Ars Technica . Condé Nast . Abgerufen am 1. Juli 2015 .
- ^ Fortin, Michael (9. Mai 2009). Sinofsky, Steven (Hrsg.). „Support und Fragen & Antworten für Solid-State-Drives“ . Engineering Windows 7 Blog . Microsoft . Archiviert vom Original am 25. April 2010.Alternative URL
- ^ „Windows 7-Verbesserungen für Solid-State-Drives“ (PDF) . Microsoft-Downloads . Microsoft Corporation. 12. November 2008. Abgerufen am 8. Juli 2009 .
- ^ Geoff Gasior (2012) OCZs RevoDrive 3 X2 240GB Solid-State-Drive
- ^ Coles, Olin (15. April 2010). „SSD-Benchmark-Tests: SATA IDE vs. AHCI-Modus – AHCI vs. IDE: Abschließende Gedanken“ . BenchmarkReviews . Abgerufen am 20. August 2013 .
- ^ „Update zur Hinzufügung nativer Treiberunterstützung in NVM Express unter Windows 7 und Windows Server 2008 R2“ . Support . Microsoft. 8. September 2015.
- ^ „Was ist der TRIM-Befehl auf SSDs?“ datarecovery.com . 30. Januar 2017.
Microsoft hat diese Funktion mit einem Windows 7-Update namens KB2990941 hinzugefügt.
- ^ „Fsutil-Verhalten“ . Microsoft-Dokumentation . Abgerufen am 17. November 2019 .
- ^ "TRIM-Unterstützung in Windows" .
- ^ „SATA TRIM-Unterstützung in OpenSolaris“ . 29. Juli 2010. Archiviert vom Original am 12. August 2012. Abgerufen am 29. Juli 2010 .
- ^ a b „Android 4.3 Update bringt TRIM auf alle Nexus-Geräte“ . 29. Juli 2013. Archiviert vom Original am 1. August 2013. Abgerufen am 30. Juli 2013 .
- ^ „Android 4.3 angekündigt, ab heute für Nexus-Geräte verfügbar“ . The Verge . 24. Juli 2013. Abgerufen am 24. Juli 2013.
- ^ „Ist es möglich, SSD TRIM (Discard) unter ext4 + LVM + Software-RAID in Linux zum Laufen zu bringen? – Server Fault“ . Abgerufen am 29. November 2011 .
- ^ „Cyberax/mdtrim – GitHub“ . GitHub . Abgerufen am 29. November 2011 .
- ^ a b „Red Hat Enterprise Linux 6 Storage Administration Guide, Kapitel 21. Richtlinien für die Bereitstellung von Solid-State-Festplatten“ . Abgerufen am 9. März 2016 .
- ^ „Red Hat Enterprise Linux 7 Storage Administration Guide“ . 11. November 2015. Abgerufen am 29. Februar 2016 .
- ^ „Gibt es TRIM-Unterstützung für RAID-Konfigurationen?“ Intel . 26. März 2010. Abgerufen am 6. November 2010 .
- ^ „Intel bestätigt RAID0 TRIM-Unterstützung auf Chipsätzen der 7er-Serie“ . 19. August 2012. Archiviert vom Original am 22. Oktober 2012. Abgerufen am 14. Januar 2013 .
- ^ „RAID0-Ausstattung und SRT scheinen für die 6er- und 5er-Reihe möglich zu sein“ . 18. November 2012. Archiviert vom Original am 18. Januar 2013. Abgerufen am 14. Januar 2013 .
- ^ „TRIM- und RAID-0-SSD-Arrays funktionieren auch mit Intel-6-Series-Motherboards“ . 28. November 2012. Archiviert vom Original am 30. November 2012. Abgerufen am 14. Januar 2013 .
- ^ „Intel führt TRIM für RAID-0-SSD-Arrays auf Mainboards der 7er-Serie ein, wir haben es getestet“ . 16. August 2012. Abgerufen am 14. Januar 2013 .
{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link ) - ^ Anand Lal Shimpi. „Intel bringt TRIM auf RAID-0-SSD-Arrays auf Mainboards der 7er-Serie – wir testen es“ . Archiviert vom Original am 18. August 2012.
- ^ Doug Crowthers (17. August 2012). „TRIM-Befehl mit RAID 0 auf Intel 7-Serie bestätigt“ . Tom's Hardware .
- ^ „Intel SSD Optimizer White Paper“ (PDF) . Intel Corporation. Archiviert vom Original (PDF) am 5. Oktober 2012. Abgerufen am 23. Januar 2010 .
- ^ „wiper.exe für Falcon Series“ . XtremeSystems. Archiviert vom Original am 25. Juni 2013. Abgerufen am 23. Januar 2010 .
- ^ „hdparm-9.17 veröffentlicht, mit experimentellen Trim-/Wiper-Skripten für SSDs“ . Abgerufen am 14. August 2010 .
- ^ „hdparm project page“ . sourceforge.net . Abgerufen am 14. August 2010 .
- ^ „Vorschlag für Befehle zur Datenverwaltung für ATA8-ACS2 (Revision 6)“ . INCITS T13 . INCITS . 12. Dezember 2007. Archiviert vom Original am 13. Juni 2010. Abgerufen am 8. Juli 2009 .(Entwurf der Spezifikation T13/e07154r6)
- ^ „T13-Dokumente mit Bezug auf TRIM“ . INCITS T13 . INCITS . Archiviert vom Original am 26. Mai 2010. Abgerufen am 8. Juli 2009 .
- ^ „T13 ATA8 Draft Spec 1697-D“ (PDF) . INCITS . 23. Juni 2010. Archiviert vom Original (PDF) am 22. März 2011. Abgerufen am 14. August 2010 .
- ^ „SATA 6Gb/s“ . Serial ATA International Organization . Abgerufen am 26. September 2012 .
- ^ „Geräte-Speicheranforderungen (Windows)“ . Abgerufen am 29. Februar 2016 .
- ^ „T13/2161-D: Informationstechnologie – ATA/ATAPI-Befehlssatz – 3 (ACS-3)“ (PDF) . T13.org . Archiviert vom Original (PDF) am 5. April 2016. Abgerufen am 29. Februar 2016 .
- ^ Motin, Alexander (24. Dezember 2011). „RFC: SCSI UNMAP (TRIM)-Unterstützung“ . Lists.freebsd.org . Abgerufen am 7. November 2021 .
- ^ NVM-Befehlssatzspezifikation 1.1 https://nvmexpress.org/wp-content/uploads/NVM-Express-NVM-Command-Set-Specification-Revision-1.1-2024.08.05-Ratified.pdf
- ^ „Milan Broz’ Blog: TRIM & dm-crypt ... Probleme?“ . Milan Broz. 14. August 2011 . Abgerufen am 1. Oktober 2014 .
- ^ „Perfekt abstreitbare steganografische Festplattenverschlüsselung“ (PDF) . I.blackhat.com . Abgerufen am 7. November 2021 .
- ^ „Der Weg von 3 Gbit/s zu SATA 6 Gbit/s: Wie man aktuelle Designs auf die SATA-Revision-3.0-Spezifikation migriert“ . SATA-io.org . 27. Mai 2009. Abgerufen am 7. November 2021 .
- ^ „SATA 3.1-Spezifikation bringt Swap-Standard und verbessertes TRIM“ . The Tech Report . 18. Juli 2011.
- ^ "71371 [PATCH]Crucial M500, fehlerhafte Unterstützung für "queued TRIM" . bugzilla.kernel.org .
- ^ "Bug #1449005 trim funktioniert nach der Firmware nicht mit Samsung 840 EVO... : Bugs : fstrim package : Ubuntu" . Launchpad . 27. April 2015.
- ^ torvalds. "linux/libata-core.c at e64f638483a21105c7ce330d543fa1f1c35b5bc7 · torvalds/linux · GitHub" . GitHub .
- ^ a b c torvalds. "linux/libata-core.c at master · torvalds/linux · GitHub" . GitHub .
- ^ torvalds. "libata: force disable trim for SuperSSpeed S238 · torvalds/linux@cda57b1" . GitHub .
- ^ "[1/3] libata: Whitelist SSDs that are known to correct return zeros after TRIM - Patchwork" . patchwork.ozlabs.org .
Externe Links
- Von write() bis hin zu Flash-Chips – Eine Erklärung, wie der TRIM-Befehl SSDs das Löschen von Daten ermöglicht, die vom Dateisystem nicht verwendet werden.
- TRIM-Befehl – Whitepaper: Ein Whitepaper, das Zweck und Funktionsweise des Befehls erläutert.
- Fusion-io Patent „Vorrichtung, System und Verfahren für redundantes Schreibcaching“
- TRIM in SSD- und SMR-Festplatten – Informationen zur TRIM-Funktion in SSD- und SMR-Laufwerken