Come aggiungere spazio di swap su Ubuntu 18.04

author
7 minutes, 55 seconds Read

Una versione precedente di questo tutorial è stata scritta da Justin Ellingwood

Introduzione

Uno dei modi più semplici per proteggersi dagli errori di out-of-memory nelle applicazioni è quello di aggiungere dello spazio di swap al vostro server. In questa guida, spiegheremo come aggiungere un file di swap a un server Ubuntu 18.04.

Attenzione: Anche se lo swap è generalmente raccomandato per sistemi che utilizzano dischi rigidi tradizionali, l’uso di swap con SSD può causare problemi di degrado dell’hardware nel tempo. A causa di questa considerazione, non consigliamo di abilitare lo swap su DigitalOcean o su qualsiasi altro provider che utilizza lo storage SSD. Farlo può avere un impatto sull’affidabilità dell’hardware sottostante per voi e per i vostri vicini. Questa guida è fornita come riferimento per gli utenti che possono avere sistemi a disco rotante altrove.

Se avete bisogno di migliorare le prestazioni del vostro server su DigitalOcean, si consiglia di aggiornare il vostro Droplet. Questo porterà a risultati migliori in generale e diminuirà la probabilità di contribuire a problemi hardware che possono influenzare il tuo servizio.

Che cos’è lo Swap?

Lo Swap è un’area su un disco rigido che è stata designata come un posto dove il sistema operativo può memorizzare temporaneamente i dati che non può più tenere nella RAM. Fondamentalmente, questo vi dà la possibilità di aumentare la quantità di informazioni che il vostro server può tenere nella sua “memoria” di lavoro, con alcune avvertenze. Lo spazio di swap sul disco rigido sarà utilizzato principalmente quando non c’è più spazio sufficiente nella RAM per contenere i dati delle applicazioni in uso.

Le informazioni scritte su disco saranno significativamente più lente delle informazioni conservate nella RAM, ma il sistema operativo preferirà mantenere i dati delle applicazioni in esecuzione in memoria e utilizzare lo swap per i dati più vecchi. Nel complesso, avere spazio di swap come ripiego per quando la RAM del sistema è esaurita può essere una buona rete di sicurezza contro le eccezioni di out-of-memory su sistemi con memoria non SSD disponibile.

Passo 1 – Controllare il sistema per informazioni di swap

Prima di iniziare, possiamo controllare se il sistema ha già dello spazio di swap disponibile. È possibile avere più file di swap o partizioni di swap, ma generalmente uno dovrebbe essere sufficiente.

Possiamo vedere se il sistema ha dello swap configurato digitando:

  • sudo swapon --show

Se non si ottiene alcun risultato, significa che il sistema non ha spazio di swap disponibile al momento.

Puoi verificare che non ci sia uno swap attivo usando l’utilità free:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 222M 680K 678M 721MSwap: 0B 0B 0B

Come puoi vedere nella riga Swap dell’output, nessun swap è attivo sul sistema.

Passo 2 – Controllare lo spazio disponibile sulla partizione del disco rigido

Prima di creare il nostro file di swap, controlleremo il nostro utilizzo attuale del disco per essere sicuri di avere abbastanza spazio. Fatelo inserendo:

  • df -h
Output
Filesystem Size Used Avail Use% Mounted onudev 481M 0 481M 0% /devtmpfs 99M 656K 98M 1% /run/dev/vda1 25G 1.4G 23G 6% /tmpfs 493M 0 493M 0% /dev/shmtmpfs 5.0M 0 5.0M 0% /run/locktmpfs 493M 0 493M 0% /sys/fs/cgroup/dev/vda15 105M 3.4M 102M 4% /boot/efitmpfs 99M 0 99M 0% /run/user/1000

Il dispositivo con / nella colonna Mounted on è il nostro disco in questo caso. Abbiamo molto spazio disponibile in questo esempio (solo 1,4G usato). Il tuo utilizzo sarà probabilmente diverso.

Anche se ci sono molte opinioni sulla dimensione appropriata di uno spazio di swap, dipende davvero dalle tue preferenze personali e dai requisiti della tua applicazione. Generalmente, una quantità pari o doppia alla quantità di RAM sul vostro sistema è un buon punto di partenza. Un’altra buona regola empirica è che qualsiasi cosa oltre i 4G di swap è probabilmente inutile se la stai usando solo come ripiego per la RAM.

Fase 3 – Creare un file di swap

Ora che conosciamo lo spazio disponibile sul disco rigido, possiamo creare un file di swap sul nostro filesystem. Alloccheremo un file della dimensione di swap che vogliamo chiamato swapfile nella nostra directory root (/).

Il modo migliore per creare un file di swap è con il programma fallocate. Questo comando crea istantaneamente un file della dimensione specificata.

Siccome il server nel nostro esempio ha 1G di RAM, creeremo un file da 1G in questa guida. Regola questo per soddisfare le esigenze del tuo server:

  • sudo fallocate -l 1G /swapfile

Possiamo verificare che la corretta quantità di spazio è stata riservata digitando:

  • ls -lh /swapfile
  • -rw-r--r-- 1 root root 1.0G Apr 25 11:14 /swapfile

Il nostro file è stato creato con la corretta quantità di spazio messo da parte.

Passo 4 – Abilitare il file di swap

Ora che abbiamo un file della dimensione corretta disponibile, dobbiamo effettivamente trasformarlo in spazio di swap.

Prima di tutto, dobbiamo bloccare i permessi del file in modo che solo gli utenti con privilegi di root possano leggerne il contenuto. Questo impedisce agli utenti normali di essere in grado di accedere al file, il che avrebbe implicazioni significative per la sicurezza.

