1 19/04/2026 10 min

Quando ha senso creare uno swap file

Su Linux lo swap non è un sostituto della RAM, ma un cuscinetto operativo. Serve a evitare che il kernel arrivi subito all'OOM killer quando la memoria si satura, a gestire picchi brevi e, in alcuni casi, a rendere più stabile un sistema con carichi variabili. Su server moderni lo swap file è spesso preferibile alla partizione dedicata: si crea in fretta, si modifica senza ripartizionare e si misura meglio nel tempo.

La scelta corretta dipende dal contesto. Su una VM piccola, su un nodo di test, su un host con storage veloce o su una macchina che deve solo assorbire spike occasionali, un file di swap è una soluzione pratica. Su carichi con memoria realmente critica, invece, lo swap va usato con criterio: se il sistema sta swapando in modo continuo, il problema non è la mancanza di swap ma il dimensionamento della RAM o del workload.

Prima di intervenire conviene classificare il caso: qui siamo in un change controllato. Lo stato atteso è semplice: sistema operativo stabile, nessun errore sui comandi, swap visibile in `free -h` e persistente dopo reboot. Lo stato osservato, di solito, è uno di questi: swap assente, swap insufficiente, oppure swap presente ma non configurato in modo persistente.

Dimensionamento: quanto swap creare davvero

Non esiste un numero unico valido per tutti. La vecchia regola “swap uguale alla RAM” è spesso inutile sui server attuali. Meglio ragionare per obiettivo operativo.

  • 1–2 GB: sistemi leggeri, VM di test, container host con poca memoria e nessuna esigenza di ibernazione.
  • 2–4 GB: server applicativi piccoli, pannelli hosting, macchine con RAM contenuta ma carico non costante.
  • 4–8 GB o più: host con picchi di memoria, compilazioni, job batch, database piccoli o ambienti dove si vuole più margine prima dell'OOM.

Se il server ha poca RAM, lo swap aiuta a evitare crash improvvisi ma non risolve la saturazione. Se invece il server ha molta RAM, uno swap moderato serve soprattutto come rete di sicurezza. In entrambi i casi conviene monitorare swap in/out, latenza disco e pressione memoria, non solo la presenza del file.

Verifiche immediate prima di toccare il sistema

La prima verifica è capire se lo swap esiste già e quanto è usato. I comandi sotto sono innocui e ti dicono subito se stai intervenendo su un sistema senza swap o su uno già configurato.

free -h
swapon --show
cat /proc/swaps

Se `swapon --show` non restituisce nulla, non c'è swap attivo. Se invece vedi un file o una partizione già attiva, valuta se stai per duplicare una configurazione esistente. In quel caso il rischio non è tecnico in senso stretto, ma operativo: aggiungere swap senza criterio può mascherare un problema di memoria o di leak applicativo.

Controlla anche lo spazio libero sul filesystem che ospiterà il file. Il file di swap deve stare su un volume affidabile e con margine sufficiente.

df -h /
df -h /var

Se il sistema è già sotto pressione disco, creare swap sullo stesso filesystem può essere una pessima idea. In quel caso il problema va risolto prima: spazio, I/O, log cresciuti troppo, snapshot dimenticati o volumi quasi pieni. Uno swap file su un filesystem saturo non è una soluzione, è un acceleratore di guai.

Creazione del file di swap con metodo standard

Il procedimento classico usa `fallocate` quando disponibile, perché è veloce. Se il filesystem o la policy locale non lo consentono, si può usare `dd`. L'obiettivo è sempre lo stesso: creare un file di dimensione definita, impostare i permessi corretti, inizializzarlo come swap e abilitarlo.

Esempio con file da 4 GB su `/swapfile`:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Il permesso `600` non è opzionale: il file di swap contiene pagine di memoria del sistema e deve essere leggibile solo da root. Se i permessi sono troppo larghi, il kernel o gli strumenti di sicurezza possono segnalare un problema, e comunque stai esponendo dati che non dovrebbero essere accessibili.

Se `fallocate` non è supportato sul filesystem, usa `dd` con attenzione. È più lento, ma molto universale.

sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

