Adresár /tmp je pracovný a ukladajú sa sem mnohé súbory. Ak napríklad v internetovom prehliadači otvoríte nejaký PDF dokument, tak aby ste ho mohli prečítať, ten sa dočasne uloží do /tmp a odtiaľ ho potom čítajú programy ako Acroreader. Slovko TMP je odvodené od anglického slova "temporary" (dočasný) a z názvu vyplýva, že /tmp adresár slúži iba pre dočasnú prácu. Keďže Linux dáta zapisuje na pevný disk, je úplne zrejmé, že ak je /tmp adresár v pamäti, otváranie súborov a teda i celková práca s počítačom je o niečo, ak nie oveľa, rýchlejšia.
Ako sa to robí?
Urobíte to príkazom:
mount -t tmpfs -o size=20m tmpfs /tmp chmod 777 /tmp
Alebo i editáciou súboru /etc/fstab:
tmpfs /tmp tmpfs size=750M,mode=2777 0 0
Pokiaľ pre tmpfs disk neuvediete veľkosť, systém adresáru spravidla pridelí polovicu RAM.
Aké sú výhody?
- Zapisovanie i čítanie dát v operačnej pamäti je rýchle, zvyšuje sa teda výkonnosť.
- Bezpečnosť - citlivé dáta prestanú po reštarte systému existovať v /tmp adresári; pokiaľ si šifrujete i swap, po reštarte sú dáta bezpečné i tam.
Ramfs a tmpfs - aký je rozdiel?
V Linuxe je možné použiť až dve riešenia pre vytvorenie disku (diskov) v pamäti - tmpfs a ramfs. Táto informácia je dôležitá, pretože priestor v pamäti, ktorý pridelíte adresáru /tmp, a pravdaže aj RAM sa bude v oboch prípadoch inak správať.
Tmpfs používa aj swap. Pokiaľ nebudete chcieť, aby pamäť v /tmp adresári stránkovala procesy do swapu, použite ramfs:
mount -t ramfs -o size=20m ramfs /tmp chmod /tmp 777
Ramfs však, i pri stanovení fixnej veľkosti (ako 20 MB), sa bude nekontrolovateľne zväčšovať podľa objemu dát, ktoré sa ukladajú do /tmp, čo sa ukáže ako nevýhoda, keď sa /tmp nafúkne do veľkosti celej RAM, až napokon celý systém spadne.
Konkrétne príklady v praxi
Tmpfs nemá možnosť sa dynamicky (podľa potreby) zväčšovať. Pri pokuse otvoriť (nie uložiť) 50 MB PDF súbor cez Firefox s /tmp adresárom vytvoreným pomocou tmpfs o veľkosti 20 MB systém vyhlásil, že v /tmp adresári nie je dostatok miesta.
Možno niektorí užívatelia budú neoprávnene sklamaní, ale tmpfs vás ochráni pred zaplnením operačnej pamäti a tým pádom aj pred haváriami.
Tmpfs sa teda nerozťahuje dynamicky a nepovolí väčší objem dát, ako ste mu určili. Ale možno sa niekto spýta, že ako je to možné, keď tmpfs používa aj swap?
Swapovanie je kopírovanie pamäťových stránok (v RAM) do swapovacieho súboru na pevnom disku s cieľom, aby sa uvoľnila pamäť a aby práve zbehnuté procesy vždy dostali priestor v pamäti. Keď sa užívateľ k starším procesom vráti, systém ich skopíruje späť zo swapu do operačnej pamäti. Tmpfs spolupracuje so swapom rovnakým spôsobom, ale disky vytvorené v rámci tmpfs sú ohraničené a pri nízkej kapacite /tmp adresára čakajte, že sa často môžu objaviť chybové hlásenia, že na zariadení nie je dostatok voľného miesta.
Tento problém obídete všelijako, i pomocou voľby bind, ktorú podporuje príkaz mount. Bind aplikujete nasledovne, a to na už existujúci tmpfs adresár /tmp (ktorý ste vytvorili, ako je uvedené vyššie):
mount --bind /home/juro/tmp /tmp chmod 777 /tmp
Týmto sme dosiahli, že jasne vymedzený priestor v pamäti - napríklad 20 MB (tmpfs), ktorý sme zobrali z RAM a priradili /tmp adresáru, bude zdieľaný spolu s pevným diskom, resp. s adresárom /home/juro/tmp. Keď sa teda /tmp adresár o veľkosti 20 MB vytvorený v rámci tmpfs zaplní, nedostanete žiadne chybové hlásenie o nedostatku miesta a ani nebudete podstupovať žiadne riziko, ako v prípade ramfs, že sa vám v jednej chvíli nekontrolovateľne zaplní RAM a že vám celý systém spadne.
Jednoduchou rečou povedané, na tmpfs a RAM sa treba pozerať skôr ako na jeden celok - procesy v RAM sa kopírujú do swapu.
Na druhej strane, ak adresár /tmp vytvoríte v rámci ramfs, ten sa podľa potreby bude zväčšovať. Vzniká situácia, že do swapu prichádza všetko okrem toho, čo je v ramfs, a keď sa disk ramfs nafúkne až tak, že obsadí celú operačnú pamäť (čo sa vám s tmpfs nikdy nestane), podobá sa to nie na jeden, ale na dva kusy, kedy ten jeden (ramfs) môže ten druhý (RAM) celkom zabiť, až celý systém spadne.
Kedy sa /tmp v RAM najviac vyplatí?
Pokiaľ robíte úlohy, počas ktorých operačný systém musí často používať /tmp adresár - napríklad pri konverzii tisícok audio súborov či iných podobných úloh - tak sa vám vytvorenie /tmp adresára v RAM oplatí.
Určite v rámci tmpfs pre /tmp adresár nezadávajte veľkosť iba 20 MB, ktorú sme tu zvolili len ilustratívne. Ak však vykonávate iba bežnú prácu s internetom či s dokumentmi, väčšiu rýchlosť, hoci ju môžete mať, nepocítite podobne ako v prípade závodného auta, ktoré pre svoju rýchlu jazdu potrebuje podmienky rovnako ako aj tmpfs.
Na rozdiel od /tmp adresára sa neodporúča priradiť do RAM adresár /var/tmp, pretože podľa štandardov FHS (Filesystem Hierarchy Standard) tento adresár slúži pre "dočasné súbory, ktoré vznikajú medzi reštartom systému" - t. j tesne pred a hneď po reštarte. A keďže obsah tmpfs (a samozrejme aj ramfs) po reštarte PC neprežije, umiestnenie /var/tmp do RAM by nebolo kompatibilné s odporúčaniami FHS.