Questo tutorial discute il concetto di file di scambio in Linux, perché viene utilizzato e i suoi vantaggi rispetto alla tradizionale partizione di scambio. Imparerai come creare un file di scambio o ridimensionarlo.
Cos'è un file di scambio in Linux?
Un file di scambio consente a Linux di simulare lo spazio su disco come RAM. Quando il tuo sistema inizia a esaurire la RAM, utilizza lo spazio di swap e scambia parte del contenuto della RAM nello spazio su disco. Ciò libera la RAM per servire processi più importanti. Quando la RAM è di nuovo libera, scambia i dati dal disco. Consiglio di leggere questo articolo per saperne di più sullo scambio su Linux.
Tradizionalmente, lo spazio di swap viene utilizzato come partizione separata sul disco. Quando installi Linux, crei una partizione separata solo per lo scambio. Ma questa tendenza è cambiata negli ultimi anni.
Con il file di scambio, non hai più bisogno di una partizione separata. Crei un file sotto root e dici al tuo sistema di usarlo come spazio di scambio.
Con una partizione di swap dedicata, ridimensionare lo spazio di swap è un incubo e in molti casi un compito impossibile. Ma con i file di scambio, puoi ridimensionarli a tuo piacimento.
Le versioni recenti di Ubuntu e alcune altre distribuzioni Linux hanno iniziato a utilizzare il file di scambio per impostazione predefinita. Anche se non crei una partizione di scambio, Ubuntu crea da solo un file di scambio di circa 1 GB.
Vediamo qualcosa in più sui file di scambio.

