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 allo spazio di scambio.
Lo spazio di scambio può assumere la forma di una partizione di scambio dedicata o di un file di scambio. Generalmente quando si esegue Ubuntu su una macchina virtuale, non è presente una partizione di scambio e l'unica opzione è creare un file di scambio.
Questo tutorial illustra i passaggi necessari per aggiungere un file di scambio su sistemi Ubuntu 18.04.
Prima di iniziare #
Prima di continuare con questo tutorial, controlla se la tua installazione di Ubuntu ha già abilitato lo scambio digitando:
sudo swapon --show
Se l'output è vuoto, significa che il tuo sistema non ha lo spazio di scambio abilitato.
Altrimenti, se ottieni qualcosa come di seguito, hai già lo scambio abilitato sulla tua macchina.
NAME TYPE SIZE USED PRIO
/dev/sda2 partition 1.9G 0B -2
Sebbene possibile, non è comune avere più spazi di scambio su una singola macchina.
Creazione di un file di scambio #
L'utente con cui hai effettuato l'accesso deve disporre dei privilegi sudo per poter attivare lo scambio. In questo esempio, aggiungeremo 1G
scambio. Se vuoi aggiungere più swap, sostituisci 1G
con le dimensioni dello spazio di scambio di cui hai bisogno.
Esegui i passaggi seguenti per aggiungere spazio di scambio su Ubuntu 18.04.
-
Inizia creando un file che verrà utilizzato per lo scambio:
sudo fallocate -l 1G /swapfile
Se
fallocate
non è installato o viene visualizzato un messaggio di errore che dicefallocate failed: Operation not supported
quindi usa il seguente comando per creare il file di scambio:sudo dd if=/dev/zero of=/swapfile bs=1024 count=1048576
-
Solo l'utente root dovrebbe essere in grado di scrivere e leggere il file di scambio. Imposta i permessi corretti digitando:
sudo chmod 600 /swapfile
-
Usa
mkswap
utility per configurare un'area di scambio Linux sul file:sudo mkswap /swapfile
-
Attiva il file di scambio usando il seguente comando:
sudo swapon /swapfile
Per rendere permanente la modifica, apri il
/etc/fstab
file:sudo nano /etc/fstab
e incolla la seguente riga:
/etc/fstab/swapfile swap swap defaults 0 0
-
Verifica che lo scambio sia attivo utilizzando lo
swapon
o ilfree
comando, 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
Regolazione del valore di scambio #
Swappiness è una proprietà del kernel Linux che definisce la frequenza con cui il sistema utilizzerà lo spazio di scambio. Swappiness può avere un valore compreso tra 0 e 100. Un valore basso farà sì che il kernel cerchi di evitare lo scambio quando possibile, mentre un valore più alto farà sì che il kernel utilizzi lo spazio di scambio in modo più aggressivo.
Il valore di swappiness predefinito è 60. Puoi controllare il valore di swappiness corrente digitando il seguente comando:
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, eseguire:
sudo sysctl vm.swappiness=10
Per rendere questo parametro persistente tra i riavvii, aggiungi la seguente riga a /etc/sysctl.conf
file:
vm.swappiness=10
Il valore di swappiness ottimale dipende dal carico di lavoro del sistema e da come viene utilizzata la memoria. Dovresti regolare questo parametro con piccoli incrementi per trovare un valore ottimale.
Rimozione di un file di scambio #
Per disattivare e rimuovere il file di scambio, segui questi passaggi:
-
Inizia disattivando lo spazio di scambio digitando:
sudo swapoff -v /swapfile
-
Quindi, rimuovi la voce del file di scambio
/swapfile swap swap defaults 0 0
dal/etc/fstab
file. -
Infine, rimuovi il file di scambio effettivo usando
rm
comando:sudo rm /swapfile