In questo caso `count=4096` crea 4096 MiB, cioè circa 4 GB. Il file viene scritto davvero, quindi l'operazione richiede più tempo e incide sul disco. È un dettaglio utile quando lavori su storage lento o su VM con thin provisioning: il provisioning “apparente” e l'uso reale non coincidono sempre.

Verifica che lo swap sia attivo

Dopo l'abilitazione, controlla che il kernel lo veda e che la dimensione sia quella prevista. La verifica minima è questa:

swapon --show
free -h

Nel primo comando dovresti vedere una riga con il path del file, il tipo `file`, la dimensione e la priorità. Nel secondo dovresti vedere la nuova capacità di swap disponibile. Se `swapon --show` è vuoto, il file non è stato attivato oppure c'è un errore nel formato o nei permessi.

Per un controllo più fine, puoi ispezionare anche `/proc/swaps` e il file system dove risiede il file.

cat /proc/swaps
ls -lh /swapfile

Se il file è presente ma non attivo, il problema di solito è uno tra questi: permessi sbagliati, file sparse non accettato dal filesystem, path errato in fase di attivazione o attributi non compatibili con la configurazione locale.

Renderlo persistente dopo il reboot

Attivare lo swap al volo non basta. Dopo un riavvio il sistema deve ritrovarlo senza interventi manuali. La via standard è aggiungere una voce in `/etc/fstab`.

Prima fai un backup del file, poi aggiungi la riga. Questo è il punto in cui una modifica apparentemente banale può bloccare il boot se scritta male.

sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab

Inserisci una riga come questa:

/swapfile none swap sw 0 0

Dopo il salvataggio, verifica la sintassi senza aspettare il reboot. Il controllo più semplice è rimontare quanto basta o, meglio, rileggere la configurazione con attenzione e testare l'attivazione. Se la riga è errata, il sistema può lamentarsi all'avvio o ignorare la voce.

Su sistemi con `systemd`, il problema si vede spesso nei log del boot. Se vuoi un check rapido, usa:

systemctl status systemd-remount-fs.service
journalctl -b | grep -i swap

Il vantaggio di `fstab` è la semplicità. Lo svantaggio è che un errore di editing può diventare un incidente al reboot. Per questo la modifica va trattata come change controllato: backup prima, verifica subito dopo, e rollback pronto.

Quando usare zram, quando usare un file di swap

Il file di swap tradizionale non è l'unica strada. Su macchine con CPU sufficientemente libera e storage lento, `zram` può essere più efficace perché comprime la memoria in RAM invece di scrivere su disco. Non sostituisce sempre lo swap su disco, ma in certi contesti riduce la latenza e migliora la reattività.

La scelta pratica è questa: se il collo di bottiglia è il disco, `zram` può dare beneficio; se vuoi semplicità, compatibilità e comportamento prevedibile, il file di swap resta la soluzione più lineare. Su server hosting classici, il file di swap è spesso più facile da gestire e da documentare.

Attenzione però a non confondere “swap disponibile” con “problema risolto”. Se un web server, un database o un job batch consuma memoria in modo anomalo, aggiungere swap allunga la sopravvivenza del processo ma non corregge il leak o il dimensionamento errato. In questi casi la metrica da guardare è la pressione memoria, non il solo valore di swap usato.

Priorità, comportamento del kernel e tuning minimo

Linux decide quanto usare lo swap anche in base a `vm.swappiness`. Il valore di default varia tra distribuzioni e profili, ma il principio è semplice: più il valore è alto, più il sistema tende a spostare pagine inattive su swap; più è basso, più tende a tenere tutto in RAM finché possibile.

Su molti server conviene non toccarlo subito. Prima osserva il comportamento reale. Se il sistema swapa troppo presto, puoi valutare una riduzione moderata; se invece la RAM si satura e il sistema va in crisi prima di usare lo swap, puoi alzarlo con cautela. Il tuning va fatto con una metrica chiara: p95 latency dell'applicazione, rate di page fault, swap in/out e I/O disco.

cat /proc/sys/vm/swappiness
sysctl vm.swappiness

Se cambi il parametro, fallo in modo reversibile e documentato. Ad esempio, un file in `/etc/sysctl.d/99-swappiness.conf` è più pulito di una modifica temporanea fatta a mano e dimenticata.