Controlla lo spazio di scambio in Linux
Prima di iniziare ad aggiungere spazio di scambio, sarebbe una buona idea controllare se lo spazio di scambio è già disponibile nel tuo sistema.
Puoi verificarlo con il comando gratuito in Linux. Nel mio caso, il mio Dell XPS ha 14 GB di swap.
free -h
total used free shared buff/cache available
Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G
Swap: 14G 0B 14G
Il comando free ti dà la dimensione dello spazio di swap ma non ti dice se si tratta di una vera partizione di swap o di un file di swap. Il comando swapon è migliore in questo senso.
swapon --show
NAME TYPE SIZE USED PRIO
/dev/nvme0n1p4 partition 14.9G 0B -2
Come puoi vedere, ho 14,9 GB di spazio di swap ed è su una partizione separata. Se fosse stato un file di scambio, il tipo sarebbe stato file invece di partizione.
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -2
Se non hai uno spazio di scambio sul tuo sistema, dovrebbe mostrare qualcosa del genere:
free -h
total used free shared buff/cache available
Mem: 7.5G 4.1G 267M 971M 3.1G 2.2G
Swap: 0B 0B 0B
Il comando swapon non mostrerà alcun output.
Crea file di scambio su Linux
Se il tuo sistema non ha spazio di scambio o se pensi che lo spazio di scambio non sia abbastanza adeguato, puoi creare un file di scambio su Linux. Puoi anche creare più file di scambio.
Vediamo come creare file di scambio su Linux. Sto usando Ubuntu 18.04 in questo tutorial ma dovrebbe funzionare anche su altre distribuzioni Linux.
Fase 1:crea un nuovo file di scambio
Per prima cosa, crea un file con la dimensione dello spazio di scambio che desideri. Diciamo che voglio aggiungere 1 GB di spazio di swap al mio sistema. Usa il comando fallocate per creare un file di dimensioni 1 GB.
sudo fallocate -l 1G /swapfile
Si consiglia di consentire solo a root di leggere e scrivere nel file di scambio. Vedrai anche avvisi come "autorizzazioni non sicure 0644, 0600 suggerite" quando proverai a utilizzare questo file per l'area di scambio.
sudo chmod 600 /swapfile
Tieni presente che il nome del file di scambio potrebbe essere qualsiasi cosa. Se hai bisogno di più spazi di scambio, puoi assegnargli un nome appropriato come swap_file_1, swap_file_2 ecc. È solo un file con una dimensione predefinita.
Fase 2:contrassegna il nuovo file come spazio di scambio
È necessario dire al sistema Linux che questo file verrà utilizzato come spazio di scambio. Puoi farlo con lo strumento mkswap.
sudo mkswap /swapfile
Dovresti vedere un output come questo:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=7e1faacb-ea93-4c49-a53d-fb40f3ce016a
Fase 3:abilita il file di scambio
Ora il tuo sistema sa che il file swapfile può essere usato come spazio di swap. Ma non è ancora finito. È necessario abilitare il file di scambio in modo che il sistema possa iniziare a utilizzare questo file come scambio.
sudo swapon /swapfile
Ora se controlli lo spazio di scambio, dovresti vedere che il tuo sistema Linux lo riconosce e lo usa come area di scambio:
swapon --show
NAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
Fase 4:rendi permanenti le modifiche
Qualunque cosa tu abbia fatto finora è temporanea. Riavvia il sistema e tutte le modifiche scompariranno.
Puoi rendere permanenti le modifiche aggiungendo il file di scambio appena creato al file /etc/fstab.
È sempre una buona idea eseguire un backup prima di apportare modifiche al file /etc/fstab.
sudo cp /etc/fstab /etc/fstab.back
Ora puoi aggiungere la seguente riga alla fine del file /etc/fstab:
/swapfile none swap sw 0 0
Puoi farlo manualmente usando un editor di testo a riga di comando o semplicemente usando il seguente comando:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Ora hai tutto a posto. Il tuo file di scambio verrà utilizzato anche dopo aver riavviato il tuo sistema Linux.
Regola lo scambio
I parametri swappiness determinano la frequenza con cui deve essere utilizzato lo spazio di scambio. Il valore di swappiness è compreso tra 0 e 100. Un valore più alto significa che lo spazio di swap verrà utilizzato più frequentemente.
Lo swappiness predefinito nel desktop di Ubuntu è 60 mentre nel server è 1. Puoi controllare lo swappiness con il seguente comando:
cat /proc/sys/vm/swappiness
Perché i server dovrebbero utilizzare un basso swappiness? Poiché lo scambio è più lento della RAM e per prestazioni migliori, la RAM dovrebbe essere utilizzata il più possibile. Sui server, il fattore di prestazione è cruciale e quindi lo swappinness è il più basso possibile.
Puoi cambiare lo swappiness al volo usando il seguente comando systemd:
sudo sysctl vm.swappiness=25
Questo cambiamento è solo temporaneo però. Se vuoi renderlo permanente, puoi modificare il file /etc/sysctl.conf e aggiungere il valore swappiness alla fine del file:
vm.swappiness=25
Ridimensionamento dello spazio di swap su Linux
Ci sono un paio di modi per ridimensionare lo spazio di swap su Linux. Ma prima di vederlo, dovresti imparare alcune cose al riguardo.
Quando chiedi al tuo sistema di smettere di usare un file di scambio per l'area di scambio, trasferisce tutti i dati (pagine per essere precisi) alla RAM. Quindi dovresti avere abbastanza RAM libera prima di effettuare lo scambio.
Questo è il motivo per cui è buona norma creare e abilitare un altro file di scambio temporaneo. In questo modo, quando si sostituisce l'area di scambio originale, il sistema utilizzerà il file di scambio temporaneo. Ora puoi ridimensionare lo spazio di scambio originale. Puoi rimuovere manualmente il file di scambio temporaneo o lasciarlo così com'è e verrà automaticamente eliminato al prossimo avvio.
Se hai abbastanza RAM libera o se hai creato uno spazio di swap temporaneo, sostituisci il tuo file originale.
sudo swapoff /swapfile
Ora puoi usare il comando fallocate per cambiare la dimensione del file. Diciamo che lo modifichi a 2 GB di dimensione:
sudo fallocate -l 2G /swapfile
Ora contrassegna nuovamente il file come spazio di scambio:
sudo mkswap /swapfile
E riattiva lo scambio:
sudo swapon /swapfile
Puoi anche scegliere di avere più file di scambio contemporaneamente.
Rimozione del file di scambio in Linux
Potresti avere le tue ragioni per non usare il file di scambio su Linux. Se vuoi rimuoverlo, il processo è simile a quello che hai appena visto ridimensionando lo scambio.
Innanzitutto, assicurati di avere abbastanza RAM libera. Ora sostituisci il file:
sudo swapoff /swapfile
Il passaggio successivo consiste nel rimuovere la rispettiva voce dal file /etc/fstab.
E alla fine, puoi rimuovere il file per liberare spazio:
sudo rm /swapfile
Scambia?
Penso che ora tu abbia una buona comprensione del concetto di file di scambio in Linux. Ora puoi facilmente creare file di scambio o ridimensionarli secondo le tue necessità.
Se hai qualcosa da aggiungere su questo argomento o se hai dei dubbi, lascia un commento qui sotto.