Introduzione
In questo articolo, esamineremo come creare un file di scambio. Un file di scambio è utile nei casi in cui il server cloud non dispone di memoria sufficiente per eseguire le attività o i processi in esecuzione. Ciò può far sì che il tuo server inizi a terminare i processi per liberare memoria, alcuni dei quali potrebbero essere importanti come un database o un server web!
Un file di scambio può aiutarti a evitare questi problemi utilizzando lo spazio sul disco rigido come memoria virtuale quando la memoria normale non è immediatamente disponibile.
Aggiunta di un file di scambio su Ubuntu 20.04
Dobbiamo prima assicurarci che non ci sia alcun file di scambio corrente in uso. Il modo più semplice per determinarlo è eseguire il comando seguente:
free -m
Uscita:
total used free shared buffers cached Mem: 3834 3448 385 681 173 1424
L'output ci mostrerà quanta memoria ha il sistema e quanta, se presente, è stato configurato lo scambio. In questo caso, è stato appena eseguito il provisioning del server e non è stato configurato alcuno scambio.
Nel passaggio successivo, sceglieremo la quantità di spazio da allocare per lo scambio. Questo può essere ottenuto con il seguente comando:
dd if=/dev/zero of=/swapfile bs=1024 count=2048k
In questo esempio creeremo un file di scambio da 2 GB. Ci sono 1024 megabyte in 1 gigabyte, quindi per ottenere 2 GB utilizzerò 2048k come conteggio.
NOTA :Non dimenticare di includere la "k" alla fine, altrimenti creerai effettivamente un file di scambio da 2 megabyte! Questo perché la dimensione del byte viene moltiplicata per la quantità specificata nel blocco di conteggio.
Ora dobbiamo assegnare il file di scambio che abbiamo appena creato al sistema operativo:
mkswap /swapfile
mkswap /swapfile
Abilita il file di scambio e verifica che sia assegnato:
swapon /swapfile free -m
Uscita:
total used free shared buffers cached Mem: 3834 3448 385 681 173 1424 Swap: 2017 0 2017 The output of “free -m” should now show the amount you configured for swap. Next, we need to configure the system to enable the swap file every time the server boots. Otherwise, you would need to manually enable it every time you reboot the server using the “swapon /swapfile” command. To accomplish this we will need to edit the /etc/fstab file using a text editor of your choice. Add the following line to the end of the file:
/swapfile none swap sw 0 0
/swapfile nessuno scambia il software 0 0
Una volta completato, salva le modifiche e chiudi il file.
Al termine, dovrai comunque impostare lo "swappiness". Per impostazione predefinita, la maggior parte delle distribuzioni Linux ha lo swappiness predefinito a 60. Ciò significa che se viene utilizzato il 40% della RAM e il 60% è inutilizzato, verrà utilizzato il file di scambio. Poiché i nostri server cloud sono tutti su SSD, la nostra swappiness predefinita è impostata su 0. Ciò significa che se viene utilizzato il 100% di tutta la RAM, il file di scambio viene utilizzato e solo allora.
Esegui il comando:
nano /etc/sysctl.conf
Quindi cambia o aggiungi questa riga:
vm.swappiness = 10
Se hai bisogno di uno scambio leggermente più alto, puoi giocare con questo numero. Cerca di non superare 20 o 30. Ti consigliamo di impostare lo swappiness su un valore basso per diversi motivi. Il primo motivo per cui consigliamo un basso swappiness è che un utilizzo troppo aggressivo ridurrà la durata degli SSD. L'altro motivo è che se lo swappiness è impostato su un valore troppo alto, il sistema utilizza il file di scambio troppo spesso. Ciò può causare conflitti di input/output del sistema poiché il server è troppo occupato a scambiare elementi dentro e fuori dal file di scambio, piuttosto che utilizzare correttamente la RAM. A volte, questo può rallentare il server più della mancanza di RAM.
Quindi è necessario riavviare il file di scambio affinché abbia effetto con le nuove impostazioni. Puoi riavviare il server o eseguire:
swapoff -a
e
swapon -a
Questo è tutto! Ora hai un file di scambio persistente per il tuo server cloud.
*Nota:questi comandi funzioneranno anche in una distribuzione CentOS*