sudo tee /etc/sysctl.d/99-swappiness.conf > /dev/null <<'EOF'
vm.swappiness=10
EOF
sudo sysctl --system

Qui il rischio è basso, ma il rollback va comunque previsto: basta rimuovere il file o ripristinare il valore precedente. Non usare numeri “magici” senza osservazione: 10 può andare bene su un server, essere troppo basso su un altro e del tutto irrilevante su una macchina con memoria già abbondante.

Rimozione o modifica del file di swap

Se devi ridimensionare lo swap o spostarlo altrove, non cancellare il file mentre è attivo. Prima disabilitalo, poi intervieni sul file e infine aggiorna la configurazione persistente.

Esempio di rollback operativo per un file ` /swapfile `:

sudo swapoff /swapfile
sudo rm /swapfile

Se il file è referenziato in `/etc/fstab`, rimuovi o commenta la riga corrispondente prima del reboot. In caso contrario il boot tenterà di riattivarlo e troverà un path inesistente.

Per una modifica sicura, il flusso corretto è: disattiva, verifica che lo swap sia sparito da `swapon --show`, correggi `fstab`, crea il nuovo file, attiva, verifica di nuovo. Questo evita stati intermedi difficili da diagnosticare.

Il caso più comune è il file creato ma non attivabile. Di solito il sintomo è un errore in `swapon /swapfile` o l'assenza del file da `swapon --show`. Le cause frequenti sono permessi sbagliati, filesystem incompatibile, spazio insufficiente o path errato.

Un altro errore classico è dimenticare la persistenza. Lo noti perché tutto funziona fino al reboot e poi lo swap sparisce. In quel caso il problema non è il file, ma la configurazione di avvio. La verifica da fare è sempre la stessa: controllare `/etc/fstab` e i log di boot.

Infine c'è il caso peggiore: swap presente ma sistema lento. Qui il file non è il problema, è il segnale. Se `vmstat 1` mostra swap in/out continui e il disco è saturo, stai usando lo swap come estensione della RAM in un modo che degrada il servizio.

vmstat 1
iostat -x 1

Se osservi alta attività di swap e I/O, la soluzione strutturale è aumentare la RAM, ridurre il consumo del processo o distribuire il carico. Lo swap, da solo, non è una cura.

Esempio completo su un server Linux recente

Supponiamo un server con 2 GB di RAM e nessuno swap attivo. L'obiettivo è creare un file da 2 GB, persistente e verificato. Il flusso completo è questo:

  1. Controlla lo stato iniziale con `free -h` e `swapon --show`.
  2. Verifica lo spazio libero con `df -h /` o sul filesystem scelto.
  3. Crea il file con `fallocate` oppure `dd`.
  4. Imposta `chmod 600` e inizializza con `mkswap`.
  5. Attiva con `swapon /swapfile`.
  6. Aggiungi `/swapfile none swap sw 0 0` in `/etc/fstab`.
  7. Ricontrolla con `swapon --show` e `free -h`.

Se dopo il reboot lo swap è ancora presente, la configurazione è corretta. Se scompare, il problema è nella persistenza, non nella creazione. Se compare ma il sistema rallenta, il problema è la pressione memoria o il comportamento dell'applicazione.

Prima di considerare finito il lavoro, chiudi con una verifica essenziale: file presente, permessi corretti, swap attivo, voce in `fstab`, reboot testato se il contesto lo consente. Questa è la sequenza minima per evitare sorprese più avanti.

  • `ls -lh /swapfile` mostra `-rw-------` e la dimensione attesa.
  • `swapon --show` elenca il file con la size corretta.
  • `free -h` mostra spazio swap disponibile.
  • `grep -n swap /etc/fstab` restituisce la riga prevista.
  • Se possibile, un reboot di prova conferma la persistenza.

Assunzione operativa: il file di swap è stato creato su un filesystem affidabile e il sistema non è già in emergenza I/O o spazio disco. Se uno di questi punti non è vero, va risolto prima di procedere.

In sintesi, creare uno swap file su Linux è un'operazione semplice solo in apparenza. La parte facile è il comando; la parte importante è decidere dimensione, posizione, persistenza e comportamento atteso. Se lo tratti come un cambiamento misurabile e reversibile, ottieni un margine utile senza trasformare lo swap in una stampella cieca.