TRIM

schopnost operačního systému informovat SSD jednotku
Tento článek je o speciální operaci SSD disků. Další významy jsou uvedeny na stránce Trim.

TRIM je v informatice označení příkazu umožňujícího, aby operační systém mohl informovat SSD disk o tom, které datové bloky obsahují dále již nepoužívaná data.[1] Nejčastěji jsou tak označovány datové bloky právě smazaného souboru. Příkaz TRIM je u SSD disků používán ke zrychlení zápisu dat, a aby efektivněji pracovala mezivrstva FTL (Flash Translation Layer), která zajišťuje rovnoměrné opotřebování datových buněk. Na rozdíl od HDD, které jsou schopné přepsat stará data, musí být stará data na SSD smazána.[2]

Popis činnosti

Při smazání souboru je obvyklé, že jádro operačního systému smaže pouze metadata, ale vlastní obsah souboru ponechá na disku. Z hlediska disku se jedná o stále platná data, které lze dokonce obnovit (tj. obnovení smazaných souborů). U klasického pevného disku to nevadí, protože operace zápisu je spojena se smazáním předchozích dat (čtecí hlava je kombinována s mazací hlavou), takže obě operace (mazání a nový zápis) proběhnou najednou. U SSD disků je však před zápisem nových dat nutné původní data nejprve smazat pomocí speciální operace a teprve pak je možné do „vyčištěného“ prostoru zapsat nová data. Nelze tedy spojit obě operace do jedné, a proto je operace zápisu navenek pomalejší. Předběžné smazání dat (jako reakce na příkaz TRIM) tedy částečně snižuje počet hardwarových operací nutných v okamžiku zápisu nových dat na SSD.

Příkazem TRIM informuje jádro systému SSD disk, které datové bloky už nejsou potřeba (obsahují již nepotřebná data) a mohou být proto smazány. Obvykle je operace TRIM prováděna v čase, kdy se neočekává od SSD disku žádná další činnost. Například v roce 2013 byla vydána verze 4.3 systému Android, která přinesla podporu příkazu TRIM tak, že je prováděn typicky v noci, když není systém aktivní, je nabitý a je připojen k nabíječce.

Příkaz TRIM umožňuje též mezivrstvě FTL (Flash Translation Layer), aby mohla lépe pracovat tím, že ji označuje místa, která je v SSD disku možné přepsat a použít pro jiná data. Mezivrstva FTL se stará o to, aby všechny zápisové buňky flash paměti byly opotřebovány rovnoměrně, protože jejich životnost je omezena pouze na několik tisíc změn obsahu. Přesměrovává proto zápisy na méně opotřebené buňky. Díky příkazu TRIM získává informace o tom, které buňky jsou volné a je možné je použít.

Příkaz TRIM není možné podle normy zařadit do fronty, což znamená, že nejprve je nutné dokončit všechny operace, pak provést TRIM a pak teprve pokračovat. Tím může dojít ke značné časové prodlevě. Příkaz TRIM by se tak neměl rutinně používat mezi jednotlivými diskovými operacemi.

Podpora TRIM

Linux

Jádro Linuxu podporuje příkaz TRIM od prosince 2008.[3] Podpora ATA TRIM příkazu byla přidána v jádře 2.6.33.[4] Automatické využití příkazu TRIM je možné u souborových systémů Ext4,[5] Btrfs,[6] FAT, GFS2[7] a XFS.[8] Automatické použití TRIM však není implicitně aktivní kvůli možnému zpomalení práce s diskem.[9] Uživatel může podporu zapnout parametrem discard u příkazu mount. Ext3, NLFS2 a OCFS2 poskytují ioctl, která slouží pro offline použití TRIM.

Android

V systému Android je podpora standardně zahrnuta od verze 4.3 (červenec 2013). Příkaz TRIM je spuštěn jen tehdy, pokud je baterie nabita alespoň z 80 % nebo je baterie nabita alespoň z 30 % a systém je zároveň připojen k nabíječce (tj. nejspíše bude proveden při nočním nabíjení telefonu).[10]

Microsoft Windows

V systémech Windows NT je podpora příkazu TRIM od Windows 7 a Windows Server 2008 R2 (říjen 2009),[11][12] avšak podpora je omezena na klasická AHCI zařízení a nelze jej používat například pro SSD disky v PCI-Express slotech.[13]

Odkazy

Reference