Trim (drivkommando)

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 10 maj 2020; kontroller kräver 19 redigeringar .

Trim ( eng.  to trim  - trim) - ett ATA -gränssnittskommando som låter operativsystemet meddela SSD-enheten om vilka datablock ( sidor ) som inte bär en nyttolast och inte kan lagras fysiskt.

Trim är en del av ATA -gränssnittsspecifikationen , som standardiseras av T13-gruppen av INCITS [1] .

Skäl till

Kommandot introducerades kort efter tillkomsten av solid state-enheter (SSD) för att göra dem till ett konkurrenskraftigt alternativ till traditionella hårddiskar i persondatorer.

För internt är implementeringen av operationer i en SSD mycket annorlunda än implementeringen av samma operationer i traditionella mekaniska hårddiskar, de vanliga metoderna för operativsystem för operationer som att ta bort filer och formatera en disk (utan att direkt komma åt de berörda sektorerna/ sidor på enheten) leder till en progressiv försämring av prestandan för skrivoperationer på SSD:n [2] .

Användningen av Trim gör att SSD:n kan minska effekten av sophämtning , vilket annars skulle resultera i en minskning av prestandan för skrivoperationer till de berörda sektorerna [3] .

Andra lösningar

Även om verktyg för att "återställa" vissa enheter till deras initiala tillstånd redan var tillgängliga innan Trim kom, raderade de bland annat all data på enheten, vilket gjorde dem praktiskt taget oanvändbara för optimering [4] .

Funktioner hos solid state-enheter

filsystemnivå

På grund av särdragen med raderingsmetoder som vanligtvis används i filsystem vet inte enheter vilka sektorer/sidor som faktiskt används och vilka som kan anses vara inaktiva.

Raderingsoperationer är vanligtvis begränsade till att markera datablock som "oanvända" i filsystemet [5] [6] . Till skillnad från till exempel en överskrivningsoperation kommer radering inte att resultera i en fysisk skrivning till de berörda sektorerna som innehåller data. Eftersom enheten inte har tillgång till filsystemstrukturer - såsom listan över oanvända kluster - lämnas enheten i mörker om att frigöra block.

Även om detta ofta gjorde det möjligt att återställa raderade data på traditionella hårddiskar , även om de markerades som "raderade" av operativsystemet, innebar det också att när operativsystemet senare utförde en skrivoperation till en av de sektorer som anses vara ledigt utrymme, denna operation skulle betraktas som en överskrivningsoperation ur drivenhetens synvinkel. För traditionella hårddiskar skiljer sig denna operation inte från att skriva till en tomgångssektor, för SSD, på grund av slitageutjämning, skiljer sig överskrivning av data väsentligt från att skriva till en tomgångssektor (varje skrivning till samma logiska sektor kommer att göras till olika fysiska sektorer), som potentiellt försämrar prestandan ytterligare skrivoperationer [6] .

På den fysiska minnesnivån

SSD lagrar data i flashminnesceller grupperade (i en MLC SSD) till "sidor" (typiskt 4 KB vardera), som i sin tur grupperas i block (vanligtvis 128 sidor eller 512 KB totalt) [5] [7 ] .

NAND- flashceller kan bara skrivas direkt till om de är tomma. I det fall de lagrar data måste innehållet i cellerna rensas innan ny data skrivs till dem. I SSD-enheter kan skrivoperationen endast göras för sidor, men på grund av hårdvarubegränsningar utförs raderingskommandot alltid på hela blocket [7] . Som ett resultat går det mycket snabbt att skriva till SSD-media så länge det finns tomma sidor, men saktar ner betydligt om förskrivna sidor behöver rensas.

Eftersom celler på en sida måste rensas innan de kan skrivas till igen, men bara ett helt block kan rensas, startar omskrivningsprocessen en läs-rensa-modifiera-skrivcykel [5] [8] : innehållet i hela blocket måste bevaras i cachen innan det kan tas bort från enheten, den överskrivna datan ändras i cachen, och först då skrivs hela blocket (med den uppdaterade sidan) till enheten. Detta fenomen är känt som skrivförstärkning[9] [10] .

SSD-kontrollernivå

