/tmp/ in tmpfs, aumentiamo la velocità di /tmp/
Questo è un trucchetto che uso da un pò su tutti i computer, e si sente la differenza
. . la tecnica consiste nel montare la partizione /tmp con filesystem tmpfs, ossia un filesystem virtuale che tiene i file in ram o, all’occorrenza, in swap, e cresce dinamicamente per occupare solo lo spazio necessario. Questo in modo da ridurre gli accessi al disco, con conseguente aumento della vita dello stesso e minor rumore, ma soprattutto maggiore velocità (estremamente maggiore - di fatto l’accesso ai dati in ram è quasi istantaneo
).
Come funziona tmpfs? da wikipedia (EN):
tmpfs is a common name for a temporary file storage facility on many Unix-like operating systems. It is intended to appear as a mounted file system, but one which uses virtual memory instead of a persistent storage device.
Everything stored in tmpfs is temporary in the sense that no files will be created on the hard drive; however, swap space is used as backing store in case of low memory situations. On reboot, everything in tmpfs will be lost.
The memory used by tmpfs grows and shrinks to accommodate the files it contains and can be swapped out to swap space.
in pratica tmpfs tiene tutti i file in ram o, all’occorrenza in swap (questo è importante
). Per mettere il tutto in pratica basta aggiungere una riga come questa allo fstab:
tmpfs /tmp tmpfs defaults 0 0
di default tmpfs limita le proprie dimensioni a metà della ram disponibile . . questo, per un pc con 1024MB di ram, significa avere una /tmp di 512MB di capacità . . il che è sufficiente per buona parte delle applicazioni, ma non basta, ad esempio, se vogliamo creare una copia di un cd e vogliamo memorizzare l’immagine temporanea in /tmp, o se vogliamo ricompilare qualcosa di grosso . . qui ci torna utile il fatto che il tmpfs può swappare
. Mettiamo, ad esempio, che vogliamo copiare un DVD col nostro pc da 1G di ram . . però vogliamo essere sicuri di avere sempre almeno 512M di ram liberi per il sistema . . quindi? possiamo creare una partizione/file swap da 5G, attivarla e avremo la bellezza di 6G di memoria virtuale disponibile! per dire a /tmp di usarla basta il comando:
# mount /tmp -o remount,size=5G
oppure aggiungere staticamente l’opzione size=*** allo fstab . . da notare che con l’opzione remount il contenuto della /tmp non va perso, come invece accade smontando e rimontando o riavviando
. . per compilazioni (che conivolgono tanti file piccoli), è necessario aumentare anche il numero degli inodes (cioè dei file massimi) con l’opzione nr_inodes=*** (assegnando 0 si disabilita il limite). Altre opzioni le trovate in ‘man mount’ alla voce tmpfs
.
Un’ultima cosa da ricordare è che, quando all’arresto disattiviamo la swap, tutto il suo contenuto viene copiato in ram . . se abbiamo lasciato tanta roba nella /tmp rischiamo, oltre che un’inutile rallentamento, un out-of-memory . . la soluzione è molto semplice: basta smontare la /tmp subito prima della swap, aggiungendo un ‘umount /tmp’ agli script di arresto:
stat_busy “Unmounting /tmp”
/bin/umount /tmp
stat_donestat_busy “Deactivating Swap”
/sbin/swapoff -a
stat_done