Trim -kommando

Från Wikipedia, den fria encyklopedin
Hoppa till navigation Hoppa till sökning

Inom datavetenskap förstås termen trim som en serie liknande åtkomstkommandon till gränssnitt för dataöverföring från dataminnen , som markerar oanvända datablock i ett dataminne som ledigt. Namnet har blivit känt genom SATA - TRIM , även om andra termer också används, till exempel Discard in Linux [1] och LVM eller Delete Notification (översatt som "raderingsmeddelande") i Microsoft fsutil från Windows från Vista / Server 2003 . [2]

Implementeringar är, förutom TRIM -kommandot med ATA / ATAPI och SATA, UNMAP med SCSI , ERASE med MMC / SD och deallocate med NVMe .

På datalagringsnivå betyder Trim möjligheten till ett tredje tillstånd: förutom binära data, dvs nollor och enor, betyder Trim (eller Deallocate, DeleteNotify, Discard, Radera, Punch, Unmap) att ingen data är tillgänglig eller i använda sig av. Motsvarande datablock är "oinitialiserat" eller "raderat".

grund

Klassiska datalagringsmedier som hårddiskar innehåller alltid antingen 0 eller 1 vid en viss bitposition i ett visst datablock. När det gäller hårddiskar beror detta också på den fysiska strukturen, eftersom mediet antingen är magnetiserat eller inriktat vid en viss punkt, vilket motsvarar en binär eller inte, binär en nolla. Data kan skrivas så ofta som krävs.

När det gäller dataminnen baserade på flashminne och fysiskt uppbyggda från en eller flera icke-flyktiga, mestadels NAND- flashmoduler, kombineras alltid minnescellerna i block, som vanligtvis åter kombineras i grupper. När det gäller SSD -enheter kallas dessa grupper ibland som engelska block , och grupper av block kallas sidor , varigenom en blockgrupp (en sida ) uppfattas av operativsystemet som den fysiska blockstorleken . En viktig egenskap hos flashminnet är dock att antalet möjliga raderingar är begränsat. Dessutom kan block inte bara skrivas över utan måste raderas innan de kan skrivas igen. Genom att kombinera dem i grupper ( sidor , för operativsystemet så många block som passar i blockstorleken) måste en hel grupp block (en sida ) alltid raderas samtidigt: Om bara en bit ändras i en sådan kombinerad blockgrupp ( sida ) måste hela gruppen av block raderas och skrivas om, vilket i slutändan påverkar flashminnets livslängd. [3]

På grund av dessa ändrade förutsättningar, slit utjämning ades tekniker implementeras i styrenheten för SSD-enheter, bland annat, som är avsedda att förhindra onödig deletion av enskilda grupper av kombinerade blocken och för att minimera överdriven omskrivning. Förutom överprovisionering och skräpsamling registrerar kontrollenheten också vilka block eller grupper av block ( sidor ) som redan har använts, hur ofta de redan har raderats eller skrivits, och vilka blockgrupper som för närvarande är oanvända. För att för att fördela lasten jämnt över alla block, när du ändrar z. Till exempel raderas inte den ursprungliga sidan och skrivs om med bara en enda bit, utan markeras helt enkelt som oanvänd i en lista som underhålls av kontrollern och en annan, ännu mindre ofta använd (eller helt ny) sida används, som tar plats från nu på. Sidor som innehåller defekta block är också markerade och används inte längre; andra extra sidor (överprovisionering) tar sedan plats.

Ur systemets synvinkel som använder dessa dataminnen döljer dock styrenheten alla dessa tekniker - ett operativsystem kan komma åt ett datablock på vanligt sätt utan att känna till de interna mekanismerna och utan att veta vilka faktiska fysiska block som för närvarande används Begagnade. Men bara operativsystemet eller dess virtuella filsystem vet verkligen statusen för enskilda block, för när de raderas skrivs de vanligtvis inte över utan bara markeras som fria i filsystemet . Data finns kvar på datalagringsenheten - det är mycket svårt för styrenheten på en SSD att skilja mellan använda och föräldralösa (oanvända) datablock. För att underlätta för regulatorn att arbeta med slitageutjämning specificerades ett åtkomstkommando, kallat "TRIM" för ATA / SATA, med vilket ett system kan meddela regulatorn när ett block inte längre används. Detta gör det möjligt för de tekniker som implementeras i styrenheten att radera flashminneceller om det behövs (inklusive sophämtning) och ökar därmed effektiviteten och livslängden för flashbaserade dataminnen. På lång sikt skyddar detta minnescellerna och stabiliserar åtkomsttiden vid skrivning. [4]

En stor nackdel med TRIM är det faktum att dataåterställning efter en raderingsprocess vanligtvis inte längre är möjlig även med rättsmedicinska medel [5] . När filer raderas från en SSD instruerar TRIM -kommandot lagringskontrollen att ta bort de associerade sidorna. TRIM -kommandot är oåterkalleligt. Så snart sidorna har raderats av kontrollenheten är det inte längre möjligt att återställa raderade filer från en SSD.

