Come aggiungere lo swap in Ubuntu 14.04

Introduzione

Uno dei modi più semplici per aumentare la reattività del vostro server ed evitare errori di memoria nelle vostre applicazioni è quello di aggiungere un po’ di spazio swap. Lo swap è un’area nel disco rigido designata come spazio dove il sistema operativo può temporaneamente memorizzare dati che non può più mantenere nella RAM.

Fondamentalmente, questo vi dà la possibilità di espandere la quantità di informazioni che il vostro server può trattenere nella sua “memoria” disponibile, con qualche limitazione. Lo spazio nel disco rigido verrà usato principalmente quando lo spazio nella RAM non è più sufficiente per gestire i dati.

Le informazioni scritte sul disco verranno lette più lentamente delle informazioni mantenute nella RAM, ma il sistema operativo preferirà mantenere i dati delle applicazioni in memoria e usare lo swap per i “dati più vecchi”.  Generalmente, avere uno spazio di swap quale rimedio all’esaurimento della RAM del vostro sistema è un buon aiuto.

In questa guida vedremo come creare ed abilitare un file di swap in un server Ubuntu 14.04.

Nota

Sebbene sia comunemente raccomandato per i sistemi aventi il tradizionale disco rigido, utilizzare lo swap con gli SSD col tempo può causare problemi di deterioramento dell’hardware. Per questo motivo non raccomandiamo di abilitare lo swap su DigitalOcean o da altri provider che utilizzano gli SSD. Fare ciò può influire sull’affidabilità dell’hardware sottostante [l’SSD, NdT] per voi e per gli altri utenti della VPS. Se avete bisogno di aumentare le prestazioni del vostro server raccomandiamo di aggiornare la vostra Droplet [la VPS di DigitalOcean, NdT]. Questo vi porterà mediamente a risultati migliori e diminuirà la probabilità di contribuire ai problemi hardware che possono influenzare il vostro servizio.

 

Controllare la presenza dello swap nel sistema

Prima di iniziare, diamo un’occhiata al nostro sistema operativo per vedere se è già disponibile spazio per lo swap. Possiamo avere diversi file di swap o partizioni di swap, ma solitamente una dovrebbe bastare.

Per scoprire se il sistema ha qualche swap configurato eseguiamo:

sudo swapon -s
Filename                Type        Size    Used    Priority

Se vengono mostrate solamente le intestazioni della tabella come riportato qui sopra, significa che non avete nessuno swap abilitato.

Un altro più noto metodo per verificare la presenza dello swap è usare il comando free, che ci mostra l’utilizzo di memoria del sistema. È possibile visualizzare il nostro attuale uso di memoria e di swap in MegaByte eseguendo:

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        154       3799          0          8         83
-/+ buffers/cache:         62       3890
Swap:            0          0          0

Come potete notare qui sopra il nostro spazio swap nel sistema è “0”. Questo corrisponde al risultato ottenuto con il precedente comando.

Verificare lo spazio disponibile nella partizione del disco rigido

Il modo tipico per allocare spazio swap è quello di usare una partizione separata dedicata a tale funzione. Tuttavia, modificare lo schema di partizionamento non è sempre possibile. Possiamo creare facilmente un file di swap all’interno di una partizione esistente.

Prima di procedere, dobbiamo essere a conoscenza dell’attuale uso del disco. Possiamo farlo eseguendo:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         59G  1.3G   55G   3% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            2.0G   12K  2.0G   1% /dev
tmpfs           396M  312K  396M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            2.0G     0  2.0G   0% /run/shm
none            100M     0  100M   0% /run/user

Come potete vedere nella prima linea, la nostra partizione ha 55 Gigabyte disponibili, quindi abbiamo molto spazio a disposizione. Questo è di una nuova VPS di medie dimensioni, ma il vostro spazio disponibile potrebbe essere molto differente.

Nonostante ci siano molte opinioni riguardo la corretta dimensione dello spazio di swap, dipende molto dalle vostre personali preferenze e dai requisiti delle vostre applicazioni. Generalmente, un valore uguale o doppio rispetto alla RAM è un buon inizio.

Siccome il mio sistema ha 4 Gigabytes di RAM e raddoppiarlo significherebbe occupare una quantità di spazio che non sono disposto a dare, creerò uno spazio swap di 4 Gigabyte, uguale alla RAM del mio sistema.

 

