Aggiungere la memoria di swap su Centos 7

Introduzione

Uno dei modi più semplici per rendere il server più reattivo e proteggere dagli errori di memoria fuori dall’applicazione è aggiungere un certo spazio di swap. Lo swap è un’area su un’unità di archiviazione in cui il sistema operativo può memorizzare temporaneamente i dati che non possono più essere in memoria.

Questo ti dà la possibilità di aumentare la quantità di informazioni che il tuo server può mantenere nella sua memoria di lavoro, con alcuni avvertimenti. La lettura e la scrittura per lo scambio sono più bassi che l’utilizzo della memoria, ma può fornire una buona rete di sicurezza per quando il server è basso nella memoria.

Senza scambio, un server che esaurisce la memoria può iniziare ad uccidere applicazioni per liberare la memoria o addirittura a bloccarsi. Ciò può causare perdere dati non salvati o perdere tempo di inattività. Per garantire l’accesso affidabile ai dati, alcune applicazioni richiedono la funzionalità di swap.

In questa guida verranno illustrati come creare e abilitare un file di scambio in un server CentOS 7.

Prerequisiti

Prima di iniziare con questa guida, ci sono pochi passaggi che devono essere completati per la prima volta.

Avrete bisogno di un server CentOS 7 installato e configurato con un utente non radice che dispone di sudoprivilegi.

Una volta che si dispone del proprio utente non radice, è possibile utilizzarlo in SSH nel server CentOS e continuare con l’installazione del file di swap.

Controllare le informazioni di sistema per lo scambio

Prima di iniziare, dovremmo dare un’occhiata all’archivio del nostro server per vedere se disponiamo già di uno spazio di swap disponibile. Mentre possiamo avere più file di swap o partizioni swap, bisogna generalmente bastare.

Possiamo vedere se il sistema dispone di uno swap configurato utilizzando swaponun utilità di scambio generale. Con la -sbandiera, swaponverrà visualizzato un riepilogo dell’uso e della disponibilità di swap sul nostro dispositivo di memorizzazione:

swapon -s

Se il comando non restituisce nulla, il riepilogo è vuoto e non esiste alcun file di scambio.

Un altro modo per controllare lo spazio di swap è con l’ freeutilità, che ci mostra l’utilizzo complessivo della memoria del sistema. Possiamo vedere la nostra attuale memoria e l’utilizzo di swap (in megabyte) digitando:

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
Swap:            0          0       4095

Come potete vedere, lo spazio di swap totale nel sistema è 0. Questo corrisponde a quello che abbiamo visto swapon.

Controllare lo spazio di archiviazione disponibile

Il modo tipico di allocare lo spazio per il swap è quello di utilizzare una partizione separata dedicata all’attività. Tuttavia, l’alterazione dello schema di partizione non è sempre possibile a causa di vincoli hardware o software. Fortunatamente, possiamo creare facilmente un file di scambio che risiede in una partizione esistente.

Prima di fare questo, dobbiamo essere consapevoli del nostro utilizzo corrente del drive. Possiamo ottenere queste informazioni digitando:

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        59G  1.5G   55G   3% /
devtmpfs        2.0G     0  2.0G   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           2.0G  8.3M  2.0G   1% /run
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup

Nota: la -hbandiera indica semplicemente dhl’output delle informazioni sull’unità in un formato di lettura umana. Ad esempio, invece di fornire il numero totale di blocchi di memoria in una partizione, df -hci dirà l’utilizzo e la disponibilità dello spazio in M ​​(per megabyte) o G (per gigabyte).

Come potete vedere nella prima riga, la nostra partizione di archiviazione dispone di 59 gigabyte disponibili, quindi abbiamo un bel po ‘di spazio per lavorare. Tieni presente che si tratta di un’istanza di VPS fresca e media, in modo che l’utilizzo effettivo potrebbe essere molto diverso.

Anche se ci sono molte opinioni circa la dimensione appropriata di uno spazio di swap, dipende in realtà dai requisiti applicativi e dalle tue preferenze personali. Generalmente, un importo uguale o doppio della quantità di memoria del sistema è un buon punto di partenza.