Implementering och användning

Vid implementering av moderna operativsystem för datorsystem som datorer och servrar , men också z. B. Smartphones och surfplattor , en skillnad i princip olika trimimplementeringar: [6]

  • Icke-deterministisk TRIM
  • Deterministisk läsning efter trimning (DRAT)
  • Deterministisk läsning Zero After Trim (DZAT eller RZAT [7] )

Icke-deterministisk trim betyder att efter ett trimkommando en ny avläsning av respektive blocknummer (se Logisk blockadressering , LBA för kort) levererar obestämd data. Detta kan vara data från andra block och även olika data för varje läsförsök. Deterministisk trim, å andra sidan, levererar på ett tillförlitligt sätt samma data, men det beror på respektive implementering. Till exempel med Deterministic Read After Trim (DRAT) är det i grunden oklart om data som tidigare skrivits i ett visst blocknummer kan läsas upp igen - som är fallet med andra dataminnen, t.ex. B. hårddiskar, är fallet, eller data från en annan slumpmässig logisk blockadress (LBA). Det är bara föreskrivet att samma data alltid kommer att finnas kvar tills blocken fysiskt har skrivits över och används. Med Deterministic Read Zero After Trim returnerar styrenheten alltid nollor när du öppnar ett trimmat block, även om blocket ännu inte har raderats fysiskt.

ATA TRIM

TRIM- kommandot för ATA- och SATA- gränssnitten föreslogs först i Data Set Management Commands Proposal för ATA8-ACS2 (där ACS står för " ATA / ATAPI Command Set "; Version 2 Revision 0 är från 21 april 2007). "Trim" är en datamängd attribut för "Data Set Management" kommando. [8] [9]

SCSI UNMAP

SCSI trim -kommandot kallas UNMAP och specificeras i punkt 4.7.3.4 i SCSI Block Commands 3 T10 Specification . [7]

MMC / SD ERASE

För multimediakortet och SD-kortet finns kommandot ERASE , som utför en icke-deterministisk trimoperation. Med JEDEC -specifikationen eMMC v4.4 från 2009 (eMMC står för Embedded MultiMedia Card ), tillkom ytterligare deterministiska trimkommandon i form av Secure Erase och Secure Trim. [10]

NVMe deallocate

Med NVM Express (NVMe för kort) kallas trimkommandot Deallocate .

Tunn leverans

Denna funktion kan också användas när det inte finns någon verklig hårdvara inblandad: Under Linux kan enhetsmapparen också använda denna borttagningsinformation från filsystemet. Målet där är att spara (vanligtvis överutnyttjat) lagringsutrymme. Ett annat exempel är Logical Volume Manager (LVM), där på engelska tunnanpassade LVM: er (dt. Gles okkuperade LVM ) lagringsblock som inte längre används frigörs på den logiska volymen med trimfunktionen och därmed en potentiell överbokning vid kartläggning av logisk lagring enheter på fysiska lagringsblock på lagringsmediet är möjliga under drift. [11]

Stöd

Operativsystem måste ge grundläggande trimstöd och denna kapacitet måste också implementeras för de filsystem som används. Huruvida TRIM-kommandot genomförs med ATA / SATA, den UNMAP kommandot med SCSI beror ERASE och TRIM kommandon med MMC / SD eller avallokera kommandot med NVMe också på operativsystemet och dess drivrutiner .

Operativsystem har en intern logik för att automatiskt skicka de olika trimkommandona till stödjande enheter , men funktionen kan vanligtvis också ställas in manuellt. ATA TRIM var för operativsystemet Linux Kernel version 2.6.33 [12] introducerade Windows 7 [13] har också motsvarande kommandon. En implementering av denna intelligenta lagringshantering är i allmänhet tillgänglig för macOS från version 10.6.8 , men bara för SSD -enheter som förinstallerats av Apple. Det finns dock lösningar som TRIM också kan aktiveras för senare installerade SSD: er. [14] Sedan OS X 10.10.4 har Apple tillhandahållit sin egen lösning, den så kallade "trimforce", som också kan användas för att aktivera tredjeparts SSD-enheter i Terminal Trim. [15]

operativ system Stöd sedan källa
Windows 7 Slutlig utgåva - oktober 2009 [16]
Windows Server 2008 R2 Slutlig utgåva - oktober 2009 [17] [18]
Linux 2.6.33 Februari 2010 [19]
OpenSolaris Juli 2010 [20]
FreeBSD 8.1 (endast för radering på låg nivå)
FreeBSD 8.2 (fullt stöd i UFS)
Juli 2010
29 januari 2011
[21] [22]
[23]
Mac OS X Snow Leopard 10.6.7 (endast MacBook Pro 2011) [24]
Mac OS X Snow Leopard 10.6.8 eller Lion (endast Apple SSD)
OS X Yosemite 10.10.4 (fullständigt stöd)
Tillgänglighet - 24 februari 2011
Släpp - 23 juni 2011
Släpp - 30 juni 2015
[25]
Android 4.3 Släpp - juli 2013 [26]

