Het aanpakken van niveaus in gegevensdragers.
Vanuit het perspectief van de gebruiker worden gegevens opgeslagen in bestanden die gerangschikt zijn in een logische directorystructuur. Directorystructuren worden geplaatst op partities – logisch gescheiden delen van schijven of hun sets – RAID - reeks. Het opslaan van bestanden in een geordende structuur wordt beheerd door bestandssystemen, die aanzienlijk in detail verschillen. Afgezien van deze verschillen kunnen we bepaalde overeenkomsten opmerken in alle bestandssystemen. Bestandssystemen plaatsen bestanden in bepaalde toewijzingseenheden, die, afhankelijk van de nomenclatuur van het specifieke bestandssysteem, clusters (in bestandssystemen gerelateerd aan Microsoft) of blokken (meestal in Unix-omgevingen) worden genoemd. Omdat het concept van een blok zeer veelzinnig is, zullen we, om misverstanden te voorkomen, de term "cluster" gebruiken om deze toewijzingseenheden aan te duiden.
Clusters bevatten een kleiner of groter (maar altijd gelijk aan de macht twee) aantal LBA-sectoren (Logical Block Addressing). LBA-adressering werd in de eerste helft van de jaren 1980 uitgevonden om het beheer van harde schijven te vereenvoudigen, de CHS-adressering (cylindr, head, sector - cilinder, kop, sector) te vervangen die rechtstreeks verwees naar fysieke sectoren en compatibiliteit tussen apparaten van verschillende fabrikanten te garanderen. Het werd overgenomen door de ATA- en SCSI- standaarden en wordt ook gebruikt door andere communicatieprotocollen die worden gebruikt om informatie uit te wisselen met verschillende gegevensdragers.
Als het nodig is om gegevens naar de drager te lezen of te schrijven, wordt de adressering van het geclusterde bestandssysteem omgezet in LBA-adressering en geven de juiste opdrachten de juiste sectoren in deze adressering aan. Harde schijven worden echter nog steeds opgebouwd uit een kleiner of groter aantal platters, waarop zich cirkelvormige, concentrische sporen bevinden die zijn verdeeld in fysieke sectoren. Daarom is het noodzakelijk om LBA-adresnummers correct toe te wijzen aan specifieke fysieke sectoren. Deze taak wordt afgehandeld door een deel van de firmware - het logische naar fysieke adresvertalingssubsysteem, kortweg een vertaler genoemd.
De situatie is vergelijkbaar in het geval van halfgeleidermedia die gegevens opslaan in Flash-NAND-chips. Ze worden ook geadresseerd met behulp van LBA- adressering, hoewel dit type media geen platters, sporen of sectoren heeft. Flash-NAND-chips adresseren gegevens in pagina's (dit is de minimale eenheid van programmeren en lezen) en blokken (minimale eenheid van wissen). Sectoren worden door de controller alleen geëmuleerd voor communicatiedoeleinden met de buitenwereld. En ook in het geval van halfgeleidermedia bevat de firmware een onderdeel dat verantwoordelijk is voor het vertalen van fysieke adressen naar logische adressen, vaak aangeduid als de Flash-vertaallaag (Flash Translation Layer - FTL).
LBA-adressering wordt ook gebruikt door RAID-reeks. Wanneer we een RAID-reeks adresseren, verwijzen we naar de LBA-adressering, die vervolgens door de reekscontroller wordt omgezet in de LBA-adressering van de afzonderlijke schijven die er deel van uitmaken. Als we te maken hebben met een complexe omgeving waarin reeks op reeks voorkomen, wordt het LBA-adres van de reeks die we adresseren eerst omgezet naar het adres van de reeks waaruit deze bestaat, en pas daarna naar het adres van de fysieke schijven.
LBA-adressering wordt ook gebruikt door virtuele machinebestanden. Elk van dergelijke bestanden heeft een eigen bestandssysteem geïnstalleerd, onafhankelijk van het bestandssysteem dat het virtuele machinebestand beschrijft. In zo'n bestand bevindt zich een virtueel clusteradres dat is omgezet naar virtuele LBA-adressen, wat ons vertelt welk fragment van de virtuele machine we willen lezen of schrijven. Alleen met deze informatie kunnen deze adressen worden omgezet naar echte clusters van het bestandssysteem die het bestand van de virtuele machine beschrijven en echte LBA-adressen van het fysieke medium.
Vrije en bezette ruimte.
Wanneer we een nieuwe schijf kopen, denken we dat deze leeg is. Pas wanneer we hem initialiseren, partities aanmaken, formatteren en er wat gegevens op plaatsen, beginnen we te denken dat hij langzaam vol raakt. We kunnen ook de hulpmiddels van het besturingssysteem gebruiken om te controleren hoeveel vrije en hoeveel bezette ruimte we hebben. Maar we kunnen alleen praten over bezette en vrije ruimte in relatie tot de logische structuren van het bestandssysteem.
In fysieke zin slaat elke gegevensdrager altijd informatie op, zelfs als deze op logisch niveau niet interpreteerbaar is. Verwijzend naar een willekeurige LBA-sector, zullen we altijd een antwoord krijgen, ongeacht of we een vrije sector willen lezen in de zin van logische structuren of een bezette sector. In het geval van nieuwe schijven zal het een reeks bytes zijn met de waarde 0x00, maar in het geval van gebruikte schijven is dit niet zo vanzelfsprekend.
Soms lijkt het ons misschien dat vrije ruimte betekent dat sectoren gevuld zijn met nullen, en dat sectoren met andere inhoud bezet zijn. In werkelijkheid is dit anders. De gebruikte ruimte bestaat uit de schijfruimte die is toegewezen in de logische structuren van het bestandssysteem, zelfs als deze sectoren bevat die gevuld zijn met nullen.
Als deze nullen worden beschreven als onderdeel van een bestand of een logische structuur en op de een of andere manier interpreteerbaar zijn, kunnen we ze niet als vrije ruimte beschouwen.
Aan de andere kant zullen zelfs gebieden met samenhangende en complete bestanden, als ze niet correct zijn geadresseerd in de logische structuren van het bestandssysteem, vanuit hun oogpunt vrije ruimte zijn waarin andere gegevens kunnen worden geplaatst. Dergelijke niet-geadresseerde bestanden zijn niet zichtbaar in de directorystructuur, maar kunnen, tenzij ze worden overschreven, worden hersteld.
Subsysteem voor vertaling van logisch naar fysiek adres.
Klassieke vertaler op harde schijven.
Decennialang was het vertalen van LBA naar fysieke adressering op harde schijven relatief eenvoudig. Fysieke sectoren kregen opeenvolgende LBA-nummers, beginnend bij 0 en eindigend op het laatste nummer, afhankelijk van de nominale capaciteit van de schijf. LBA-adressen werden toegewezen vanaf de sporen aan de buitenrand van de schijfplaat en hun nummers namen toe naarmate de motoras dichterbij kwam. Dit hangt samen met het feit dat sporen met een grotere radius langer zijn, waardoor er meer sectoren op geplaatst kunnen worden dan op kortere sporen met een kleinere radius.
Dankzij deze oplossing kunnen de initiële LBA-sectoren sneller worden gelezen, omdat er meer sectoren kunnen worden gelezen met één rotatie van de schijf. Dit is gemakkelijk te zien tijdens het testen van de schijf, waar de leessnelheidsgrafiek daalt naarmate de LBA-adresnummers hoger worden. In het geval dat de schijf meerdere plaatoppervlakken gebruikt, wordt de continuïteit van de nummering op een bepaald oppervlak van tijd tot tijd onderbroken om volgende adressen op andere oppervlakken te plaatsen. De toewijzing van specifieke LBA -adressen aan specifieke plaatoppervlakken wordt een kop map genoemd, omdat een dergelijke map ons vertelt welke kop specifieke LBA-adresbereiken leest.
Een van de taken van de vertaler is het omzeilen van slechte sectoren. Vanuit het oogpunt van het vertaalsubsysteem kunnen slechte sectoren worden onderverdeeld in fabrieks- en sectoren die tijdens de werking zijn gecreëerd. De fabrieksfouten worden vastgelegd in de primaire defectenlijst (P-lijst) en omzeild bij het toewijzen van LBA-adresnummers. De andere worden onthuld tijdens de werking van de schijf en vastgelegd in de groeidefectenlijst (G-lijst), en omdat ze al toegewezen LBA-adresnummers hebben, worden deze nummers toegewezen aan reservesectoren in het remapping- (herallocatie-) proces.
In verschillende firmwarearchitecturen en schijfmodellen zijn de details van het vertaalsubsysteem verschillend, maar dergelijke gedetailleerde kennis is niet nodig om de werking van de TRIM-functie te begrijpen. De belangrijkste verandering die plaatsvond tussen de introductie van LBA-adressering en de uitvinding van dakspanen magnetische opname - Shingled Magnetic Recording (SMR) was in feite de vervanging van sectoren van 512 bytes door sectoren van 4 kilobyte (Advanced Format). In het geval van Advanced Format komt één fysieke sector overeen met 8 LBA-sectoren.
SMR-aandrijvingen en tweede niveau vertaler
In hun pogingen om de opnamedichtheid te verhogen, merkten fabrikanten van harde schijven dat de leeskop een signaal van een veel smaller spoor kan lezen dan de schrijfkop schrijft. Daarom ontwikkelden ze de dakspanen magnetische opname -methode, waarbij volgende sporen de vorige gedeeltelijk overschrijven. Dit vereiste een aanpassing van het ontwerp van de opnamekop, zodat deze een asymmetrisch magnetisch veld induceert. Zo wordt het sterkste signaal zo dicht mogelijk bij het vorige spoor opgenomen, maar wordt het niet gehinderd.
Een negatief gevolg van de introductie van dakspanen magnetische opname was het verlies van willekeurige toegang tot de sector tijdens het schrijven. Wanneer we nieuwe inhoud naar een sector schrijven, beschadigt het door de kop geïnduceerde magnetische veld de inhoud van sectoren op verdere sporen. Om te voorkomen dat telkens het hele oppervlak van de schijf opnieuw moet worden beschreven, groeperen fabrikanten sporen in SMR-zones met een capaciteit van enkele tientallen MB en scheiden deze zones met veilige ruimtes.
Desondanks vereist het aanbrengen van wijzigingen in één sector nog steeds het herschrijven van de volledige groep sporen. Omdat dit een zeer negatieve impact heeft op de schrijfprestaties, hebben fabrikanten besloten om nieuwe sectorinhoud niet te schrijven waar deze zich voorheen fysiek bevond, maar waar het in een bepaalde situatie het meest handig is. De details voor het oplossen van dit probleem variëren van fabrikant tot fabrikant, maar hun gemeenschappelijke kenmerk is het verbreken van de relatief permanente koppeling van het LBA-adres aan een specifiek fysiek adres.
Op SMR-schijven kunnen LBA-adresnummers gemakkelijk van fysieke locatie veranderen, en het tweede niveau van de vertaler is verantwoordelijk voor het volgen van hun huidige locatie. Dergelijke dynamische wijzigingen in de locatie van logische adressen in fysieke adressen vereisen de introductie van speciale tabellen in de schijffirmware die het mogelijk maken deze wijzigingen vast te leggen. Vrijwel elke schrijfbewerking naar de schijf is gekoppeld aan de noodzaak om de nieuwe fysieke locatie van sommige LBA-adressen vast te leggen. Dit resulteert in een verhoogd risico op fouten in de vertalermodules van het tweede niveau, wat een veelvoorkomende oorzaak is van SMR-schijfstoringen en verlies van toegang tot gegevens.
Flash-vertaallaag in halfgeleidermedia.
Een kenmerkend kenmerk van halfgeleidermedia is het onvermogen om bestaande inhoud direct te overschrijven. Dit is het gevolg van de fysica van dataopslag, waardoor elektronen alleen in lege zwevende poorten van transistors kunnen worden geplaatst, die moeten worden gewist vóór herprogrammering. Als we de inhoud van de LBA-sector wijzigen, wordt deze naar een andere fysieke locatie geschreven en moet de verouderde inhoud worden gewist om een fysieke toewijzingseenheid vrij te maken voor latere schrijfbewerkingen.
Deze oplossing vereist dat er altijd fysieke toewijzingseenheden in de media klaar zijn om nieuwe gegevens te schrijven. Daarom kan LBA-adressering niet de volledige fysieke capaciteit van de media bestrijken. De verhouding tussen het aantal beschikbare LBA-sectoren en de fysieke grootte van de gegevensdrager is een compromis tussen de wens om apparaten met de hoogst mogelijke capaciteit te verkopen en de noodzaak om een reserve aan te houden die een efficiënte en storingsvrije werking mogelijk maakt.
De aanwezigheid van schrijf- en wisbewerkingen in halfgeleidermedia maakt het bewerken van de inhoud van LBA-sectoren complexer dan in magnetische media die direct overschrijven mogelijk maken. Het schrijven van nieuwe inhoud van LBA-sectoren naar een andere fysieke locatie dwingt tot het vastleggen van hun nieuwe locatie in vertaaltabellen. Blokken met ongeldige gegevens worden op hun beurt verwijderd uit de LBA-adressering en zijn bedoeld om te worden gewist. Deze methode van gegevensbeheer betekent dat LBA-adressen niet gebonden zijn aan specifieke fysieke toewijzingseenheden, maar eromheen roteren op een manier die wordt bepaald door de uitgevoerde bewerkingen.
Een extra complicatie in het geval van halfgeleidermedia is dat ze twee verschillende toewijzingseenheden gebruiken: pagina's, de minimale eenheid voor lezen en programmeren, en blokken - de minimale eenheid voor wissen. De grootte van pagina's maakt het doorgaans mogelijk om één tot 32 LBA - sectoren van 512 bytes op te slaan (hun aantal op een pagina is altijd een macht van twee) en de redundante informatie die nodig is voor de correcte werking van het medium. Blokken bevatten op hun beurt enkele tot enkele honderden pagina's, waarbij het aantal pagina's in een blok tot een bepaald punt een macht van twee was, maar deze regel wordt al een aantal jaren niet meer gevolgd.
Dit betekent in de praktijk dat wijzigingen die optreden in de inhoud van het medium op het niveau van LBA-sectoren ervoor zorgen dat fysieke toewijzingseenheden tegelijkertijd zowel LBA bevatten sectoren met actuele en verouderde inhoud. Dit wordt problematisch wanneer het aantal vrije blokken dat klaar is om nieuwe data te accepteren, begint af te nemen. Een ander probleem waar halfgeleidermedia mee kampen, is hun slijtage door wis- en schrijfbewerkingen, wat vervolgens leidt tot apparaatstoringen. Deze problemen lagen aan de basis van de implementatie van de TRIM-functie.
Hoe werkt TRIM in SSD's?
De basis van de TRIM-functie is het feit dat, tenminste theoretisch, vanuit het oogpunt van de gebruiker, er geen noodzaak is om fysiek gegevens op te slaan die niet zijn toegewezen in de logische structuren van het bestandssysteem. Het is voldoende voor het vertaalsubsysteem om te weten welke sectoren zich bevinden in gebieden die worden ingenomen door bestanden of logische structuren die ze beschrijven, en welke in logische zin vrije ruimte zijn. En in het laatste geval kan de controller, in plaats van de gevraagde sectoren fysiek te lezen, onmiddellijk sectoren gevuld met nullen als antwoord verzenden.
Bij de werking van de TRIM-functie kan men een zekere analogie zien met spaarzame bestanden (sparse files), waarin grotere fragmenten van het bestand gevuld met nullen niet fysiek naar de partitie hoeven te worden geschreven. In sommige bestandssystemen is het voldoende dat de metagegevens informatie bevatten over hoeveel clusters gevuld met nullen en precies waar in het bestand ze moeten worden ingevoegd bij het lezen ervan. En als de firmware van de SSD-schijf het opnemen van soortgelijke informatie in de Flash-vertaallaag toestaat, zal de vertaler niet zoeken naar de fysieke locatie van de gezochte sectoren, maar de controller informeren dat dit "lege" sectoren zijn.
De introductie van de TRIM-functie in SSD's heeft hun prestaties verbeterd. Doordat sectoren in de "vrije ruimte" van de schijf niet meer fysiek hoeven te worden gelezen, kunnen we sneller een reactie ontvangen. We kunnen ook meer gewiste blokken behouden, wat niet alleen een positief effect heeft op de schrijfprestaties, maar ook de belasting van het medium vermindert bij programmeer- en wisbewerkingen en de werking van slijtage nivellering (wear-leveling)-algoritmen vergemakkelijkt. Dit is belangrijk vanwege de levensduur van halfgeleidermedia, die grotendeels afhangt van schrijf- en wisbewerkingen.
Omdat datamedia deze gegevens niet zelf interpreteren, maar alleen opslaan, is voor de werking van de TRIM-functie, naast de ondersteuning door de schijffirmware, ook een bron van informatie nodig over wat er gebeurt op het niveau van logische bestandssysteemstructuren. De schijf moet ergens vandaan weten welke sectoren "bezet" zijn en welke niet. Informatie over dit onderwerp wordt aan de controller verstrekt door het besturingssysteem dat de bestandssystemen op de partities op de schijf beheert. Momenteel ondersteunen de meeste besturingssystemen de TRIM-functie en is deze standaard ingeschakeld.
Het besturingssysteem ondersteunt de TRIM echter niet in alle gevallen functie voor alle ondersteunde bestandssystemen. Er zijn ook situaties waarin het besturingssysteem niet met bepaalde schijven wil werken, hoewel zowel het systeem als de media de TRIM-functie ondersteunen. Een voorbeeld hiervan zijn oudere versies van MacOS, die externe software nodig hadden om SSD's van andere leveranciers dan Apple te ondersteunen.
Om de TRIM-functie te laten werken, moet deze ook worden ondersteund door het communicatieprotocol dat wordt gebruikt om met de media te communiceren. Daarom werkt TRIM niet in het geval van oudere hardware die niet compatibel is met versie 8 van de ATA- standaard. Er kunnen ook problemen zijn met de ondersteuning van de TRIM-functie door RAID-reekscontrollers. Deze functie wordt ook niet ondersteund door de meeste USB-adapters. Het equivalent van de TRIM-functie in de SCSI-standaard is UNMAP.
Gegevensverstrooiing in Flash-NAND-chips.
Gegevens in halfgeleidermedia worden niet sequentieel geschreven, maar verspreid over verschillende fysieke allocatie-eenheden. Dit wordt beïnvloed door vele factoren die verband houden met de prestaties en duurzaamheid van de media. Flash-NAND-geheugens zijn vrij traag, dus de prestaties van media die deze chips gebruiken, worden opgebouwd door parallelle gegevensverwerking in meerdere geheugens, vergelijkbaar met RAID-reeks die gegevens parallel verwerken op meerdere schijven.
De tweede belangrijke oorzaak van gegevensverstrooiing is de Joule-warmte die vrijkomt tijdens het schrijven en wissen van gegevens. Programmeer- en wisbewerkingen in Flash-NAND-chips maken gebruik van het kwantummechanische fenomeen Fowler-Nordheim-tunneling, waarvoor de spanning in de chip moet worden verhoogd en dat gepaard gaat met energieverlies. Als fysiek schrijven in Flash-NAND-chips sequentieel zou worden uitgevoerd, zou er frequent geheugenschade kunnen optreden door lokale oververhitting van de chip.
Daarom worden deze geheugens vaak logisch verdeeld in twee of vier delen, waartussen gegevens op een vittevellend manier worden geschreven. Om bovengenoemde redenen worden gegevens die in halfgeleidermedia worden geschreven, zodanig verspreid dat aangrenzende LBA-sectoren meestal fysiek naar verschillende pagina's gaan. Dit is gemakkelijk te zien op media waarin leesfouten voorkomen. Tijdens het scannen van een dergelijk medium kan men vaak reeksen beschadigde sectoren waarnemen die afgewisseld worden met gezonde sectoren. Dergelijke beschadigde sectoren worden gelezen vanaf de beschadigde pagina, en de correct gelezen sectoren die ertussen liggen, worden op de gezonde pagina geplaatst.
Vuilniszameling.
Bij het maken van wijzigingen op het LBA-adresniveau wordt de inhoud van de gewijzigde sectoren geschreven naar andere fysieke pagina's, die zich in andere fysieke blokken bevinden. Omdat blokken veel, momenteel meestal honderden pagina's bevatten, kunnen er gemakkelijk situaties optreden waarin de blokken pagina's bevatten met huidige inhoud en pagina's die verouderd zijn. Zolang het blok huidige pagina's bevat, kan het niet worden gewist en voorbereid om nieuwe gegevens te accepteren.
Deze situatie is erg lastig vanuit het oogpunt van het beheer van de adressering van het medium, omdat het kan blijken dat te veel blokken een klein aantal pagina's met huidige inhoud bevatten en daarom niet kunnen worden gewist. Dit kan leiden tot een aanzienlijke afname van het aantal beschikbare gewiste blokken en het moeilijk maken om nieuwe gegevens te schrijven, hoewel het medium vanuit logisch oogpunt nog steeds voldoende vrije ruimte zal bevatten.
Om dit probleem op te lossen, wordt de vuilnis zameling (Garbage Collection) procedure gebruikt. Vuilniszameling, geïnspireerd op RAM-vuilniszameling-procedures, omvat het verplaatsen van pagina's met huidige inhoud van blokken die relatief weinig huidige pagina's bevatten naar andere blokken. Dit maakt het mogelijk om blokken te wissen die geen huidige gegevens meer bevatten.
Dit proces vindt meestal op de achtergrond plaats, wanneer de mediacontroller niet bezig is met het verwerken van ontvangen opdrachten. De TRIM-functie maakt het mogelijk om pagina's over te slaan die actuele gegevens bevatten die tijdens de vuilniszameling op logisch niveau zijn verwijderd. Dit versnelt niet alleen de werking van de media, maar vermindert ook de belasting bij schrijf- en wisbewerkingen.
Waarom is TRIM opgenomen in SMR-schijven?
In het geval van SMR-schijven is het gebruik van de TRIM-functie een gevolg van het verlies van willekeurige toegang tot de sector tijdens het schrijven. Dit dwong fabrikanten om oplossingen te zoeken om de prestaties van SMR-schijven tijdens het schrijven te verbeteren, wat resulteerde in de complexiteit van het subsysteem voor logisch-naar-fysiek adresvertaling. Verschillende schijffabrikanten hanteren verschillende benaderingen voor het probleem van het schrijven van gegevens naar SMR-schijven.
Een van de gebruikte oplossingen is het gebruik van een conventioneel opgenomen spoorbuffer - Media Cache. Gegevens die op de schijf aankomen, worden in de buffer geschreven en pas later, wanneer de schijf niet belast is met het uitvoeren van gebruikersopdrachten, worden ze overgebracht naar de juiste SMR-zones. Hierdoor kan in de meeste gevallen het lange proces van het herschrijven van volledige SMR-zones en het organiseren van de Media Cache-buffer op de achtergrond plaatsvinden, onopgemerkt voor de gebruiker. Het in één keer schrijven van zeer grote hoeveelheden gegevens is echter problematisch, vooral als deze gegevens een groot aantal kleine bestanden bevatten. In dergelijke situaties kan de Media Cache-buffer vol raken en kan de schrijfsnelheid drastisch afnemen.
Een andere aanpak omvat het rechtstreeks schrijven van gegevens naar SMR-zones, waar dit vaak andere zones zijn dan die waarin de gegeven LBA-sectoren zich vóór het schrijven bevonden. Er is hier een zekere gelijkenis met de rotatie van LBA-adressering op fysieke toewijzingseenheden, die plaatsvindt in halfgeleidermedia. Hoewel we in het geval van magnetische media zoals harde schijven de wisbewerking niet nodig hebben, omdat we bestaande gegevens direct kunnen overschrijven, willen we de inhoud van de sectoren die niet veranderen bij het schrijven naar de SMR-zone niet beschadigen.
Daarom heeft het gebruik van de TRIM-functie in het geval van beide hierboven aangegeven oplossingen een gunstig effect op de prestaties van de schijven. Zowel tijdens het schrijven, wanneer de schijf weet welke gebieden niet zijn toegewezen in de logische structuren van de bestandssystemen en daardoor de tijd kan besparen die nodig is om ze naar de doellocatie te schrijven, als tijdens het lezen, waarbij hij niet fysiek hoeft te zoeken naar sectoren die "lege ruimte" bevatten, maar in plaats daarvan sectoren gevuld met nullen kan blootstellen aan de externe interface. Omdat schrijfbewerkingen, in tegenstelling tot halfgeleidermedia, geen slijtage van harde schijven veroorzaken, heeft TRIM geen invloed op de levensduur ervan, zoals dat bij SSD's wel het geval is.
Praktische gevolgen van de TRIM-functie.
Gegevensherstel en computerforensisch onderzoek.
In het geval van media die de TRIM-functie gebruiken, betekent het feit dat gegevens op logisch niveau worden verwijderd, dat we bij het werken op het LBA-adresniveau geen verwijderde bestanden kunnen herstellen. Dit komt doordat de schijf, in reactie op een verzoek om sectoren te lezen die deze bestanden bevatten, sectoren retourneert die gevuld zijn met nullen. Op fysiek niveau kunnen deze gegevens echter nog steeds bestaan. De situatie is echter anders in het geval van harde schijven en SSD's.
Omdat halfgeleidermedia gegevens fysiek moeten wissen, begint het proces van het fysiek vernietigen van op logisch niveau verwijderde inhoud in principe onmiddellijk na het verwijderen ervan. Belangrijk is dat dit een proces is dat plaatsvindt op firmwareniveau, dus als het medium is aangesloten op de voeding, vindt het plaats onafhankelijk van andere opdrachten die van de computer worden ontvangen en kan het niet worden gestopt met schrijfblokkers die veel worden gebruikt in computerforensisch onderzoek. Het proces van het wissen van blokken kan worden gestopt door de geheugenchips los te solderen en ze op de programmeur te lezen of door de SSD in de veilige modus te zetten.
Bij het desolderen van Flash-NAND-chips kan gegevensherstel op een aantal praktische obstakels stuiten, waarvan encryptie de ernstigste is. Encryptie wordt momenteel veel gebruikt in SSD's, niet alleen omdat het goed op de markt wordt gebracht als een element van gegevensbeveiliging, maar ook omdat encryptiealgoritmen gegevens goed randomiseren, wat helpt om het optreden van bit-leesfouten te verminderen. Waar encryptie niet wordt gebruikt, wordt vaak dynamische randomisatie gebruikt, wat wiskundig moeilijk te decoderen is. Een ander ernstig obstakel dat kan worden ondervonden bij het decoderen van binaire afbeeldingen van geheugenchips is interne compressie, die tot doel heeft de hoeveelheid fysiek opgenomen gegevens te verminderen, en daarmee het aantal schrijfbewerkingen dat de chips belast. Om deze reden is het desolderen van het medium in lang niet alle gevallen een oplossing die effectief gegevensherstel belooft.
Een alternatief is om de SSD in de veilige modus (safe mode) te zetten, waarin de controller geen directe toegang tot het geheugen heeft. Als u in de veilige modus toegang hebt tot fysieke adressering terwijl achtergrondprocessen worden geblokkeerd, is het mogelijk om het deel van de gegevens te herstellen dat nog niet fysiek is gewist. Echter, aangezien het proces van het fysiek wissen van gegevens aangegeven door TRIM als gegevensverwijdering op logisch niveau binnen enkele minuten tot een tiental minuten kan plaatsvinden, is de kans op herstel op deze manier vrij illusoir.
De situatie is iets beter bij harde schijven die geen gegevenswisbewerkingen ondersteunen. Op harde schijven blijven gegevens die logisch zijn verwijderd met fysieke adressering intact totdat ze worden overschreven met andere inhoud. In dat geval zijn de responstijd en het feit dat de voeding moet worden aangesloten in het geval van TRIM-ondersteuning niet zo kritisch voor gegevensherstel. Desalniettemin moet worden bedacht dat SMR-schijven niet vrij zijn van achtergrondprocessen, zoals de organisatie van de Media Cache, en dat niet individuele sectoren worden overschreven, maar hele SMR-zones.
Gegevensvernietiging.
In het geval van gegevensvernietiging maakt de TRIM-functie het moeilijk om de juistheid van de taak te verifiëren. Het betekent dat we op logisch niveau een respons kunnen krijgen die suggereert dat de gegevens effectief zijn vernietigd, terwijl ze op het niveau van fysieke adressering nog steeds bestaan en kunnen worden hersteld. Pas later leiden de blokwisbewerkingen die op de achtergrond plaatsvinden tot de daadwerkelijke vernietiging van de gegevens.
Bovendien bestaat er, zowel in het geval van halfgeleidermedia als SMR-schijven, een risico dat niet-verwijderde gegevens achterblijven in gebieden buiten de LBA-adressering. Dit risico is groter in het geval van harde schijven, omdat in het geval van halfgeleidermedia blokken die buiten de LBA-adressering vallen fysiek moeten worden gewist. Daarom wordt vrij algemeen aanbevolen om de Secure Erase-procedure te gebruiken voor gegevensvernietiging, die de mogelijkheid heeft om dichter bij de fysieke adressering van het medium te werken, wat een effectieve gegevensvernietiging zou moeten garanderen.
Niettemin worden soms twijfels geuit over de juistheid van de implementatie van de Secure Erase-procedure in de firmware van de media. Een interessant voorbeeld van een onjuiste implementatie van de Secure Erase-procedure in eMMC-geheugens werd gedemonstreerd door Aya Fukami tijdens de Flash Data Recovery & Digital Forensic Summit 2024. In haar presentatie "Exploiting the eMMC security features using the VNR" toonde ze eMMC-chips waarvan bijna 100% van de inhoud kon worden hersteld, ondanks het feit dat de Secure Erase-bewerking was uitgevoerd en ondanks het feit dat sectoren met inhoud gevuld met nullen werden geretourneerd op het LBA-adresniveau. Door echter naar het fysieke adresniveau te gaan, konden we concluderen dat de inhoud van de fysieke adresseringseenheden slechts licht beschadigd was en een aanzienlijk deel kon worden hersteld.
Daarom is het bij het vernietigen van gegevens de moeite waard om te letten op de tijd van de Secure Erase-bewerking. Als deze verdacht snel wordt uitgevoerd, in een tijd korter dan de tijd die nodig is om de media volledig te beschrijven, met een waarschijnlijkheid die grenst aan zekerheid, zijn de gegevens niet fysiek vernietigd en werden alleen de juiste bewerkingen uitgevoerd op het subsysteem voor de vertaling van logisch naar fysiek adres. Bij gecodeerde media wordt bovendien de encryptiesleutel kunnen worden vernietigd (het zogenaamde cryptoerase), wat de veiligheid van de bewerking aanzienlijk verhoogt. Desondanks is het in dergelijke situaties beter om de implementatie van Secure Erase met beperkt vertrouwen te benaderen en de gegevens te vernietigen door het hele medium te overschrijven.
Hoe TRIM uit te schakelen?
In Windows
Voer de opdrachtprompt (cmd) uit als beheerder en
typ de opdracht:
fsutil behavior set disabledeletenotify 1
In Linux
In het geval van Linux is het niet zo eenvoudig. Vanwege verschillen tussen de afzonderlijke distributies en bestandssystemen die in de Linux-omgeving worden gebruikt, kan het nodig zijn om de documentatie voor details te raadplegen. De TRIM -functie in Linux kan doorgaans worden afgehandeld via de parameter "dispatch", die de schijf direct na de bewerking informeert over het logisch verwijderen van een bestand. Ook kan de opdracht "fstrim" worden gebruikt, die informatie doorgeeft aan de controller over logisch vrijgegeven gebieden na handmatige vrijgave of automatisch (bijvoorbeeld via de systemd service manager) met bepaalde tijdsintervallen. De parameters voor het koppelen van de partitie worden opgeslagen in het configuratiebestand etc/fstab en moeten daar worden gecontroleerd. Houd er rekening mee dat TRIM-ondersteuning voor sommige bestandssystemen standaard is ingeschakeld (de parameter "nodiscard" wordt gebruikt om deze geforceerd uit te schakelen) of door een vlag in de superblokparameters in te stellen.
In MacOS
Typ in terminal:
sudo trimforce disable
Voer het beheerderswachtwoord in en bevestig de wijzigingen. Na bevestiging start de computer automatisch opnieuw op.