Aggiungere la memoria di swap al nostro sistema è sicuramente una buona pratica, sopratutto per macchine con poca disponibilità di RAM.
Per vedere nel dettaglio come funziona e cosa serve la memoria di swap, consiglio la lettura di questo articolo.
Qui vedremo invece come si fa ad aggiungere memoria di swap su un sistema Linux. E’ possibile aggiungerla usando una partizione dedicata (soluzione più comune) o usando semplicemente un file (soluzione meno comune ma comunque efficace).
Iniziamo col cercare di capire se e quanta memoria di swap abbiamo al momento nel nostro sistema. Per farlo, possiamo:
Eseguire cat /proc/swap. o swapon -s
Un esempio di output:
cat /proc/swaps Filename Type Size Used Priority
Non essendoci memoria swap installata, non ci sono entries.
Eseguire free -h
:
total used free shared buffers cached Mem: 7,7G 6,6G 1,1G 581M 372M 2,3G -/+ buffers/cache: 4,0G 3,7G Swap: 0B 0B 0B
che ci indicherà la quantità di memoria di swap.
Visto la similarità dei comandi necessari per creare la memoria di swap, vediamo prima di tutto come si crea usando un file.
Creare spazio di Swap usando un file
Prima di tutto abbiamo bisogno di creare un file che verrà utilizzato come archivio per la nostra memoria agguntiva. Per farlo, utilizzeremo l’utility dd. Questa ci permette di convertire e copiare file. E’ uno strumento molto utile e potente di cui vi consiglio di consultare il man (man dd) per approfondirlo.
Usiamo il seguente comando per creare un file di 1GB che verrà utilizzato per la nostra memoria di swap:
dd if=/dev/zero of=/swapfile bs=1M count=1024
In alternativa, possiamo anche utilizzare l’utility fallocate (che permette di preallocare lo spazio per un file):
sudo fallocate -l 4G /swapfile
ls -lh /swapfile -rw-r--r-- 1 root root 4,0G giu 1 18:43 /swapfile
Ok, da quì in poi è possibile seguire il procedimento per quanto riguarda l’alternativa della partizione, è pressochè identico:
mkswap /swapfile
Usiamo questo programma per creare lo swapfile, e infine attiviamo lo spazio di swap usando:
swapon /swapfile
Creare una partizione di swap
Come preannunciato poco sopra, i comandi sono molto simili:
mkswap /dev/sda5
Ci permette di creare una partizione di swap sulla partizione sda5.
Per dire al sistema di utilizzare la partizione come memoria di swap invece, usiamo il comando swapon:
swapon /dev/sda5
Montare la partizione all’avvio
Ora che abbiamo creao il nostro spazio di swap, dobbiamo istruire il sistema in modo che ce lo monti ad ogni avvio. Per fare ciò, possiamo usare il file /etc/fstab che contiene le configurazioni da seguire per quanto riguarda i mount.
La riga da aggiungere in fondo al file, è la seguente per il file:
/swapfile none swap defaults 0 0
mentre è la seguente per la partizione:
/dev/sda5 none swap defaults 0 0
Perfetto! Abbiamo correttamente impostato la memoria di swap nel nostro sistema. E’ possibile verificarlo usando i comandi spiegati all’inizio, ad esempio con free -h:
total used free shared buffers cached Mem: 7,7G 6,4G 1,3G 300M 380M 2,0G -/+ buffers/cache: 4,0G 3,6G Swap: 2,0G 0B 2,0G
In caso ci servisse (a me è servito per scrivere questo articolo!) è possibile disattivare la memoria di swap utilizzando il comando swapoff -a
.
Possiamo riattivarlo usando il comando swapon -a
.
Quanto spazio dovrei usare per lo swap?
In generale possiamo siamo piuttosto liberi riguardo a questo. Le quantità consigliate sono:
- Per un pc desktop, il doppio della memoria. Se abbiamo 2 GB usiamo 2 GB per lo spazio di swap.
- Per un server, metà della memoria. Questo perchè non vogliamo che i programmi in esecuzione vengano rallentate. Se viene usata troppa swap bisognerebbe aumentare la quantità di ram.
- Per pc desktop più vecchiotti (con ram da 128MB), tutta la memoria che ti avanza (anche 1GB).
Per approfondire e fonti:
- All about swap su Linux.com
- DigitalOcean su come aggiungere memoria di swap su Ubuntu.
ciao come faccio a rimuovere i file che ho creato in caso non mi servissero oppure avessi commesso un errore?
attendo tua cortese risposta
Ciao Nicola! Puoi essere più preciso? In generale puoi usare il comando ‘rm nomefile’ per eliminare un file