I sina SSD-kontroller använder tillverkare olika tekniker för att optimalt fördela skrivoperationer över hela flashenheten [5] [11] . Detta görs inte bara för att optimera hastigheten genom att minimera skrivförstärkningen, utan också för att öka livslängden för blixtceller ( eftersom MLC - blixtceller tål 3000-5000 skrivcykler [11] . Ett annat tillvägagångssätt är att använda reservminne (backup) som inte deklareras till operativsystemet eller ens BIOS , för att tillhandahålla rena sidor för skrivoperationer så länge som möjligt innan man börjar skriva över andra sidor [3] .

Effektiviteten av dessa metoder beror till stor del på informationsutbytet mellan operativsystemet och SSD-styrenheten om vilka sidor som kan anses vara upptagna och vilka sidor som kan anses vara lediga. Traditionellt informerar de flesta operativsystem inte enheter om raderade sektorer/sidor, vilket inte tillåter SSD-kontroller att optimalt allokera ledigt utrymme. Trim-kommandot introducerades för att åtgärda detta genom att rensa oanvända celler innan de skrivs till, vilket minskar åtkomsttiden [3] .

Eftersom kommandot helt raderar data i cellerna är det vanligtvis inte möjligt att återställa data från dem [12] .

Trim stöds inte alltid i RAID- arrayer [13] .

Teamsupport för operativsystem och enheter

Äldre SSD-enheter som tillverkats innan Trim-kommandot lades till i ATA-standarden kräver en firmware-uppdatering  annars kommer kommandot att ignoreras. Trim-kommandot stöds inte heller av alla operativsystem .

Trimma stöd i operativsystem
Operativ system Stöd
Windows 8 och högre Stöds sedan slutlig release (oktober 2012)
Windows Server 2012 Stöds sedan slutlig release (oktober 2012)
Windows 7 Stöds sedan slutlig release (oktober 2009) [14]
Windows Server 2008 R2 Stöds sedan slutlig release (oktober 2009) [15] [16]
Linux 2.6.33 Stöds sedan februari 2010 [17] , ioctl BLKDISCARD
OpenSolaris Stöds sedan juli 2010 [18]
FreeBSD 8.3, 9.2, 10.0 Stöds med UFS [19] , stöds med ZFS [20] [21] .
MacOS X Stöds (sedan version 10.10.4 för alla SSD-enheter, innan dess endast SSD-enheter från Apple [22] )
Android Från och med version 4.3 lades stöd för fstrim-funktionen till i systemet, som är en analog till Trim [23] [24]
ubuntu Stöds sedan Ubuntu 14.04.

Andra metoder och fall

I vissa fall, när Trim inte stöds av operativsystemet, finns det verktyg som låter dig skicka det här kommandot "manuellt". Vanligtvis sammanställer sådana program, med hjälp av operativsystemets verktyg, en lista med fria block och överför den till enheten i form av en sekvens av Trim-kommandon. Sådana produkter finns både i form av universella verktyg ( hdparm version 9.17 och högre) och i form av mjukvara för individuella typer av enheter (Intel [25] , G.Skill [26] ).

SCSI- analogen för Trim -kommandot är Unmap och Write samma [27] kommandon .

Anteckningar

  1. T13-dokument som hänvisar till  Trim . INCITERAR T13 . INCITERAR. Hämtad 8 juli 2009. Arkiverad från originalet 30 juni 2012.
  2. Shimpi, Anand Lal. The SSD Anthology  4. AnandTech.com (18 mars 2009) . Hämtad 19 juni 2010. Arkiverad från originalet 30 juni 2012.
  3. 1 2 3 Shimpi, Anand Lal. (2009-03-18). sid. tio.
  4. Shimpi, Anand Lal. (2009-03-18). sid. elva.
  5. 1 2 3 4 Savill, John. Jag hörde att solid-state-diskar (SSD) lider av en försämring av skrivprestanda när de används. Varför?  (engelska) . WindowsITPro (21 april 2009). Hämtad 19 juni 2010. Arkiverad från originalet 30 juni 2012.
  6. 1 2 Shimpi, Anand Lal. (2009-03-18). sid. 7.
  7. 1 2 Shimpi, Anand Lal. (2009-03-18). sid. 5.
  8. Shimpi, Anand Lal. (2009-03-18). sid. åtta.
  9. Skrivförstärkning: Intels hemliga sås . Hämtad 20 september 2010. Arkiverad från originalet 15 november 2010.
  10. Inuti X25-M Controller: Slitageutjämning, Skrivförstärkningskontroll
  11. 1 2 Shimpi, Anand Lal. (2009-03-18). sid. 6.
  12. För trim? När SSD-dataåterställning är  omöjlig . TechGage . TechGage (5 mars 2010). Hämtad 16 april 2010. Arkiverad från originalet 30 juni 2012.
  13. Gareth Halfacree. Intel släpper Trim för  RAID . bit-tech.net (23 mars 2010). Hämtad 2 november 2010. Arkiverad från originalet 30 juni 2012.
  14. Support och Q&A för Solid State-  enheter . MSDN (9 maj 2009). Hämtad: 2010-08-12]. Arkiverad från originalet den 30 juni 2012.
  15. Windows 7-förbättringar för Solid-State-  enheter . Microsoft nedladdningar . Microsoft Corporation (12 november 2008). Hämtad 8 juli 2009. Arkiverad från originalet 30 juni 2012.
  16. F. Vad är Trim-funktionen för solid state-diskar (SSD) och varför är den viktig?  (engelska)  (otillgänglig länk) . Windows IT Pro. Hämtad 1 september 2010. Arkiverad från originalet 2 januari 2010.
  17. Trim på Linux  (engelska)  (nedlänk) . Nybörjare i kärnan. Hämtad 1 september 2010. Arkiverad från originalet 30 juni 2012.
  18. SATA Trim-stöd i OpenSolaris (29 juli 2010). Arkiverad från originalet den 30 juni 2012.
  19. SVN revision 216796 (29 december 2010). Arkiverad från originalet den 30 juni 2012.
  20. SVN revision 240868 (23 september 2012). Arkiverad från originalet den 25 oktober 2012.
  21. TRIM-klustring (nedlänk) (5 maj 2011). Arkiverad från originalet den 30 juni 2012. 
  22. Daniel Eran Dilger. Apples MacBook Pros levereras med aktivt SSD TRIM-stöd i Snow Leopard  . appleinsider.com (4 mars 2011). Hämtad 7 mars 2011. Arkiverad från originalet 30 juni 2012.
  23. Så fungerar det: TRIM . https://iguides.ru/ . Hämtad 7 januari 2021. Arkiverad från originalet 9 januari 2021.
  24. TRIM-teknik i Android 4.3 kommer att hålla smidig drift  (ryska)  ? . fullhub.ru . Hämtad 7 januari 2021. Arkiverad från originalet 10 januari 2021.
  25. Intel SSD Optimizer White Paper  (eng.) (pdf). Intel Corp. Datum för åtkomst: 23 januari 2010. Arkiverad från originalet den 30 juni 2012.
  26. wiper.exe för Falcon  Series . XtremeSystems. Datum för åtkomst: 23 januari 2010. Arkiverad från originalet den 30 juni 2012.
  27. Anmärkning för SCSI UNMAP-stöd i FreeBSDs e-postlista . Arkiverad från originalet den 30 juni 2012.

Länkar