Blog

Linux tmpfs: filesystem in memoria per build più veloci e storage temporaneo ad alte prestazioni

Dario Fadda Giugno 17, 2026

Alcune funzionalità di Linux sono nascoste in bella vista. tmpfs è una di queste. La si usa ogni giorno senza pensarci: ogni volta che si usa /dev/shm, si ispeziona /run, o si lavora su un sistema che monta /tmp come storage in memoria, si sta interagendo con tmpfs. In questa guida vediamo cos’è, dove Linux lo usa già, come montare istanze personalizzate, renderle persistenti e quando ha davvero senso sfruttarlo.

Cos’è tmpfs?

tmpfs è un tipo di filesystem che archivia tutto nella memoria virtuale — RAM e, se necessario, spazio di swap. Si comporta come un filesystem normale: è possibile creare file, impostare permessi e nidificare directory. La differenza è che tutto scompare nel momento in cui viene smontato o il sistema viene riavviato.

Non è la stessa cosa di un RAM disk. Un RAM disk tradizionale (come ramfs) alloca un blocco fisso di memoria in anticipo, lo mantiene indipendentemente da quanto si usa effettivamente e non ha un limite di dimensione, quindi un processo impazzito può silenziosamente consumare tutta la RAM disponibile.

tmpfs è dinamico: consuma solo la memoria necessaria per i file attualmente archiviati. Impostare un limite di 512 MB e usarne solo 50 MB significa che vengono consumati solo 50 MB di RAM. Il kernel gestisce tmpfs direttamente: nessun dispositivo a blocchi, nessun passaggio di formattazione, nessun fsck.

Dove Linux usa già tmpfs

Prima di configurare qualcosa, vale la pena vedere quanto il sistema si affidi già a tmpfs. Eseguire:

mount | grep tmpfs

Su un moderno sistema Linux si otterrà un output simile a questo:

tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=1633768k,mode=700)

Ogni punto di mount ha uno scopo specifico:

  • /run: dati runtime per il boot corrente — PID file, socket, lock file.
  • /dev/shm: memoria condivisa POSIX, usata dalle applicazioni per la comunicazione inter-processo ad alta velocità.
  • /run/lock: lock file specifici, montati con noexec per sicurezza.
  • /tmp: file temporanei (non tutte le distro lo montano come tmpfs di default).
  • /run/user/1000: directory runtime per-utente gestita da systemd-logind.

Per vedere dimensioni e utilizzo attuale:

df -h -t tmpfs

La dimensione predefinita per /run e /dev/shm è tipicamente metà della RAM totale — il default del kernel, modificabile.

Montare un filesystem tmpfs manualmente

Creare un mount tmpfs è immediato:

sudo mkdir -p /mnt/ramdisk
sudo mount -t tmpfs -o size=256m tmpfs /mnt/ramdisk

Verifica:

df -h /mnt/ramdisk
# Filesystem  Size  Used Avail Use% Mounted on
# tmpfs       256M     0  256M   0% /mnt/ramdisk

Per smontare (e cancellare tutto il contenuto):

sudo umount /mnt/ramdisk

Opzioni di mount

Il flag -o accetta diverse opzioni utili (combinabili con virgole):

size=      # Dimensione massima: k, m, g o percentuale RAM (es. size=25%)
nr_inodes= # Limite numero di inode (file/directory)
mode=      # Permessi sulla root del filesystem (default 1777)
uid= / gid=# Owner della directory root
noexec     # Impedisce l'esecuzione di binari
nosuid     # Ignora i bit setuid sui binari
nodev      # Non consente device file

Un mount scratch sicuro e generico:

sudo mount -t tmpfs -o size=512m,nosuid,nodev,noexec,mode=1777 tmpfs /mnt/scratch

Rendere i mount tmpfs persistenti con /etc/fstab

I mount manuali scompaiono dopo un riavvio. Per renderli persistenti, aggiungere una riga a /etc/fstab:

tmpfs /mnt/ramdisk tmpfs defaults,size=256m,nosuid,nodev,noexec,mode=1777 0 0

