Trim ( anglicky to trim - trim) – příkaz rozhraní ATA , který umožňuje operačnímu systému informovat disk SSD o tom, které datové bloky ( stránky ) nenesou užitečné zatížení a nelze je fyzicky uložit.
Trim je součástí specifikace rozhraní ATA , která je standardizována skupinou T13 INCITS [1] .
Příkaz byl představen krátce po příchodu pevných disků (SSD), aby se staly konkurenceschopnou alternativou k tradičním HDD v osobních počítačích.
Protože interně je implementace operací na SSD disku velmi odlišná od implementace stejných operací na tradičních mechanických pevných discích, obvyklé metody operačních systémů pro operace, jako je mazání souborů a formátování disku (bez přímého přístupu k postiženým sektorům/ stránky na disku) vedou k postupnému zhoršování výkonu operací zápisu na SSD [2] .
Použití Trim umožňuje SSD snížit dopad garbage collection , který by jinak měl za následek pokles výkonu operací zápisu do postižených sektorů [3] .
Už před příchodem Trimu byly sice k dispozici utility pro „resetování“ některých disků do výchozího stavu, ale ty mimo jiné smazaly všechna data na disku, čímž se staly pro optimalizaci prakticky nepoužitelnými [4] .
Kvůli zvláštnostem metod mazání běžně používaných v souborových systémech disky nevědí, které sektory/stránky jsou skutečně používány a které mohou být považovány za nečinné.
Operace mazání se obvykle omezují na označení bloků dat jako „nepoužitých“ v systému souborů [5] [6] . Na rozdíl od například operace přepsání nepovede odstranění k fyzickému zápisu do postižených sektorů obsahujících data. Vzhledem k tomu, že disk nemá přístup ke strukturám souborového systému – jako je seznam nepoužívaných clusterů – je disk ponechán v nevědomosti ohledně uvolňování bloků.
I když to často umožňovalo obnovit smazaná data na tradičních pevných discích , přestože byla operačním systémem označena jako „smazaná“, znamenalo to také, že když operační systém později provedl operaci zápisu do jednoho ze sektorů považovaných za volné místo, tato operace by byla z hlediska jednotky považována za operaci přepsání. U tradičních pevných disků se tato operace neliší od zápisu do nečinného sektoru, u SSD se kvůli vyrovnávání opotřebení přepisování dat výrazně liší od zápisu do nečinného sektoru (každý zápis do stejného logického sektoru bude proveden do jiného fyzického sektory), potenciálně snižující výkon dalších operací zápisu [6] .
SSD ukládají data ve flash paměťových buňkách seskupených (v MLC SSD) do „stránek“ (obvykle 4 KB každá), které jsou zase seskupeny do bloků (typicky 128 stránek nebo celkem 512 KB) [5] [7 ] .
Na buňky NAND flash lze přímo zapisovat, pouze pokud jsou prázdné. V případě, že ukládají data, musí být obsah buněk před zapsáním nových dat vymazán. U SSD disků lze operaci zápisu provést pouze pro stránky, nicméně z důvodu hardwarových omezení se příkaz delete provede vždy na celém bloku [7] . Výsledkem je, že zápis na média SSD je velmi rychlý, pokud existují prázdné stránky, ale výrazně se zpomalí, pokud je třeba vymazat předem napsané stránky.
Vzhledem k tomu, že buňky na stránce musí být před dalším zápisem vyčištěny, ale lze vymazat pouze celý blok, proces přepisu zahájí cyklus čtení-vymazání-upravení-zápis [5] [8] : obsah celý blok musí být zachován v mezipaměti, než může být odstraněn z disku, přepsaná data jsou upravena v mezipaměti a teprve poté je celý blok (s aktualizovanou stránkou) zapsán na disk. Tento jev je znám jako zesilování zápisu[9] [10] .
Výrobci ve svých řadičích SSD používají různé techniky k optimální distribuci operací zápisu po celém flash disku [5] [11] . To se provádí nejen pro optimalizaci rychlosti minimalizací zesílení zápisu, ale také pro zvýšení životnosti flash buněk ( ) , běžné MLC flash buňky vydrží 3000–5000 cyklů zápisu [11] . Dalším přístupem je použití náhradní (záložní) paměti, která není deklarována operačnímu systému nebo dokonce BIOSu , k zajištění čistých stránek pro operace zápisu co nejdéle, než se začne přepisovat jiné stránky [3] .
Účinnost těchto metod do značné míry závisí na výměně informací mezi OS a řadičem SSD o tom, které stránky lze považovat za zaneprázdněné a které stránky lze považovat za volné. Tradičně většina operačních systémů neinformuje disky o smazaných sektorech/stránkách, což neumožňuje řadičům SSD optimálně přidělit volné místo. Příkaz Trim byl zaveden, aby to napravil vymazáním nepoužívaných buněk před jejich zapsáním, čímž se zkrátil přístupový čas [3] .
Vzhledem k tomu, že příkaz kompletně vymaže data v buňkách, obvykle z nich není možné data obnovit [12] .
Trim není vždy podporován v polích RAID [13] .
Starší disky SSD vyrobené před přidáním příkazu Trim do standardu ATA vyžadují aktualizaci firmwaru , jinak bude příkaz ignorován. Příkaz Trim také není podporován všemi operačními systémy .
Operační systém | Podpěra, podpora |
---|---|
Windows 8 a vyšší | Podporováno od konečného vydání (říjen 2012) |
Windows Server 2012 | Podporováno od konečného vydání (říjen 2012) |
Windows 7 | Podporováno od konečného vydání (říjen 2009) [14] |
Windows Server 2008 R2 | Podporováno od konečného vydání (říjen 2009) [15] [16] |
Linux 2.6.33 | Podporováno od února 2010 [17] , ioctl BLKDISCARD |
OpenSolaris | Podporováno od července 2010 [18] |
FreeBSD 8.3, 9.2, 10.0 | Podporováno UFS [19] , podporováno ZFS [20] [21] . |
MacOS X | Podporováno (od verze 10.10.4 pro jakýkoli SSD, předtím pouze SSD dodávané společností Apple [22] ) |
Android | Od verze 4.3 byla do systému přidána podpora funkce fstrim, což je obdoba Trim [23] [24] |
ubuntu | Podporováno od Ubuntu 14.04. |
V některých případech, kdy Trim není podporován operačním systémem, existují nástroje , které umožňují odeslat tento příkaz „ručně“. Tyto programy obvykle pomocí nástrojů operačního systému sestavují seznam volných bloků a přenášejí jej na jednotku ve formě sekvence příkazů Trim. Takové produkty existují jak ve formě univerzálních utilit ( hdparm verze 9.17 a vyšší), tak ve formě softwaru pro jednotlivé typy disků (Intel [25] , G.Skill [26] ).
Analogem SCSI příkazu Trim jsou příkazy Unmap a Write same [27] .
SSD (Solid State Drive) | |||||
---|---|---|---|---|---|
Klíčová terminologie |
| ||||
Výrobci flash disků | |||||
Ovladače |
| ||||
výrobci SSD | Seznam výrobců SSD | ||||
Rozhraní | |||||
Spřízněné organizace |
|