Adreßierungsebenen in Datenträgern
Aus Benutzersicht werden Daten in Dateien gespeichert, die in einer logischen Verzeichnisstruktur angeordnet sind. Verzeichnisstrukturen befinden sich auf Partitionen – logisch getrennten Teilen von Festplatten oder deren Gruppen – RAID-Arrays. Die Speicherung von Dateien in einer geordneten Struktur wird von Dateisystemen verwaltet, die sich in Details deutlich unterscheiden. Neben diesen Unterschieden weisen alle Dateisysteme auch gewiße Gemeinsamkeiten auf. Dateisysteme ordnen Dateien bestimmten Zuordnungseinheiten zu, die je nach Nomenklatur des jeweiligen Dateisystems Cluster (in Microsoft-Dateisystemen) oder Blöcke (typischerweise in Unix-basierten Umgebungen) genannt werden. Da der Begriff „Block“ sehr ungenau ist, verwenden wir zur Vermeidung von Missverständnissen den Begriff „Cluster“ für diese Zuordnungseinheiten.
Cluster enthalten eine kleinere oder größere (aber immer gleich einer Zweierpotenz) Anzahl von LBA-Sektoren (Logical Block Addressing). Die LBA-Adreßierung wurde in der ersten Hälfte der 1980er-Jahre entwickelt, um die Festplattenverwaltung zu vereinfachen, die CHS-Adreßierung (Cylinder, Sector, Head) zu ersetzen, die sich direkt auf physische Sektoren bezog, und die Kompatibilität zwischen Geräten verschiedener Hersteller zu gewährleisten. Sie wurde von den ATA- und SCSI- Standards übernommen und wird auch von anderen Kommunikationsprotokollen zum Datenaustausch mit verschiedenen Datenträgern verwendet.
Zum Lesen oder Schreiben von Daten auf den Datenträger wird die Cluster-Adreßierung des Dateisystem in LBA-Adreßierung umgewandelt, und die entsprechenden Befehle geben die entsprechenden Sektoren in dieser Adreßierung an. Festplatten bestehen jedoch weiterhin aus einer kleineren oder größeren Anzahl von Platten, auf denen sich kreisförmige, konzentrische Spuren befinden, die in physische Sektoren unterteilt sind. Daher ist es notwendig, den einzelnen physischen Sektoren die LBA-Adreßnummern korrekt zuzuordnen. Diese Aufgabe übernimmt ein Teil der Firmware – das Subsystem zur Übersetzung logischer in physische Adreßen, kurz Übersetzer genannt.
Die Situation ist bei Halbleitermedien, die Daten in Flash-NAND-Chips speichern, ähnlich. Sie werden ebenfalls mittels LBA- Adreßierung adreßiert, obwohl diese Art von Speichermedien keine Platten, Spuren oder Sektoren aufweist. Flash-NAND-Chips adreßieren Daten seitenweise (dies ist die kleinste Programmiern- und Leseeinheit) und Blöcke (kleinste Löscheinheit). Sektoren werden vom Controller nur zur Kommunikation mit der Außenwelt emuliert. Auch bei Halbleiterspeichern enthält die Firmware einen Teil, der für die Übersetzung physischer in logische Adreßen zuständig ist, oft als Flash Translation Layer (FTL) bezeichnet.
RAID-Arrays verwenden LBA-Adreßierung. Bei der Adreßierung eines RAID-Arrays wird deßen LBA-Adreße verwendet, die dann vom Array-Controller in die LBA-Adreßen der einzelnen Festplatten umgewandelt wird. In komplexen Umgebungen mit Arrays-on-Arrays wird die LBA-Adreße des adreßierten Arrays zuerst in die Adreße der einzelnen Arrays und erst dann in die Adreße der physischen Festplatten umgewandelt.
Auch virtuelle Maschinendateien verwenden LBA-Adreßierung. Jede dieser Dateien hat ihr eigenes Dateisystem, unabhängig vom Dateisystem der virtuellen Maschine. In einer solchen Datei befindet sich eine virtuelle Clusteradreße, die in eine virtuelle LBA- Adreßierung umgewandelt wurde. Diese gibt an, welches Fragment der virtuellen Maschine gelesen oder beschrieben werden soll. Nur mit diesen Informationen laßen sich die Adreßen in reale Cluster des Dateisystems, die die Datei der virtuellen Maschine beschreiben, und in reale LBA-Adreßen des physischen Mediums umwandeln.
Freier und belegter Platz
Beim Kauf einer neuen Festplatte gehen wir davon aus, daß sie leer ist. Erst wenn wir sie initialisieren, Partitionen erstellen, formatieren und Daten darauf speichern, bemerken wir, daß sie sich langsam füllt. Wir können zwar die Tools des Betriebssystems nutzen, um den freien und belegten Speicherplatz zu überprüfen, aber wir können nur im Zusammenhang mit den logischen Strukturen des Dateisystems von belegtem und freiem Speicherplatz sprechen.
Physikalisch gesehen speichert jeder Datenträger immer Informationen, auch wenn diese auf logischer Ebene nicht interpretierbar sind. Betrachtet man einen beliebigen LBA-Sektor, erhält man immer eine Antwort, unabhängig davon, ob man einen freien oder belegten Sektor im Sinne der logischen Strukturen lesen möchte. Bei neuen Festplatten ist dies eine Bytefolge mit dem Wert 0x00, bei gebrauchten Festplatten ist dies nicht so offensichtlich.
Manchmal mag es uns so vorkommen, als wären freie Sektoren mit Nullen gefüllt und Sektoren mit anderen Inhalten belegt. In Wirklichkeit ist es jedoch anders. Der belegte Speicherplatz umfaßt die im Dateisystem logisch adreßierten Bereiche, selbst wenn diese Sektoren enthalten, die mit Nullen gefüllt sind. Sind diese Nullen Teil einer Datei oder einer logischen Struktur und in irgendeiner Weise interpretierbar, gelten sie nicht als freier Speicherplatz. Umgekehrt sind auch Bereiche mit zusammenhängenden und vollständigen Dateien, sofern sie im Dateisystem nicht korrekt adreßiert sind, aus ihrer Sicht freier Speicherplatz, in dem andere Daten abgelegt werden können. Solche nicht adreßierten Dateien sind in der Verzeichnisstruktur nicht sichtbar, aber solange sie nicht überschrieben werden, können sie wiederhergestellt werden.
Subsystem zur Übersetzung logischer in physische Adreßen
Klaßischer Übersetzer auf Festplatten
Jahrzehntelang war die Übersetzung von LBA in physische Adreßierung bei Festplatten relativ einfach. Physische Sektoren erhielten fortlaufende LBA-Nummern von 0 bis zur letzten Nummer, die sich aus der nominellen Kapazität des Laufwerks ergab. Die LBA-Adreßen wurden beginnend mit den Spuren am äußeren Rand der Platten vergeben, wobei ihre Nummern in Richtung der Motorachse anstiegen. Dies hängt damit zusammen, daß Spuren mit größerem Radius länger sind und somit mehr Sektoren darauf Platz finden als auf kürzeren Spuren mit kleinerem Radius.
Dank dieser Lösung laßen sich die ersten LBA-Sektoren schneller lesen, da mit einer Umdrehung der Platte mehr von ihnen gelesen werden können. Dies läßt sich leicht beim Testen der Festplatte beobachten: Die Lesegeschwindigkeit sinkt mit zunehmend höheren LBA-Adreßnummern. Bei Festplatten mit mehreren Plattenoberflächen wird die fortlaufende Nummerierung einer Oberfläche gelegentlich unterbrochen, um nachfolgende Adreßen auf anderen Oberflächen zu platzieren. Die Zuordnung bestimmter LBA-Adreßen zu bestimmten Plattenoberflächen wird als Kopfkarte bezeichnet, da eine solche Karte angibt, welcher Lesekopf welche LBA-Adreßbereiche liest.
Eine der Aufgaben des Übersetzers ist das Überspringen defekter Sektoren. Aus Sicht des Übersetzungssystems laßen sich defekte Sektoren in werkseitig vorhandene und betriebsbedingte Defekte unterteilen. Werkseitig vorhandene Defekte werden in der primären Defektliste (P-Liste) erfaßt und bei der Vergabe von LBA-Adreßnummern übersprungen. Die während des Betriebs der Festplatte auftretenden Defekte werden in der Wachstumsdefektliste (G-Liste) gespeichert. Da ihnen bereits LBA-Adreßnummern zugewiesen wurden, werden diese im Rahmen der Neuzuordnung (Remapping) reservierten Sektoren zugeordnet.
Die Details des Übersetzungssystems variieren je nach Firmware-Architektur und Festplattenmodell, jedoch sind diese detaillierten Kenntniße für das Verständnis der TRIM-Funktion nicht erforderlich. Die bedeutendste Änderung zwischen der Einführung der LBA-Adreßierung und der Erfindung der Shingled Magnetic Recording (SMR) war der Ersatz von 512-Byte-Sektoren durch 4-Kilobyte-Sektoren (Advanced Format). Im Advanced Format entspricht ein physischer Sektor acht LBA-Sektoren.
SMR-Laufwerke und Übersetzer der zweiten Ebene
Um die Aufzeichnungsdichte zu erhöhen, stellten Festplattenhersteller fest, daß der Lesekopf ein Signal von einer deutlich schmaleren Spur lesen kann, als der Schreibkopf beschreibt. Daher entwickelten sie das Shingled Magnetic Recording (SMR)-Verfahren, bei dem nachfolgende Spuren die vorherigen teilweise überschreiben. Dies erforderte eine Änderung des Designs des Aufzeichnungskopfes, sodaß dieser ein asymmetrisches Magnetfeld erzeugt. Dadurch wird das stärkste Signal so nah wie möglich an der vorherigen Spur aufgezeichnet, ohne diese zu stören.
Ein Nachteil der Einführung von Shingled Magnetic Recording war der Verlust des Direktzugriffs auf den Sektor beim Schreiben. Beim Schreiben neuer Daten in einen Sektor beschädigt das vom Kopf erzeugte Magnetfeld die Daten von Sektoren auf weiter entfernten Spuren. Um zu vermeiden, daß die gesamte Oberfläche der Platte jedes Mal neu beschrieben werden muß, gruppieren die Hersteller die Spuren in SMR-Zonen mit einer Kapazität von mehreren Dutzend MB und trennen diese Zonen durch Sicherheitsbereiche.
Dennoch erfordert die Änderung eines einzelnen Sektors weiterhin das Neubeschreiben der gesamten Spurgruppe. Da dies die Schreibleistung erheblich beeinträchtigt, haben Hersteller beschloßen, neue Sektorinhalte nicht mehr an ihrem ursprünglichen physischen Speicherort, sondern an einem situationsgerechten Ort zu speichern. Die Lösungsansätze variieren je nach Hersteller, haben aber gemeinsam, daß die relativ feste Zuordnung der LBA-Adreße zu einer bestimmten physischen Adreße aufgehoben wird.
Bei SMR-Festplatten können LBA-Adreßen ihren physischen Speicherort leicht ändern, und die zweite Ebene des Übersetzer ist für die Nachverfolgung ihres aktuellen Speicherorts zuständig. Solche dynamischen Änderungen des Speicherorts logischer Adreßen in physischen Adreßen erfordern die Einführung spezieller Tabellen in der Festplatten-Firmware, die diese Änderungen protokollieren. Praktisch jeder Schreibvorgang auf die Festplatte erfordert die Protokollierung des neuen physischen Speicherorts einiger LBA-Adreßen. Dies führt zu einem erhöhten Fehlerrisiko in den Übersetzer-Modulen, was eine häufige Ursache für SMR-Festplattenausfälle und Datenverlust ist.
Flash-Übersetzungsschicht in Halbleitermedien
Ein charakteristisches Merkmal von Halbleiterspeichermedien ist die Unfähigkeit, vorhandene Inhalte direkt zu überschreiben. Dies ist physikalisch bedingt: Elektronen können nur in leeren Floating-Gatter von Transistoren platziert werden, die vor der Neuprogrammierung gelöscht werden müßen. Wird der Inhalt eines LBA-Sektors geändert, wird er an eine andere physische Adreße geschrieben, und der veraltete Inhalt muß gelöscht werden, um eine physische Speichereinheit für nachfolgende Schreibvorgänge freizugeben.
Diese Lösung erfordert, daß einige physische Speichereinheiten im Speichermedium stets für neue Daten bereitstehen. Daher kann die LBA-Adreßierung nicht die gesamte physische Kapazität des Speichermediums abdecken. Das Verhältnis der Anzahl verfügbarer LBA-Sektoren zur physischen Größe des Speichermediums stellt einen Kompromiß zwischen dem Wunsch nach möglichst hoher Speicherkapazität und der Notwendigkeit dar, eine Reserve für einen effizienten und ausfallsicheren Betrieb vorzuhalten.
Schreib- und Löschvorgänge in Halbleiterspeichermedien machen die Bearbeitung von LBA-Sektoren komplexer als in magnetischen Speichermedien, die ein direktes Überschreiben ermöglichen. Das Schreiben neuer Inhalte in LBA-Sektoren an einer anderen physischen Adreße erfordert die Speicherung der neuen Adreße in Übersetzungstabellen. Blöcke mit ungültigen Daten werden aus der LBA-Adreßierung entfernt und zum Löschen vorgesehen. Diese Datenverwaltungsmethode bedeutet, daß LBA-Adreßen nicht an bestimmte physische Zuordnungseinheiten gebunden sind, sondern je nach den durchgeführten Operationen rotieren.
Bei Halbleitermedien kommt eine zusätzliche Komplikation hinzu: Sie verwenden zwei verschiedene Zuordnungseinheiten: Seiten, die kleinste Einheit zum Lesen und Programmieren, und Blöcke, die kleinste Einheit zum Löschen. Seiten können typischerweise ein bis 32 LBA-Sektoren mit je 512 Byte speichern (ihre Anzahl pro Seite ist immer eine Zweierpotenz) sowie die für den korrekten Betrieb des Mediums notwendigen redundanten Informationen. Blöcke enthalten wiederum mehrere bis mehrere hundert Seiten. Bis zu einem gewißen Zeitpunkt war die Anzahl der Seiten pro Block eine Zweierpotenz, diese Regel wird jedoch seit einigen Jahren nicht mehr befolgt.
Das bedeutet, daß Änderungen im Inhalt des Mediums auf Ebene der LBA -Sektoren in der Praxis dazu führen, daß physische Zuordnungseinheiten gleichzeitig sowohl LBA- als auch Blockadreßen enthalten. Sektoren mit aktuellem und veraltetem Inhalt werden getrennt. Dies wird problematisch, wenn die Anzahl freier Blöcke, die neue Daten aufnehmen können, abnimmt. Ein weiteres Problem von Halbleiterspeichern ist ihr Verschleiß durch Lösch- und Schreibvorgänge, der letztendlich zum Ausfall des Speichermediums führt. Genau diese Probleme waren der Grund für die Implementierung der TRIM-Funktion.
Wie funktioniert TRIM bei SSDs?
Die TRIM-Funktion basiert auf der Tatsache, daß – zumindest theoretisch aus Nutzersicht – keine Daten physisch gespeichert werden müßen, die nicht in den logischen Strukturen des Dateisystems belegt sind. Für das Übersetzungssubsystem genügt es zu wißen, welche Sektoren in Bereichen liegen, die von Dateien oder diese beschreibenden logischen Strukturen belegt sind, und welche logisch gesehen freier Speicherplatz sind. Im letzteren Fall kann der Controller, anstatt die angeforderten Sektoren physisch zu lesen, direkt mit Nullen gefüllte Sektoren senden.
Die Funktionsweise von TRIM weist eine gewiße Analogie zu Sparse-Dateien auf, bei denen größere, mit Nullen gefüllte Dateifragmente nicht physisch auf die Partition geschrieben werden müßen. In manchen Dateisystemen genügt es, wenn die Metadaten Informationen darüber enthalten, wie viele Cluster mit Nullen gefüllt sind und wo genau diese beim Lesen in die Datei eingefügt werden sollen. Wenn die SSD-Firmware das Einbinden ähnlicher Informationen in die Flash-Übersetzungsschicht ermöglicht, sucht der Übersetzer nicht nach dem physischen Speicherort der gesuchten Sektoren, sondern informiert den Controller darüber, daß es sich um „leere“ Sektoren handelt.
Die Einführung der TRIM-Funktion in SSDs hat deren Leistung gesteigert. Da Sektoren im freien Bereich der SSD nicht mehr physisch gelesen werden müßen, sind schnellere Reaktionszeiten möglich. Zudem können mehr gelöschte Blöcke erhalten bleiben, was nicht nur die Schreibleistung verbessert, sondern auch die Belastung des Speichermediums durch Programmier- und Löschvorgänge reduziert und die Funktion von Wear-Leveling-Algorithmen erleichtert. Dies ist wichtig, da die Lebensdauer von Halbleiterspeichern maßgeblich von Schreib- und Löschvorgängen abhängt.
Da Datenspeicher die Daten nicht selbst interpretieren, sondern nur speichern, benötigt die TRIM-Funktion neben der Unterstützung durch die Speicher-Firmware auch Informationen über die Vorgänge auf Ebene der logischen Dateisystemstrukturen. Der SSD muß wißen, welche Sektoren belegt und welche frei sind. Diese Informationen werden dem Controller vom Betriebssystem bereitgestellt, das die Dateisysteme der Partitionen auf dem SSD verwaltet. Die meisten gängigen Betriebssysteme unterstützen die TRIM-Funktion, und diese ist standardmäßig aktiviert.
Allerdings wird TRIM nicht in allen Fällen vom Betriebssystem unterstützt. Die TRIM-Funktion ist für alle unterstützten Dateisysteme verfügbar. Es gibt jedoch Fälle, in denen das Betriebssystem mit bestimmten Datenträgern nicht kompatibel ist, obwohl sowohl das System als auch der Datenträger die TRIM-Funktion unterstützen. Ein Beispiel hierfür sind ältere MacOS-Versionen, die externe Software benötigten, um SSDs anderer Hersteller als Apple zu unterstützen.
Damit die TRIM-Funktion funktioniert, muß sie auch vom Kommunikationsprotokoll des Datenträgers unterstützt werden. Daher funktioniert TRIM nicht bei älterer Hardware, die nicht mit ATA Version 8 kompatibel ist. Auch RAID-Controller können Probleme mit der TRIM-Funktion verursachen. Die meisten USB- Adapter unterstützen diese Funktion ebenfalls nicht. Das Äquivalent zur TRIM-Funktion im SCSI-Standard ist UNMAP.
Datenstreuung in Flash-NAND-Chips
Daten in Halbleiterspeichern werden nicht sequenziell geschrieben, sondern über verschiedene physikalische Speichereinheiten verteilt. Dies wird von vielen Faktoren beeinflußt, die mit der Leistungsfähigkeit und Haltbarkeit der Speichermedien zusammenhängen. Flash-NAND-Speicher sind relativ langsam, daher wird die Leistungsfähigkeit von Speichermedien mit diesen Chips durch parallele Datenverarbeitung in vielen Speichern erreicht, ähnlich wie bei RAID-Systemen, die Daten parallel auf mehreren Festplatten verarbeiten.
Ein weiterer wichtiger Grund für die Datenverteilung ist die Joulesche Wärme, die beim Schreiben und Löschen von Daten freigesetzt wird. Programmier- und Löschvorgänge in Flash-NAND-Chips nutzen das quantenmechanische Phänomen des Fowler-Nordheim-Tunnelns, welches eine Erhöhung der Spannung im Chip erfordert und mit Energieverlusten verbunden ist. Würde das physische Schreiben in Flash-NAND-Chips sequenziell erfolgen, könnten häufige Speicherschäden aufgrund lokaler Überhitzung des Chips auftreten.
Daher werden diese Speicher oft logisch in zwei oder vier Teile unterteilt, zwischen denen die Daten verschachtelt geschrieben werden. Aus den genannten Gründen werden die in Halbleiterspeichern geschriebenen Daten so verteilt, daß benachbarte LBA-Sektoren meist auf unterschiedlichen Seiten liegen. Dies läßt sich leicht an Medien beobachten, in denen Lesefehler auftreten. Beim Scannen solcher Medien kann man häufig Sequenzen beschädigter Sektoren sehen, die sich mit intakten Sektoren abwechseln. Die beschädigten Sektoren werden von der beschädigten Seite gelesen, und die dazwischen liegenden, korrekt gelesenen Sektoren befinden sich auf der intakten Seite.
Speicherbereinigung
Bei Änderungen auf LBA-Adreßierungsebene wird der Inhalt der geänderten Sektoren auf andere physische Seiten in anderen physischen Blöcken geschrieben. Da Blöcke in der Regel Hunderte von Seiten enthalten, kann es leicht vorkommen, daß Blöcke sowohl aktuelle als auch veraltete Seiten enthalten. Solange ein Block aktuelle Seiten enthält, kann er nicht gelöscht und für neue Daten vorbereitet werden.
Dies ist für die Verwaltung der Speichermedienadreßierung sehr ungünstig, da zu viele Blöcke nur wenige aktuelle Seiten enthalten und daher nicht gelöscht werden können. Dies kann die Anzahl der verfügbaren, gelöschten Blöcke erheblich reduzieren und das Schreiben neuer Daten erschweren, obwohl logisch betrachtet noch genügend freier Speicherplatz vorhanden ist. Um dieses Problem zu lösen, wird die automatische Speicherbereinigung (Garbage Collection) eingesetzt.
Angelehnt an die Speicherbereinigung von RAM verschiebt die automatische Speicherbereinigung Seiten mit aktuellem Inhalt aus Blöcken mit wenigen aktuellen Seiten in andere Blöcke. Dadurch können Blöcke gelöscht werden, die keine aktuellen Daten mehr enthalten. Dieser Prozeß läuft üblicherweise im Hintergrund ab, wenn der Mediencontroller keine Befehle verarbeitet. Die TRIM-Funktion ermöglicht das Überspringen von Seiten, die zwar aktuelle Daten enthalten, aber während der Speicherbereinigung logisch gelöscht wurden. Dies beschleunigt nicht nur die Speicherzugriffe, sondern reduziert auch die Belastung des Speichermediums bei Schreib- und Löschvorgängen.
Warum ist TRIM in SMR-Festplatten enthalten?
Bei SMR-Festplatten ist die Verwendung der TRIM-Funktion eine Folge des Verlusts des wahlfreien Sektorzugriffs beim Schreiben. Dies zwang die Hersteller, Lösungen zur Verbesserung der Schreibgeschwindigkeit von SMR-Festplatten zu finden, was die Komplexität des Subsystems zur Übersetzung logischer in physische Adreßen erhöhte. Verschiedene Festplattenhersteller verwenden unterschiedliche Ansätze für das Problem des Schreibens von Daten auf SMR-Festplatten.
Eine dieser Lösungen ist die Verwendung eines konventionell aufgezeichneten Spurenpuffers – des Media-Cache. Ankommende Daten werden in den Puffer geschrieben und erst später, wenn die Festplatte nicht durch Benutzerbefehle ausgelastet ist, in die entsprechenden SMR-Zonen übertragen. Dadurch kann der aufwendige Prozeß des Überschreibens ganzer SMR-Zonen und der Organisation des Media-Cache-Puffers in den meisten Fällen im Hintergrund und für den Benutzer unbemerkt ablaufen. Das Schreiben sehr großer Datenmengen auf einmal ist jedoch problematisch, insbesondere wenn diese Daten viele kleine Dateien enthalten. In solchen Fällen kann der Media-Cache-Puffer voll werden und die Schreibgeschwindigkeit drastisch sinken.
Ein anderer Ansatz besteht darin, Daten direkt in SMR-Zonen zu schreiben. Diese Zonen unterscheiden sich oft von denen, in denen sich die LBA-Sektoren vor dem Schreiben befanden. Dies ähnelt der Rotation der LBA-Adreßierung auf physischen Zuordnungseinheiten in Halbleitermedien. Obwohl bei magnetischen Medien wie Festplatten kein Löschvorgang erforderlich ist, da vorhandene Daten direkt überschrieben werden können, möchte man den Inhalt der Sektoren, die sich beim Schreiben der SMR-Zone nicht ändern, nicht beschädigen.
Daher wirkt sich die TRIM-Funktion in beiden oben genannten Fällen positiv auf die Laufwerksleistung aus. Dies gilt sowohl beim Schreiben, da das Festplattelaufwerk weiß, welche Bereiche in den logischen Strukturen des Dateisystems nicht belegt sind und somit Zeit beim Schreiben an den Zielort sparen kann, als auch beim Lesen, da es nicht physisch nach Sektoren mit „leerem Speicherplatz“ suchen muß, sondern stattdeßen mit Nullen gefüllte Sektoren für die externe Schnittstelle bereitstellen kann. Da Schreibvorgänge Festplatten im Gegensatz zu SSDs nicht verschleißen, beeinträchtigt TRIM deren Lebensdauer nicht.
Praktische Konsequenzen der TRIM-Funktion
Datenrettung und Computerforensik
Bei Speichermedien mit TRIM-Funktion bedeutet die Löschung von Daten auf logischer Ebene, daß gelöschte Dateien auf LBA-Adreßierungsebene nicht wiederhergestellt werden können. Der Grund dafür ist, daß die Festplatte beim Lesen von Sektoren mit diesen Dateien nur mit Nullen gefüllte Sektoren zurückgibt. Auf physischer Ebene können diese Daten jedoch weiterhin vorhanden sein. Anders verhält es sich bei Festplatten und SSDs.
Da Halbleiterspeicher Daten physisch löschen müßen, beginnt die physische Zerstörung logisch gelöschter Inhalte praktisch unmittelbar nach der Löschung. Dieser Prozeß findet auf Firmware-Ebene statt. Ist das Speichermedium an die Stromversorgung angeschloßen, läuft er unabhängig von anderen Befehlen des Computers ab und kann nicht durch in der Computerforensik übliche Schreibblocker gestoppt werden. Der Löschvorgang kann durch Auslöten der Speicherchips und Auslesen mit einem Programmiergerät oder durch Starten der SSD im abgesicherten Modus (Safe Mode) gestoppt werden.
Beim Auslöten von Flash-NAND-Chips kann die Datenwiederherstellung auf verschiedene praktische Hindernisse stoßen, wobei die Verschlüßelung das größte Problem darstellt. Verschlüßelung wird heutzutage häufig bei SSDs eingesetzt, nicht nur weil sie als Element der Datensicherheit gut vermarktet wird, sondern auch weil Verschlüßelungsalgorithmen Daten gut randomisieren und so Lesefehler reduzieren. Wo keine Verschlüßelung verwendet wird, kommt oft dynamische Randomisierung zum Einsatz, die mathematisch schwer zu entschlüßeln ist.
Ein weiteres schwerwiegendes Hindernis beim Dekodieren binärer Abbilder von Speicherchips ist die interne Komprimierung. Diese dient dazu, das Volumen der physisch gespeicherten Daten und damit die Anzahl der Schreibvorgänge, die die Chips belasten, zu reduzieren. Aus diesem Grund ist das Auslöten des Speichermediums längst nicht immer eine Lösung, die eine effektive Datenwiederherstellung verspricht.
Eine Alternative ist der Start der SSD im abgesicherten Modus, in dem der Controller keinen direkten Zugriff auf den Speicher hat. Wenn im abgesicherten Modus auf die physische Adreßierung zugegriffen werden kann, während Hintergrundprozeße blockiert werden, ist es möglich, den Teil der Daten wiederherzustellen, der noch nicht physisch gelöscht wurde. Da jedoch der von TRIM angegebene Prozeß des physikalischen Löschens von Daten. Da das Löschen auf logischer Ebene innerhalb weniger Minuten erfolgen kann, sind die Chancen auf eine Datenrettung auf diesem Weg äußerst gering.
Etwas besser sieht es bei Festplatten aus, die keine Datenlöschung unterstützen. Bei diesen Festplatten bleiben logisch gelöschte Daten in der physischen Adreßierung erhalten, bis sie mit anderen Daten überschrieben werden. In diesem Fall sind die Reaktionszeit und die Stromversorgung bei TRIM-Unterstützung für die Datenrettung weniger kritisch. Dennoch ist zu beachten, daß auch SMR-Festplatten Hintergrundprozeße durchlaufen, z. B. die Organisation des Mediencaches, und daß nicht einzelne Sektoren, sondern ganze SMR-Zonen überschrieben werden.
Datenvernichtung
Bei der Datenvernichtung erschwert die TRIM-Funktion die Überprüfung der korrekten Ausführung. Logisch betrachtet kann eine Antwort den Eindruck erwecken, die Daten seien effektiv vernichtet, während sie auf der Ebene der physischen Adreßierung weiterhin existieren und wiederhergestellt werden können. Erst später führen die im Hintergrund ablaufenden Blocklöschvorgänge zur tatsächlichen Datenvernichtung.
Sowohl bei Halbleiterspeichern als auch bei SMR-Festplatten besteht zudem das Risiko, daß Daten außerhalb der LBA-Adreßierung nicht gelöscht werden. Dieses Risiko ist bei Festplatten höher, da bei Halbleiterspeichern Blöcke außerhalb der LBA-Adreßierung physisch gelöscht werden müßen. Daher wird häufig die Verwendung des Secure-Erase-Verfahrens zur Datenvernichtung empfohlen, da dieses näher an der physischen Adreßierung des Speichermediums arbeitet und so eine effektive Datenvernichtung gewährleisten soll.
Dennoch bestehen mitunter Zweifel an der korrekten Implementierung des Secure-Erase-Verfahrens in der Firmware des Speichermediums. Ein intereßantes Beispiel für die fehlerhafte Implementierung des Secure-Erase-Verfahrens in eMMC-Speichern demonstrierte Aya Fukami auf dem Flash Data Recovery & Digital Forensic Summit 2024. In ihrem Vortrag „Exploiting the eMMC security features using the VNR“ zeigte sie eMMC-Chips, deren Inhalt trotz durchgeführtem Secure Erase und trotz mit Nullen gefüllter Sektoren auf LBA-Adreßierungsebene nahezu vollständig wiederhergestellt werden konnte. Die Analyse der physischen Adreßierungsebene ergab jedoch, daß der Inhalt der physischen Adreßierungseinheiten nur geringfügig beschädigt und ein signifikanter Teil wiederherstellbar war.
Daher ist es beim Löschen von Daten wichtig, auf die Dauer des Secure-Erase-Vorgangs zu achten. Wird dieser verdächtig schnell ausgeführt, also in kürzerer Zeit als zum vollständigen Beschreiben des Speichermediums benötigt wird, wurden die Daten mit an Sicherheit grenzender Wahrscheinlichkeit nicht physisch gelöscht, sondern es wurden lediglich die erforderlichen Operationen am Subsystem zur Übersetzung logischer in physische Adreßen durchgeführt. Im Falle verschlüßelter Medien zusätzlich der Verschlüßelungsschlüßel zerstört. Die Daten könnten unwiderruflich gelöscht werden (sogenanntes Kryptolöschen), was die Sicherheit des Vorgangs deutlich erhöht. Dennoch ist es in solchen Situationen ratsam, beim sicheren Löschen vorsichtig vorzugehen und die Daten durch Überschreiben des gesamten Speichermediums zu vernichten.
So schalten Sie TRIM aus?
Unter Windows
Führen Sie die Eingabeaufforderung (cmd) als Administrator aus und
geben Sie folgenden Befehl ein:
fsutil behavior set disabledeletenotify 1
Unter Linux
Bei Linux ist die Sache nicht ganz so einfach. Aufgrund der Unterschiede zwischen den einzelnen Distributionen und den in der Linux-Umgebung verwendeten Dateisystemen kann es notwendig sein, die Dokumentation für Details zu konsultieren. Typischerweise wird die TRIM-Funktion in Linux über den Parameter "discard" gesteuert, der die Festplatte unmittelbar nach dem Löschvorgang über das logische Löschen einer Datei informiert, oder über den Befehl "fstrim", der dem Controller Informationen über logisch freigegebene Bereiche übermittelt, entweder nach manueller Freigabe oder automatisch (z. B. durch den Systemverwaltungsdienst "systemd") in festgelegten Zeitabständen. Die Parameter für die Partitionsmontage werden in der Konfigurationsdatei "etc/fstab" gespeichert und sollten dort überprüft werden. Beachten Sie, daß einige Dateisysteme TRIM standardmäßig aktiviert haben (der Parameter "nodiscard" deaktiviert TRIM) oder daß dies durch Setzen eines Flags in den Superblock-Parametern möglich ist.
Unter MacOS
Geben Sie im Terminal Folgendes ein:
sudo trimforce disable
Geben Sie das Administratorpaßwort ein und bestätigen Sie die Änderungen. Nach der Bestätigung wird der Computer automatisch neu gestartet.