Trim ( eng. to trim - trim ) – egy ATA interfész parancs , amely lehetővé teszi az operációs rendszer számára, hogy értesítse a szilárdtestalapú meghajtót arról, hogy mely adatblokkok ( oldalak ) nem hordoznak hasznos terhelést, és nem tárolhatók fizikailag.
A Trim része az ATA interfész specifikációjának , amelyet az INCITS [1] T13 csoportja szabványosít .
A parancsot nem sokkal a szilárdtestalapú meghajtók (SSD-k) megjelenése után vezették be , hogy versenyképes alternatívává tegyék őket a személyi számítógépekben használt hagyományos merevlemezekkel szemben.
Mivel belsőleg a műveletek végrehajtása az SSD-n nagyon különbözik ugyanazon műveletek végrehajtásától a hagyományos mechanikus merevlemezeken, az operációs rendszerek szokásos módszerei olyan műveletekhez, mint a fájlok törlése és a lemez formázása (az érintett szektorok közvetlen elérése nélkül/ oldalak a meghajtón) az SSD-n végzett írási műveletek teljesítményének fokozatos romlásához vezetnek [2] .
A Trim használata lehetővé teszi az SSD számára, hogy csökkentse a szemétgyűjtés hatását , ami egyébként az érintett szektorok írási műveleteinek teljesítményének csökkenését eredményezné [3] .
Bár a Trim megjelenése előtt már rendelkezésre álltak egyes meghajtók "visszaállítására" segédprogramok, egyebek mellett minden adatot töröltek a meghajtóról, ami gyakorlatilag használhatatlanná tette őket az optimalizálás szempontjából [4] .
A fájlrendszerekben általánosan használt törlési módszerek sajátosságai miatt a meghajtók nem tudják, mely szektorok/oldalak vannak ténylegesen használatban, és melyek tekinthetők tétlennek.
A törlési műveletek általában arra korlátozódnak, hogy az adatblokkokat „felhasználatlanként” jelöljék meg a fájlrendszerben [5] [6] . Ellentétben például egy felülírási művelettel, a törlés nem eredményez fizikai írást az adatokat tartalmazó érintett szektorokban. Mivel a meghajtó nem fér hozzá a fájlrendszer-struktúrákhoz – például a nem használt fürtök listájához –, a meghajtó homályban marad a blokkok felszabadításával kapcsolatban.
Noha ez gyakran lehetővé tette a hagyományos merevlemezeken lévő törölt adatok helyreállítását , bár azokat az operációs rendszer "törölt"-ként jelölte meg, ez azt is jelentette, hogy amikor az operációs rendszer később írási műveletet hajtott végre a szabad területnek tekintett szektorok valamelyikébe, ez a művelet a meghajtó szempontjából felülírási műveletnek tekinthető. Hagyományos merevlemezeknél ez a művelet nem különbözik az üresjárati szektorba való írástól, SSD-nél a kopáskiegyenlítés miatt az adatok felülírása jelentősen eltér a tétlen szektorba való írástól (minden írás ugyanabba a logikai szektorba más-más fizikaiba történik szektorok), potenciálisan rontva a teljesítményt további írási műveletek [6] .
Az SSD-k flash memória cellákban tárolják az adatokat ( MLC SSD-ben) "oldalakba" csoportosítva (jellemzően egyenként 4 KB ), amelyek viszont blokkokba vannak csoportosítva (összesen jellemzően 128 oldal vagy 512 KB) [5] [7] .
A NAND flash cellákba csak akkor lehet közvetlenül írni, ha üresek. Abban az esetben, ha adatokat tárolnak, a cellák tartalmát törölni kell, mielőtt új adatot írnak rájuk. Az SSD meghajtókban az írási művelet csak oldalakon végezhető el, azonban a hardveres korlátok miatt a törlés parancsot mindig a teljes blokkon hajtják végre [7] . Ennek eredményeként az SSD adathordozóra írás nagyon gyors, amíg vannak üres oldalak, de jelentősen lelassul, ha az előre megírt oldalakat törölni kell.
Mivel az oldalon lévő cellákat törölni kell, mielőtt újra le lehetne írni, de csak egy egész blokkot lehet törölni, az újraírási folyamat elindít egy olvasás-törlés-módosítás-írás ciklust [5] [8] : a A teljes blokkot meg kell őrizni a gyorsítótárban, mielőtt eltávolítható lenne a meghajtóról, a felülírt adatok módosulnak a gyorsítótárban, és csak ezután kerül a teljes blokk (a frissített oldallal) a meghajtóra. Ezt a jelenséget íráserősítésként[9] [10] néven ismerjük .
SSD-vezérlőikben a gyártók különféle technikákat alkalmaznak az írási műveletek optimális elosztására a pendrive-on [5] [11] . Ez nemcsak a sebesség optimalizálása érdekében történik az íráserősítés minimalizálásával, hanem a flash cellák élettartamának növelése ( ) hagyományos MLC flash cellák 3000-5000 írási ciklust képesek ellenállni [11] . Egy másik megközelítés az operációs rendszernek vagy a BIOS -nak nem deklarált tartalék (tartalék) memória használata , hogy tiszta oldalakat biztosítson az írási műveletekhez, ameddig csak lehetséges, mielőtt más oldalakat felülírna [3] .
Ezeknek a módszereknek a hatékonysága nagymértékben függ az operációs rendszer és az SSD-vezérlő közötti információcserétől arról, hogy mely oldalak tekinthetők elfoglaltnak és mely oldalak tekinthetők szabadnak. Hagyományosan a legtöbb operációs rendszer nem tájékoztatja a meghajtókat a törölt szektorokról/oldalakról, ami nem teszi lehetővé az SSD-vezérlők számára a szabad hely optimális lefoglalását. A Vágás parancsot azért vezették be, hogy ezt orvosolják a nem használt cellák törlésével, mielőtt azokba írnának, így csökkentve a hozzáférési időt [3] .
Mivel a parancs teljesen törli a cellákban lévő adatokat, általában nem lehet visszaállítani belőlük az adatokat [12] .
A RAID - tömbök nem mindig támogatják a vágást [13] .
A Trim parancsnak az ATA-szabványhoz való hozzáadása előtt gyártott régebbi SSD-knél firmware-frissítésre van szükség, különben a parancs figyelmen kívül marad. A Vágás parancsot szintén nem támogatja minden operációs rendszer .
Operációs rendszer | Támogatás |
---|---|
Windows 8 és újabb | A végső kiadás óta (2012. október) támogatott |
Windows Server 2012 | A végső kiadás óta (2012. október) támogatott |
Windows 7 | A végső kiadás óta (2009. október) támogatott [14] |
Windows Server 2008 R2 | A végső kiadás óta (2009. október) támogatott [15] [16] |
Linux 2.6.33 | 2010 februárja óta támogatott [17] , ioctl BLKDISCARD |
OpenSolaris | 2010 júliusa óta támogatott [18] |
FreeBSD 8.3, 9.2, 10.0 | Támogatott UFS [19] , támogatja ZFS [20] [21] . |
Mac OS X | Támogatott (a 10.10.4-es verzió óta bármilyen SSD-hez, előtte csak az Apple által szállított SSD-k [22] ) |
Android | A 4.3-as verziótól kezdve a rendszerhez hozzáadták az fstrim funkció támogatását, amely a Trim [23] [24] analógja. |
ubuntu | Az Ubuntu 14.04 óta támogatott. |
Bizonyos esetekben, amikor az operációs rendszer nem támogatja a Trim-et, vannak olyan segédprogramok , amelyek lehetővé teszik a parancs "kézi" elküldését. Általában az ilyen programok az operációs rendszer eszközeivel összeállítják a szabad blokkok listáját, és Trim parancsok sorozata formájában továbbítják a meghajtóra. Ilyen termékek léteznek mind univerzális segédprogramok ( hdparm 9.17 és újabb verzió), mind egyedi típusú meghajtók szoftverei (Intel [25] , G.Skill [26] ) formájában.
A Trim parancs SCSI -analógja az Unmap és Write ugyanaz [27] parancs .
Szilárdtestalapú meghajtók (SSD) | |||||
---|---|---|---|---|---|
Kulcs terminológia |
| ||||
Flash meghajtók gyártói | |||||
Vezérlők |
| ||||
SSD gyártók | SSD gyártók listája | ||||
Interfészek | |||||
Kapcsolódó szervezetek |
|