Dal momento che il mio sistema dispone di 4 gigabyte di memoria, e raddoppiando che richiederebbe un pezzo più grande del mio spazio di archiviazione rispetto a quello che voglio fare, creerò uno spazio di scambio di 4 gigabyte per corrispondere alla memoria del mio sistema.

Creare un file di scambio

Ora che conosciamo il nostro spazio di archiviazione disponibile, possiamo andare a creare un file di scambio all’interno del nostro filesystem. Creeremo un file chiamato swapfilenella /directory root ( ), sebbene tu possa nominare il file qualcos’altro se preferisci. Il file deve allocare la quantità di spazio che vogliamo per il nostro file di scambio.

Il modo più veloce e semplice per creare un file di scambio è quello di utilizzare fallocate. Questo comando crea istantaneamente un file di una dimensione preallocata. Possiamo creare un file da 4 gigabyte digitando:

sudo fallocate -l 4G /swapfile

Dopo aver immesso la tua password per autorizzare i sudoprivilegi, il file di swap verrà creato quasi immediatamente e il prompt verrà restituito. Possiamo verificare che la quantità corretta di spazio sia riservata al swap utilizzando ls:

ls -lh /swapfile
-rw-r--r-- 1 root root 4.0G Oct 30 11:00 /swapfile

Come potete vedere, il nostro file di scambio è stato creato con la giusta quantità di spazio messo da parte.

Attiva un file di scambio

Adesso, il nostro file viene creato, ma il nostro sistema non sa che questo dovrebbe essere utilizzato per il swap. Dobbiamo dire al nostro sistema di formattare questo file come swap e quindi abilitarlo.

Prima di farlo, dovremmo modificare le autorizzazioni del nostro file di swap in modo che non sia leggibile da nessuno oltre all’account root. Permettere ad altri utenti di leggere o scrivere in questo file sarebbe un enorme rischio di sicurezza. Possiamo bloccare i permessi con chmod:

sudo chmod 600 /swapfile

Ciò limita le autorizzazioni di lettura e scrittura solo all’account di root. Possiamo verificare che il file di swap abbia le autorizzazioni corrette utilizzando di ls -lhnuovo:

ls -lh /swapfile
-rw------- 1 root root 4.0G Oct 30 11:00 /swapfile

Ora che il nostro file di swap è più sicuro, possiamo dire al nostro sistema di impostare lo spazio di swap da utilizzare digitando:

sudo mkswap /swapfile
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=b99230bb-21af-47bc-8c37-de41129c39bf

Il nostro file di swap è ora pronto per essere utilizzato come spazio di swap. Possiamo cominciare ad usarlo digitando:

sudo swapon /swapfile

Per verificare che la procedura sia riuscita, possiamo verificare se il nostro sistema ora riporta lo spazio di swap:

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

Questa uscita conferma che abbiamo un nuovo file di swap. Possiamo utilizzare freenuovamente l’ utilità per corroborare i nostri risultati:

free -m
             total       used       free     shared    buffers     cached
Mem:          3953        315       3637          8         11        107
-/+ buffers/cache:        196       3756
Swap:         4095          0       4095

Il nostro swap è stato impostato con successo e il nostro sistema operativo comincerà ad usarlo se necessario.

Rendere permanente il file di scambio

Il nostro file di swap è attivo al momento, ma quando riavviamo, il server non abilita automaticamente il file da utilizzare. Possiamo modificarla modificando il fstabfile, che è una tabella che gestisce i filesystem e le partizioni.

Modificare il file con sudoprivilegi nell’editor di testo:

sudo nano /etc/fstab

Nella parte inferiore del file, è necessario aggiungere una riga che indicherà al sistema operativo di utilizzare automaticamente il file di swap creato:

/swapfile   swap    swap    sw  0   0

Quando hai finito di aggiungere la riga, puoi salvare e chiudere il file. Il server verificherà questo file ad ogni avvio, quindi il file di swap sarà pronto per l’uso da adesso.