I campi sono: filesystem, mount point, tipo, opzioni, dump, pass. Sia dump che pass devono essere 0 per tmpfs — non c’è nulla da eseguire come backup né da fsck.

Per applicare la nuova voce senza riavviare:

sudo mount /mnt/ramdisk
# oppure per ricaricare tutte le voci fstab:
sudo mount -a

Ridimensionare un mount tmpfs a caldo

È possibile ridimensionare un tmpfs live senza smontarlo — utile quando si sottostima lo spazio necessario per una build:

sudo mount -o remount,size=1g /mnt/ramdisk

Il contenuto viene preservato e il ridimensionamento ha effetto immediato.

Casi d’uso pratici

Accelerare le build software

L’output del compilatore, i file oggetto e gli artefatti intermedi vengono scritti e cancellati costantemente durante una build. Su disco questo genera molto seek time (su HDD) o write amplification inutile (su SSD). Su tmpfs sono solo operazioni RAM.

Per un progetto C/C++ o Rust, è possibile reindirizzare la directory di build su tmpfs:

sudo mount -t tmpfs -o size=4g tmpfs /mnt/build
export CARGO_TARGET_DIR=/mnt/build   # per Rust
# oppure per CMake:
cmake -B /mnt/build -S /path/al/progetto

Ridurre le scritture su SSD e schede SD

Le schede SD e i drive eMMC hanno cicli di scrittura limitati. Montare /tmp come tmpfs riduce significativamente l’usura. Su Raspberry Pi e sistemi embedded questo può prolungare sensibilmente la vita del supporto.

Su systemd, abilitare il mount di /tmp come tmpfs:

systemctl enable --now tmp.mount

Scratch space rapido per script e processing dati

Quando uno script elabora file di grandi dimensioni (log, dump CSV, file di testo), usare tmpfs come directory di lavoro elimina la latenza I/O. I file scompaiono automaticamente al riavvio senza necessità di pulizia manuale.

Monitorare l’utilizzo di tmpfs

# Panoramica con df
df -h -t tmpfs

# Per dettagli su un mount specifico
stat -f /mnt/ramdisk

# Monitoraggio in tempo reale con watch
watch -n 2 "df -h -t tmpfs"

Limitazioni e avvertenze

  • I dati non sono persistenti: tutto ciò che non viene copiato altrove va perso al riavvio o all’unmount.
  • Consuma RAM: un tmpfs pieno mette pressione sulla memoria di sistema e può innescare l’uso dello swap.
  • Il limite di dimensione non riserva memoria: è un tetto massimo, non un’allocazione anticipata. Impostare size=8g su un sistema con 4 GB di RAM non fallisce immediatamente — fallisce quando si tenta di usare più memoria di quella disponibile.
  • Non sostituisce uno storage affidabile: per qualsiasi dato che deve sopravvivere a un riavvio, tmpfs non è lo strumento giusto.

Conclusioni

tmpfs è uno degli strumenti più sottovalutati nell’arsenale del sistemista Linux. Richiede due minuti di configurazione e i benefici sono immediati: build più veloci, meno scritture su disco, scratch space che si pulisce da solo al riavvio. Il punto chiave da ricordare è la natura volatile: tutto ciò che viene salvato in tmpfs deve essere copiato su storage permanente prima dello spegnimento, se ha valore.

Per ambienti di build, sistemi embedded, pipeline di processing dati o semplicemente per ridurre l’usura su SSD, tmpfs è la risposta giusta.

Fonte originale: Linux tmpfs for Speed and Temporary Storage – LinuxBlog.io

💬 Unisciti alla discussione!


Questo è un blog del Fediverso: puoi trovare quindi questo articolo ovunque con @blog@spcnet.it e ogni commento/risposta apparirà qui sotto.

Se vuoi commentare su Linux tmpfs: filesystem in memoria per build più veloci e storage temporaneo ad alte prestazioni, utilizza la discussione sul Forum.
Condividi la tua esperienza, confrontati con altri professionisti e approfondisci i dettagli tecnici nel nostro 👉 forum community