Swap è uno spazio su un disco che viene utilizzato quando la quantità di memoria RAM fisica è piena. Quando un sistema Linux esaurisce la RAM, le pagine inattive vengono spostate dalla RAM nello spazio di swap.

Lo spazio di swap può assumere la forma di una partizione di swap dedicata o di un file di swap. Nella maggior parte dei casi quando si esegue Linux su una macchina virtuale non è presente una partizione di swap, quindi la nostra unica opzione è quella di creare un file di swap.

Questo tutorial è stato testato su sistemi Linux con Ubuntu 18.04 e CentOS 7 ma dovrebbe funzionare con qualsiasi altra distribuzione Linux.

Come aggiungere il file di swap

Seguire questi passaggi per aggiungere 1 GB di swap al server. Se si desidera aggiungere 2 GB anziché 1 GB, sostituire 1G con 2G.

  • Crea un file che verrà utilizzato per lo swap.
sudo fallocate -l 1G /swapfile

Se faillocate non è installato o se viene visualizzato un messaggio di errore che dice che fallocate failed: Operation not supported è possibile utilizzare il comando seguente per creare il file di swap:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
  • Imposta le autorizzazioni corrette.

Solo l'utente root dovrebbe essere in grado di scrivere e leggere il file di swap. Per impostare il tipo di autorizzazioni corrette:

sudo chmod 600 /swapfile
  • Configurare un'area di swap.

Utilizzare l' mkswaputilità per impostare il file come area di swap Linux:

sudo mkswap /swapfile
  • Abilita lo swap.

Attiva il file di swap con il seguente comando:

sudo swapon /swapfile

Per rendere permanente la modifica aprire il file /etc/fstab e aggiungere la seguente riga:

/swapfile swap swap defaults 0 0
  • Verifica lo stato dello swap.

Per verificare che lo swap sia attivo, possiamo usare il comando free oppure swapon come mostrato di seguito:

sudo swapon --show
NAME      TYPE  SIZE   USED PRIO
/swapfile file 1024M 507.4M   -1
sudo free -h
              total        used        free      shared  buff/cache   available
Mem:           488M        158M         83M        2.3M        246M        217M
Swap:          1.0G        506M        517M

Regolare il valore di swappiness

Swappiness è una proprietà del kernel Linux che definisce la frequenza con cui il sistema utilizzerà lo spazio di swap. Lo swappiness può avere un valore compreso tra 0 e 100. Un valore basso farà sì che il kernel provi a evitare lo swap ogni volta che è possibile, mentre un valore più elevato farà sì che il kernel utilizzi lo spazio di swap in modo più aggressivo.

Il valore di swappiness predefinito è 60. È possibile verificare il valore di swappiness corrente digitando il comando seguente:

cat /proc/sys/vm/swappiness
60

Mentre il valore di swappiness di 60 va bene per la maggior parte dei sistemi Linux, per i server di produzione potrebbe essere necessario impostare un valore inferiore.

Ad esempio, per impostare il valore di swappiness su 10, digitare:

sudo sysctl vm.swappiness=10

Per rendere persistente questo parametro tra i riavvii, aggiungere la seguente riga al file /etc/sysctl.conf:

sudo nano /etc/sysctl.conf
vm.swappiness=10

Il valore di swap ottimale dipende dal carico di lavoro del sistema e dal modo in cui viene utilizzata la memoria. È necessario regolare questo parametro con piccoli incrementi per trovare un valore ottimale.

Come rimuovere il file di Swap

Se per qualsiasi motivo si desidera disattivare e rimuovere il file di swap, attenersi alla seguente procedura:

Innanzitutto, disattiva lo swap digitando:

sudo swapoff -v /swapfile

Rimuovi la voce del file di swap /swapfile swap swap defaults 0 0 dal file /etc/fstab.

Infine, elimina il file di swap reale usando il comando rm:

sudo rm /swapfile

Conclusione

Hai imparato come creare un file di swap e attivare e configurare lo spazio di swap sul tuo sistema Linux.