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] .
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] .
Ä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] .
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] .
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] .
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] .
Ä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 .
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. |
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 .
Solid State-enheter (SSD) | |||||
---|---|---|---|---|---|
Nyckelterminologi |
| ||||
Tillverkare av flashenheter | |||||
Styrenheter |
| ||||
SSD-tillverkare | Lista över SSD-tillverkare | ||||
Gränssnitt | |||||
Närstående organisationer |
|