Tweak le impostazioni di swap (opzionale)

Ci sono alcune opzioni che puoi configurare che avranno un impatto sulle prestazioni del tuo sistema quando si tratta di swap. Queste configurazioni sono facoltative nella maggior parte dei casi e le modifiche apportate dipendono dalle esigenze dell’applicazione e dalle preferenze personali.

swappiness

Il swappinessparametro determina quanto spesso il sistema scambia dati dalla memoria allo spazio di swap. Questo è un valore compreso tra 0 e 100 che rappresenta la percentuale di utilizzo della memoria che innesca l’utilizzo dello swap.

Con valori vicini a zero, il sistema non scambia i dati sull’unità a meno che non sia assolutamente necessario. Ricorda che le interazioni con il file di scambio sono “costose” in quanto sono molto più lente delle interazioni con la memoria e questa differenza nella velocità di lettura e scrittura può causare una notevole riduzione delle prestazioni di un’applicazione. Spiegare al sistema di non fare affidamento sullo swap tanto quanto generalmente renderà il sistema più veloce.

I valori che sono più vicini a 100 cercheranno di mettere più dati in swap nel tentativo di mantenere più memoria libera. A seconda del profilo di memoria delle applicazioni o di quello che utilizzi il server, potrebbe essere la scelta migliore in alcuni casi.

Possiamo vedere il valore swappiness corrente leggendo il swappinessfile di configurazione:

cat /proc/sys/vm/swappiness
30

CentOS 7 imposta un valore di swappiness di 30, che è un mezzo ideale per la maggior parte dei desktop e dei server locali. Per un sistema VPS, probabilmente vogliamo spostarlo più vicino a 0.

Possiamo impostare la swappiness ad un valore diverso utilizzando il sysctlcomando. Ad esempio, per impostare la swappiness su 10, è possibile digitare:

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

Questa impostazione persisterà fino al successivo riavvio. Per rendere persistente l’impostazione tra i riavvoti, possiamo aggiungere la linea inviata al nostro sysctlfile di configurazione:

sudo nano /etc/sysctl.conf

Aggiungere la tua impostazione di swappiness alla parte inferiore del file:

vm.swappiness = 10

Quando hai finito di aggiungere la riga, puoi salvare e chiudere il file. Il server installa automaticamente la swappiness al valore dichiarato in ogni avvio.

Pressione cache

Un altro valore correlato che si desidera modificare è il vfs_cache_pressure. Questa impostazione influisce sulla memorizzazione di voci di metadati speciali del filesystem. Leggendo e rinfrescando costantemente queste informazioni sono generalmente molto costose, quindi la memorizzazione nella cache per più tempo è eccellente per le prestazioni del sistema.

È possibile visualizzare il valore corrente di questa pressione di cache richiamando procnuovamente il filesystem:

cat /proc/sys/vm/vfs_cache_pressure
100

Come è attualmente configurato, il nostro sistema elimina troppo in fretta le informazioni inode dalla cache. Possiamo impostare questa impostazione in un ambiente più conservatore, come 50, utilizzando sysctl:

sudo sysctl vm.vfs_cache_pressure=50
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

Nella parte inferiore, aggiungere la riga che specifica il nuovo valore:

vm.vfs_cache_pressure = 50

Quando hai finito di aggiungere la riga, puoi salvare e chiudere il file. Il server imposta automaticamente la pressione della cache al valore dichiarato in ogni avvio.

Conclusione

Seguendo i passaggi riportati in questa guida, avrai dato al tuo server una stanza di respirazione in termini di utilizzo della memoria. Lo spazio di swap è incredibilmente utile per evitare alcuni problemi comuni.

Se si esegue errori OOM (fuori memoria) o se si accorge che il sistema non è in grado di utilizzare le applicazioni necessarie, la soluzione migliore è ottimizzare le configurazioni dell’applicazione o aggiornare il server. Tuttavia, la configurazione dello spazio di swap può darti maggiore flessibilità e può aiutare a comprare tempo su un server meno potente.

Commenti (0)
Aggiungi un commento