Rendere il file accessibile solo a root digitando:

  • sudo chmod 600 /swapfile

Verificare il cambiamento dei permessi digitando:

  • ls -lh /swapfile
Output
-rw------- 1 root root 1.0G Apr 25 11:14 /swapfile

Come potete vedere, solo l’utente root ha i flag di lettura e scrittura abilitati.

Possiamo ora marcare il file come spazio di swap digitando:

  • sudo mkswap /swapfile
Output
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Dopo aver marcato il file, possiamo abilitare il file di swap, permettendo al nostro sistema di iniziare ad utilizzarlo:

  • sudo swapon /swapfile

Verificare che lo swap sia disponibile digitando:

  • sudo swapon --show
Output
NAME TYPE SIZE USED PRIO/swapfile file 1024M 0B -2

Possiamo controllare di nuovo l’output dell’utilità free per confermare le nostre scoperte:

  • free -h
Output
total used free shared buff/cache availableMem: 985M 84M 220M 680K 680M 722MSwap: 1.0G 0B 1.0G

Il nostro swap è stato impostato con successo e il nostro sistema operativo inizierà a usarlo come necessario.

Passo 5 – Rendere il file di swap permanente

I nostri recenti cambiamenti hanno abilitato il file di swap per la sessione corrente. Tuttavia, se riavviamo, il server non manterrà automaticamente le impostazioni di swap. Possiamo cambiare questo aggiungendo il file di swap al nostro file /etc/fstab.

Fate un backup del file /etc/fstab nel caso qualcosa vada storto:

  • sudo cp /etc/fstab /etc/fstab.bak

Aggiungi le informazioni del file di swap alla fine del tuo file /etc/fstab digitando:

  • echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Prossimo vedremo alcune impostazioni che possiamo aggiornare per regolare il nostro spazio di swap.

Step 6 – Messa a punto delle impostazioni di swap

Ci sono alcune opzioni che puoi configurare che avranno un impatto sulle prestazioni del tuo sistema quando si tratta di swap.

Regolazione della proprietà Swappiness

Il parametro swappiness configura quanto spesso il tuo sistema scambia dati dalla RAM allo spazio swap. Questo è un valore tra 0 e 100 che rappresenta una percentuale.

Con valori vicini allo zero, il kernel non scambierà dati sul disco a meno che non sia assolutamente necessario. Ricordate, le interazioni con il file di swap sono “costose” nel senso che richiedono molto più tempo delle interazioni con la RAM e possono causare una significativa riduzione delle prestazioni. Dire al sistema di non fare molto affidamento sullo swap generalmente renderà il vostro sistema più veloce.

Valori che sono più vicini a 100 cercheranno di mettere più dati nello swap nel tentativo di mantenere più spazio libero nella RAM. A seconda del profilo di memoria delle vostre applicazioni o per cosa state usando il vostro server, questo potrebbe essere meglio in alcuni casi.

Possiamo vedere il valore corrente di swappiness digitando:

  • cat /proc/sys/vm/swappiness
Output
60

Per un desktop, un’impostazione di swappiness di 60 non è un cattivo valore. Per un server, potresti volerlo spostare più vicino a 0.

Possiamo impostare lo swappiness su un valore diverso usando il comando sysctl.

Per esempio, per impostare lo swappiness a 10, potremmo scrivere:

  • sudo sysctl vm.swappiness=10
Output
vm.swappiness = 10

Questa impostazione persisterà fino al prossimo riavvio. Possiamo impostare questo valore automaticamente al riavvio aggiungendo la linea al nostro file /etc/sysctl.conf:

  • sudo nano /etc/sysctl.conf

In fondo, puoi aggiungere:

/etc/sysctl.conf
vm.swappiness=10

Salva e chiudi il file quando hai finito.

Regolazione della pressione della cache

Un altro valore relativo che potresti voler modificare è il vfs_cache_pressure. Questa impostazione configura quanto il sistema sceglierà di mettere in cache le informazioni di inode e dentry rispetto ad altri dati.

Fondamentalmente, questi sono dati di accesso al filesystem. Questo è generalmente molto costoso da cercare e richiesto molto frequentemente, quindi è un’ottima cosa per il vostro sistema da mettere in cache. Puoi vedere il valore attuale interrogando di nuovo il filesystem proc:

  • cat /proc/sys/vm/vfs_cache_pressure
Output
100

Come è configurato attualmente, il nostro sistema rimuove le informazioni sugli inode dalla cache troppo velocemente. Possiamo impostarlo su un’impostazione più conservativa come 50 digitando:

  • sudo sysctl vm.vfs_cache_pressure=50
Output
vm.vfs_cache_pressure = 50

Ancora una volta, questo è valido solo per la nostra sessione corrente. Possiamo cambiarlo aggiungendolo al nostro file di configurazione come abbiamo fatto con la nostra impostazione di swappiness:

  • sudo nano /etc/sysctl.conf

In fondo, aggiungere la linea che specifica il nuovo valore:

/etc/sysctl.conf
vm.vfs_cache_pressure=50

Salva e chiudi il file quando hai finito.

Conclusione

Seguire i passi di questa guida ti darà un po’ di respiro in casi che altrimenti porterebbero ad eccezioni di out-of-memory. Lo spazio di swap può essere incredibilmente utile per evitare alcuni di questi problemi comuni.

Se vi imbattete in errori OOM (out of memory), o se trovate che il vostro sistema non è in grado di utilizzare le applicazioni di cui avete bisogno, la soluzione migliore è quella di ottimizzare le configurazioni delle applicazioni o aggiornare il vostro server.

Similar Posts

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.