Trim ( eng. to trim - trim) - en ATA -grænsefladekommando , der gør det muligt for operativsystemet at underrette solid-state-drevet om, hvilke datablokke ( sider ) der ikke bærer en nyttelast og ikke kan lagres fysisk.
Trim er en del af ATA -grænsefladespecifikationen , som er ved at blive standardiseret af T13-gruppen af INCITS [1] .
Kommandoen blev introduceret kort efter fremkomsten af solid state-drev (SSD'er) for at gøre dem til et konkurrencedygtigt alternativ til traditionelle HDD'er i personlige computere.
For internt er implementeringen af operationer i en SSD meget forskellig fra implementeringen af de samme operationer i traditionelle mekaniske harddiske, de sædvanlige metoder for operativsystemer til operationer såsom sletning af filer og formatering af en disk (uden direkte adgang til de berørte sektorer/ sider på drev) fører til en gradvis forringelse af ydeevnen af skriveoperationer på SSD'en [2] .
Brugen af Trim gør det muligt for SSD'en at reducere virkningen af affaldsindsamling , hvilket ellers ville resultere i et fald i ydeevnen af skriveoperationer til de berørte sektorer [3] .
Selvom hjælpeprogrammer til at "nulstille" nogle drev til deres oprindelige tilstand allerede var tilgængelige før fremkomsten af Trim, slettede de blandt andet alle data på drevet, hvilket gjorde dem praktisk talt ubrugelige til optimering [4] .
På grund af de særlige kendetegn ved sletningsmetoder, der almindeligvis anvendes i filsystemer, ved drev ikke, hvilke sektorer/sider der faktisk er i brug, og hvilke der kan anses for inaktive.
Sletningsoperationer er normalt begrænset til at markere datablokke som "ubrugte" i filsystemet [5] [6] . I modsætning til f.eks. en overskrivningsoperation, vil sletning ikke resultere i en fysisk skrivning til de berørte sektorer, der indeholder data. Da drevet ikke har adgang til filsystemstrukturer - såsom listen over ubrugte klynger - efterlades drevet i mørke om at frigøre blokke.
Selvom dette ofte gjorde det muligt at gendanne slettede data på traditionelle HDD'er , selvom de blev markeret som "slettet" af operativsystemet, betød det også, at når operativsystemet senere udførte en skriveoperation til en af de sektorer, der blev betragtet som ledig plads, denne operation vil blive betragtet som en overskrivningsoperation fra drevets synspunkt. For traditionelle harddiske er denne operation ikke forskellig fra skrivning til en inaktiv sektor, for SSD, på grund af slidudjævning, er overskrivning af data væsentligt forskellig fra skrivning til en inaktiv sektor (hver skrivning til den samme logiske sektor vil blive lavet til forskellige fysiske sektorer), potentielt forringende ydeevne yderligere skriveoperationer [6] .
SSD'er gemmer data i flashhukommelsesceller grupperet (i en MLC SSD) i "sider" (typisk 4 KB hver), som igen er grupperet i blokke (typisk 128 sider eller 512 KB i alt) [5] [7 ] .
NAND-flashceller kan kun skrives direkte til, hvis de er tomme. I det tilfælde, hvor de gemmer data, skal indholdet af cellerne ryddes, før der skrives nye data til dem. I SSD-drev kan skriveoperationen kun udføres for sider, men på grund af hardwarebegrænsninger udføres slettekommandoen altid på hele blokken [7] . Som et resultat er det meget hurtigt at skrive til SSD-medier, så længe der er tomme sider, men det går betydeligt langsommere, hvis forudskrevne sider skal ryddes.
Da celler på en side skal ryddes, før de kan skrives til igen, men kun en hel blok kan ryddes, starter omskrivningsprocessen en read-clear-modify-write-cyklus [5] [8] : indholdet af hele blokken skal bevares i cachen, før den kan fjernes fra drevet, de overskrevne data ændres i cachen, og først derefter skrives hele blokken (med den opdaterede side) til drevet. Dette fænomen er kendt som skriveforstærkning[9] [10] .
I deres SSD-controllere bruger producenterne forskellige teknikker til optimalt at fordele skriveoperationer i hele flashdrevet [5] [11] . Dette gøres ikke kun for at optimere hastigheden ved at minimere skriveforstærkning, men også for at øge flashcellernes levetid ( , konventionelle MLC flashceller kan modstå 3000-5000 skrivecyklusser [11] . En anden tilgang er at bruge ekstra (backup)hukommelse, der ikke er deklareret til operativsystemet eller endda BIOS , til at levere rene sider til skriveoperationer så længe som muligt, før man begynder at overskrive andre sider [3] .
Effektiviteten af disse metoder afhænger i høj grad af udvekslingen af information mellem OS og SSD-controlleren om, hvilke sider der kan betragtes som optaget, og hvilke sider der kan betragtes som ledige. Traditionelt informerer de fleste operativsystemer ikke drev om slettede sektorer/sider, hvilket ikke tillader SSD-controllere optimalt at allokere ledig plads. Trim-kommandoen blev indført for at afhjælpe dette ved at rydde ubrugte celler, før de skrives til, og dermed reducere adgangstiden [3] .
Da kommandoen fuldstændig sletter dataene i cellerne, er det normalt ikke muligt at gendanne data fra dem [12] .
Trim er ikke altid understøttet i RAID -arrays [13] .
Ældre SSD'er, der er fremstillet før tilføjelsen af Trim-kommandoen til ATA-standarden, kræver en firmwareopdatering , ellers vil kommandoen blive ignoreret. Trim-kommandoen understøttes heller ikke af alle operativsystemer .
Trim support i operativsystemerOperativ system | Support |
---|---|
Windows 8 og nyere | Understøttet siden den endelige udgivelse (oktober 2012) |
Windows Server 2012 | Understøttet siden den endelige udgivelse (oktober 2012) |
Windows 7 | Understøttet siden den endelige udgivelse (oktober 2009) [14] |
Windows Server 2008 R2 | Understøttet siden den endelige udgivelse (oktober 2009) [15] [16] |
Linux 2.6.33 | Understøttet siden februar 2010 [17] , ioctl BLKDISCARD |
OpenSolaris | Understøttet siden juli 2010 [18] |
FreeBSD 8.3, 9.2, 10.0 | Understøttet med UFS [19] , understøttet med ZFS [20] [21] . |
MacOS X | Understøttet (siden version 10.10.4 for enhver SSD, før det kun Apple-leverede SSD'er [22] ) |
Android | Fra version 4.3 blev understøttelse af fstrim-funktionen tilføjet til systemet, som er en analog af Trim [23] [24] |
ubuntu | Understøttet siden Ubuntu 14.04. |
I nogle tilfælde, når Trim ikke understøttes af operativsystemet, er der hjælpeprogrammer , der giver dig mulighed for at sende denne kommando "manuelt". Typisk kompilerer sådanne programmer ved hjælp af operativsystemværktøjerne en liste over gratis blokke og overfører den til drevet i form af en sekvens af Trim-kommandoer. Sådanne produkter findes både i form af universelle hjælpeprogrammer ( hdparm version 9.17 og nyere) og i form af software til individuelle typer drev (Intel [25] , G.Skill [26] ).
SCSI -analogen til Trim -kommandoen er Unmap og Write same [27] kommandoerne .
Solid State-drev (SSD) | |||||
---|---|---|---|---|---|
Nøgleterminologi |
| ||||
Flash-drev fabrikanter | |||||
Controllere |
| ||||
SSD-producenter | Liste over SSD-producenter | ||||
Grænseflader | |||||
Relaterede organisationer |
|