Individuella bevis

  1. Jonathan Corbet: Blockera bortkastningsbegäranden. I: LWN.net . 12 augusti 2008, åtkomst 19 maj 2021 .
  2. ^ Hantering och verktyg - Kommandoradsreferens: Fsutil -beteende. I: Microsoft Docs. Microsoft , 31 augusti 2016, öppnade 19 maj 2021 : " DisableDeleteNotify - Inaktiverar ( 1 ) eller aktiverar ( 0 ) radering av meddelanden ..."
  3. Lutz Labs: SSD Basics - Struktur och funktionalitet för SSD -skivor . I: c't . Nej.   2015/2015 . Heise Zeitschriften Verlag , 30 oktober 2015, sid.   68 ( online , mot en avgift [öppnas den 18 maj 2021]).
  4. Byungjo Kim, Dong Hyun Kang, Changwoo Min, Young Ik Eom: Understanding Implications of Trim, Discard, and Background Command for eMMC Storage Device. (PDF; 547KiB) I: 2014 IEEE 3rd Global Conference on Consumer Electronics (GCCE). Sungkyunkwan University , Samsung Electronics , 2014, s. 709-710 , åtkomst 20 maj 2021 (engelska, utdrag).
  5. TRIM med SSD - dataåterställning är inte möjlig. I: 030-datenrettung.de. 28 juni 2021, åtkomst den 28 juni 2021 (tyska).
  6. Yuri Gubanovis, Oleg Afonin: Återställa bevis från SSD -enheter 2014: Förstå TRIM, skräpsamling och undantag. Rättsmedicinsk fokus, 23 september 2014, öppnade 18 maj 2021 .
  7. a b Lagringsadministrationsguide - Kapitel 21. Riktlinjer för distribution av SSD -diskar. I: RHEL7 produktdokumentation. Red Hat, åtkomst 18 maj 2021 .
  8. Frank Shu, Nathan Obr: Data Set Management Commands Förslag för ATA8-ACS2, revision 6. (DOC; 106KiB) (Inte längre tillgängligt online.) Microsoft Corporation , 12 december 2007, arkiverat från originalet den 13 juni 2010 ; åtkomst den 18 maj 2021 (engelska, T13 / e07154r6).
  9. Fördelar med TRIM och dess användning med din Intel SSD. Intel, 7 april 2021, öppnade 19 maj 2021 : ”TRIM är ett attribut för ATA Data Set Management Command. TRIM -funktionen förbättrar kompatibilitet, trygghet och prestanda ... "
  10. Adrian Hunter: [PATCH] mmc: lägg till ioctl för radering. ( E-post ) I: Linux Kernel Patch . 5 maj 2010, åtkomst den 20 maj 2021 : "Dessutom erbjuder eMMCv4.4 också: Secure Erase, Trim, Secure Trim"
  11. Tunt föreskrivna logiska volymer (tunna volymer). Åtkomst 20 februari 2019 .
  12. heise open - Innovationerna i Linux 2.6.33 . heise.de. 24 februari 2010. Hämtad 24 februari 2010.
  13. ↑ Vad är nytt i NTFS . Microsoft TechNet. 1 februari 2010. Hämtad 2 februari 2011.
  14. TRIM Enabler för Mac . groths.org. 3 september 2013. Hämtad 14 september 2013.
  15. Aktivera TRIM för tredje parts SSD under OS X 10.10.4 . MacTechNews. 1 juli 2015. Hämtad 11 juli 2015.
  16. Support och frågor och svar för SSD-enheter . MSDN . 9 maj 2009. Hämtad 12 augusti 2010.
  17. Windows 7-förbättringar för SSD-enheter . I: Microsoft nedladdningar . Microsoft Corporation. 12 november 2008. Hämtad 8 juli 2009.
  18. Fråga: Vad är TRIM -funktionen för SSD -skivor och varför är det viktigt? . Windows IT Pro. Arkiverad från originalet den 2 januari 2010. Hämtad 1 september 2010.
  19. Trimma på Linux . Kärnan nybörjare. Hämtad 1 september 2010.
  20. SATA TRIM -stöd i OpenSolaris . 29 juli 2010. Hämtad 27 februari 2011.
  21. FreeBSD 8.1-RELEASE Release Notes: Skivor och lagring . Hämtad 1 september 2010.
  22. FreeBSD 9 Brainstorming / önskelista . Hämtad 1 september 2010.
  23. Lägg till stöd för kärnsidan för BIO_DELETE / TRIM på UFS . Hämtad 1 februari 2011.
  24. AJ: Aktivera TRIM SSD i Mac OS X 10.6.7. I: OS X Daily. 27 mars 2011, åtkomst 18 maj 2021 .
  25. TRIM SSD -stöd aktiverat i Mac OS X 10.6.8 Update . Hämtad 27 juni 2011.
  26. Android 4.3 ger TRIM till alla Nexus -enheter . GIGA . 30 juli 2013. Hämtad 30 juli 2013.