Creare un file di swap

Ora che siamo a conoscenza dello spazio disponibile sul nostro disco possiamo creare un file di swap all’interno del nostro filesystem.

Nella nostra root directory (/) andremo a creare un file chiamato swapfile. Il file deve occupare la quantità di spazio che desideriamo per il nostro file di swap. Ci sono due modi per farlo:

Il metodo tradizionale, lento

Solitamente, vorremmo creare un file con dello spazio preallocato usando il comando dd. Questa versatile funzione consente di scrivere da una destinazione ad un’altra.

Possiamo utilizzarla per scrivere nel file degli zero tramite una speciale directory che nei sistemi Linux è posizionata su /dev/zero che va a scrivere la quantità di zeri richiesta.

Specifichiamo la dimensione del file usando in combinazione il parametro per limitarne la misura bs e count per il numeri di blocchi. Quello che indichiamo per ogni parametro è quasi del tutto arbitrario. L’importante è il risultato ottenuto moltiplicandoli.

Per esempio, nel nostro caso abbiamo bisogno di creare un file di 4 Gigabyte. Possiamo farlo impostando 1 Gigabyte come dimensione e 4 come numero di blocchi.

sudo dd if=/dev/zero of=/swapfile bs=1G count=4
4+0 records in
4+0 records out
4294967296 bytes (4.3 GB) copied, 18.6227 s, 231 MB/s

Controllate di aver impostato correttamente il comando prima di premere INVIO, perché se avete indicato erroneamente il parametro of (la destinazione del file), questo può causare una perdita di dati.

Possiamo vedere i 4 Gigabyte allocati digitando:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:15 /swapfile

Se avete eseguito correttamento il comando qui sopra noterete che per completare l’operazione è necessario attendere qualche istante. Infatti, come potete vedere nell’output, il mio sistema ha impiegato 18 secondi per creare il file. Questo perché ha dovuto scrivere nel disco 4 Gigabyte di zero.

Se volete imparare a creare il file più velocemente, rimuovete il file e seguite le istruzioni qui sotto:

sudo rm /swapfile

Il metodo più rapido

Il modo più veloce per ottenere lo stesso file è quello di utilizzare il programma fallocate. Questo comando crea un file di spazio preallocato instantaneamente, senza la necessità di indicare ulteriori informazioni.

Possiamo creare un file di 4 Gigabyte eseguendo:

sudo fallocate -l 4G /swapfile

L’operazione terminerà quasi immediatamente. Verifichiamo la corretta assegnazione dello spazio digitando:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Apr 28 17:19 /swapfile

Come potete vedere il nostro file è stato creato con la giusta dimensione.

Abilitare il file di swap

Ora il nostro file è creato, ma il nostro sistema non lo riconosce come swap. Abbiamo la necessità di formattare il file come swap e quindi di abilitarlo.

Prima di procedere però abbiamo bisogno di modificare i permessi del nostro file in modo che non sia leggibile da nessuno ad eccezione dell’utente root. Dare ad altri utenti i permessi di lettura e scrittura del file comporterebbe un rischio per la sicurezza. Limitiamo quindi i permessi eseguendo:

sudo chmod 600 /swapfile

Verifichiamo la validità dei permessi digitando:

ls -lh /swapfile
-rw------- 1 root root 4.0G Apr 28 17:19 /swapfile

Come potete notare i permessi di scrittura e lettura sono abilitati solo per l’utente root.

Dopo aver reso più sicuro il file possiamo far configurare lo spazio di swap al sistema eseguendo:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=e2f1e9cf-c0a9-4ed4-b8ab-714b8a7d6944

Ora il nostro file è pronto per essere usato come spazio di swap. Possiamo abilitarlo usando:

sudo swapon /swapfile

Possiamo assicurarci che la procedura sia andata a buon fine controllando se ora il nostro sistema rileva lo spazio di swap:

sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        4194300 0       -1

Ora abbiamo un nuovo file di swap. Possiamo nuovamente usare il comando free per avere conferma delle nostre conclusioni:

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        101       3851          0          5         30
-/+ buffers/cache:         66       3887
Swap:         4095          0       4095

