Trim (příkaz k jízdě)

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 10. května 2020; kontroly vyžadují 19 úprav .

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] .

Důvody pro

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] .

Další řešení

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] .

Vlastnosti pevných disků

Na úrovni souborového systému

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] .

Na fyzické úrovni paměti

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] .

Na úrovni řadiče SSD

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] .

Týmová podpora pro operační systémy a disky

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 .

Podpora oříznutí v operačních systémech
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.

Jiné metody a případy

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] .

Poznámky

  1. Dokumenty T13 odkazující na  Trim . PODNĚTE T13 . PODNĚTY. Získáno 8. července 2009. Archivováno z originálu dne 30. června 2012.
  2. Shimpi, Anand Lal. The SSD Anthology  4. AnandTech.com (18. března 2009) . Získáno 19. června 2010. Archivováno z originálu 30. června 2012.
  3. 1 2 3 Shimpi, Anand Lal. (2009-03-18). p. deset.
  4. Shimpi, Anand Lal. (2009-03-18). p. jedenáct.
  5. 1 2 3 4 Savill, John. Slyšel jsem, že pevné disky (SSD) při používání trpí poklesem výkonu zápisu. Proč?  (anglicky) . WindowsITPro (21. dubna 2009). Získáno 19. června 2010. Archivováno z originálu 30. června 2012.
  6. 1 2 Shimpi, Anand Lal. (2009-03-18). p. 7.
  7. 1 2 Shimpi, Anand Lal. (2009-03-18). p. 5.
  8. Shimpi, Anand Lal. (2009-03-18). p. osm.
  9. Write Amplification: Intel's Secret Sauce . Získáno 20. září 2010. Archivováno z originálu 15. listopadu 2010.
  10. Uvnitř ovladače X25-M: Vyrovnání opotřebení, ovládání zesílení zápisu
  11. 1 2 Shimpi, Anand Lal. (2009-03-18). p. 6.
  12. Příliš oříznuté? Když je obnova dat SSD  nemožná . TechGage . TechGage (5. března 2010). Získáno 16. dubna 2010. Archivováno z originálu 30. června 2012.
  13. Gareth Halfacree. Intel vydává Trim pro  RAID . bit-tech.net (23. března 2010). Získáno 2. listopadu 2010. Archivováno z originálu 30. června 2012.
  14. ↑ Podpora a otázky a odpovědi pro SSD  . MSDN (9. května 2009). Získáno: 2010-08-12]. Archivováno z originálu 30. června 2012.
  15. Vylepšení Windows 7 pro SSD  . Microsoft ke stažení . Microsoft Corporation (12. listopadu 2008). Získáno 8. července 2009. Archivováno z originálu dne 30. června 2012.
  16. Otázka: Co je funkce Trim pro SSD disky a proč je důležitá?  (anglicky)  (nedostupný odkaz) . Windows IT Pro. Získáno 1. září 2010. Archivováno z originálu 2. ledna 2010.
  17. Trim on Linux  (anglicky)  (downlink) . Nováčci jádra. Získáno 1. září 2010. Archivováno z originálu 30. června 2012.
  18. Podpora SATA Trim v OpenSolaris (29. července 2010). Archivováno z originálu 30. června 2012.
  19. Revize SVN 216796 (29. prosince 2010). Archivováno z originálu 30. června 2012.
  20. Revize SVN 240868 (23. září 2012). Archivováno z originálu 25. října 2012.
  21. TRIM clustering (downlink) (5. května 2011). Archivováno z originálu 30. června 2012. 
  22. Daniel Eran Dilger. Apple MacBooky Pro se dodávají s aktivní podporou SSD TRIM ve Snow  Leopard . appleinsider.com (4. března 2011). Získáno 7. března 2011. Archivováno z originálu dne 30. června 2012.
  23. Jak to funguje: TRIM . https://iguides.ru/ . Získáno 7. ledna 2021. Archivováno z originálu dne 9. ledna 2021.
  24. Technologie TRIM v Androidu 4.3 udrží plynulý chod  (ruština)  ? . fullhub.ru . Získáno 7. ledna 2021. Archivováno z originálu dne 10. ledna 2021.
  25. Bílá kniha Intel SSD Optimizer  (anglicky) (pdf). Společnost Intel Corp. Datum přístupu: 23. ledna 2010. Archivováno z originálu 30. června 2012.
  26. wiper.exe pro Falcon  Series . XtremeSystems. Datum přístupu: 23. ledna 2010. Archivováno z originálu 30. června 2012.
  27. Poznámka k podpoře SCSI UNMAP v mailing listu FreeBSD . Archivováno z originálu 30. června 2012.

Odkazy