Il nostro swap è stato configurato correttamente e il nostro sistema operativo lo userà quando necessario.

Rendere permanente il file di swap

Abbiamo abilitato il nostro file di swap ma, al riavvio, il server non lo abilita automaticamente. Possiamo però risolvere modificando il file fstab.

Modificate il file nel vostro editor di testo con i permessi di root attivi:

sudo nano /etc/fstab

Dovete aggiungere una linea di testo in fondo al file per fare in modo che il sistema operativo usi il file da voi creato:

/swapfile   none    swap    sw    0   0

Quando avete fatto salvate e chiudete il file.

Ottimizzare le impostazioni di swap

Esistono diverse opzioni configurabili che influiranno sulle prestazioni del vostro sistema operativo quando utilizza lo swap.

Il parametro swappiness imposta la frequenza con cui il vostro sistema trasferisce i dati dalla RAM allo spazio di swap. È un valore in percentuale configurabile da 0 a 100.

Con valori vicini allo zero il kernel non trasferirà dati sul disco a meno che non sia realmente necessario. Ricordate, le interazioni con il file di swap sono “pesanti” in quanto richiedono più tempo di quelle attraverso la RAM e possono quindi causare un notevole calo di prestazioni. Impostare il sistema in modo che non si affidi molto allo swap rende generalmente il vostro sistema più veloce.

Valori vicini al 100 porteranno a mantenere più dati nello swap nel tentativo di liberare spazio RAM. In alcuni casi, a seconda della gestione di memoria delle vostre applicazioni o per le esigenze del vostro server, questo può portare a un risultato migliore.

Per visualizzare l’attuale valore di swappiness digitiamo:

cat /proc/sys/vm/swappiness
60

Per un sistema Desktop un valore swappiness di 60 non è male. Per una VPS è probabile preferirlo vicino allo 0.

Possiamo modificare il valore di swappiness utilizando il comando sysctl.

Per esempio, per impostare il valore a 10 scriviamo:

sudo sysctl vm.swappiness=10
vm.swappiness = 10

Questo cambiamento verrà mantenuto fino al prossimo riavvio. Per fare in modo che il valore sia automaticamente attivo all’avvio aggiungiamo la linea nel nostro file /etc/sysctl.conf:

sudo nano /etc/sysctl.conf

In fondo aggiungete:

vm.swappiness=10

Una volta fatto salvate e chiudete.

Un altro valore che potrebbe interessarvi modificare è vfs_cache_pressure. Questa impostazione modifica quante informazioni inode e dentry il sistema mantiene nella cache rispetto ad altri dati.

In sostanza, si tratta di dati di accesso per il filesystem. Questi dati sono richiesti molto frequentemente ed in linea generale è costoso andarli a recuperare, quindi per il sistema è buona cosa utilizzare la cache. Potete visualizzare l’attuale valore digitando:

cat /proc/sys/vm/vfs_cache_pressure
100

Nel modo in cui è attualmente configurato, il nostro sistema rimuove le informazioni inode dalla cache troppo velocemente. Possiamo impostare un valore più contenitivo come 50 digitando:

sudo sysctl vm.vfs_cache_pressure=50
vm.vfs_cache_pressure = 50

Questo è valido solo per la nostra sessione attuale. Possiamo modificarlo aggiungendolo al nostro file di configurazione come abbiamo fatto per il parametro swappiness:

sudo nano /etc/sysctl.conf

Alla fine del file inserite il nuovo valore:

vm.vfs_cache_pressure = 50

Dopodiché salvate e chiudete.

Conclusioni

Seguire i passaggi di questa guida vi permetterà di avere più disponibilità nell’uso della RAM. Lo spazio di swap è incredibilmente utile per evitare alcuni problemi comuni.

Se vi capita di riscontrare errori OOM (out of memory) o se ritenete che il vostro sistema non sia in grado di gestire le applicazioni di cui avete bisogno, la soluzione migliore è ottimizzare le configurazioni delle vostre applicazioni o aggiornare il vostro server. Ad ogni modo, configurare lo spazio di swap può darvi più flessibilità e vi permette di ridurre i tempi in un server poco performante.

Autore: Justin Ellingwood

Traduzione di Zantx dell’articolo: https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04 Copyright © 2016 DigitalOcean™ Inc.

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *