Come aumentare le dimensioni dello swap?


17

Di recente ho inserito più RAM nel mio server e ora ho un totale di 24 GB di RAM. Inizialmente, ho impostato il sistema operativo per avere una dimensione di scambio di 2 GB.

/dev/sdc1               1         281     2257101   82  Linux swap / Solaris
/dev/sdc2   *         282       60801   486126900   83  Linux

2 GB sono attualmente allocati per lo scambio, ma leggere attorno sembra che non sia molto. Per un sistema con 24 GB, sto pensando di allocare almeno 10 GB di swap.

Le mie domande sono: posso farlo mentre il sistema operativo è in esecuzione? Devo reinstallare? Sto usando OpenSuse 11.3

Risposte:


23

Hai deciso di creare una partizione di swap separata al momento dell'installazione. Non puoi ridimensionarlo online - anche un ridimensionamento offline richiederà molto tempo e rischierà potenzialmente di danneggiare il tuo filesystem successivo su / dev / sdc2.

L'opzione più semplice per ovviare a questo è creare una nuova partizione di swap su un disco diverso che non si utilizza attualmente (o che può permettersi di offline per il ricondizionamento) o semplicemente utilizzare un file di scambio all'interno di un filesystem esistente (che viene fornito con alcune penalità minori dovute al sovraccarico del filesystem ).

La procedura generale per aggiungere una partizione / file di scambio:

  • creare una nuova partizione di tipo 82h o un nuovo file da 8 GB utilizzando dd if=/dev/zero of=/swapfile bs=1M count=8192
  • inizializzalo usando mkswap /swapfileomkswap /dev/sdXX
  • utilizzare swapon /swapfileoswapon /dev/sdXX rispettivamente per abilitare il nuovo spazio di swap al volo
  • aggiungi una voce a / etc / fstab per assicurarti che il tuo nuovo spazio di swap venga attivato al riavvio

La tua attuale partizione di swap rimane in uso, potresti voler sbarazzartene per motivi di riduzione della complessità. Basta usare swapoff /dev/sdc1per disabilitarne l'utilizzo per il momento e rimuovere il riferimento in/etc/fstab


@ synticon-dj grazie. i dati sul disco in cui lo swap è cruciale e ho un altro disco che posso usare. Pensi che l'impostazione di un disco diverso in quanto lo scambio influirà sulle prestazioni? Dovrò scambiare / dev / sdc1?
x-man

Lo influenzerà in un modo o nell'altro - se / dev / sdc2 sta vedendo molto uso, questo I / O compete con l'I / O di scambio. Se aggiungi la partizione di un altro disco come swap, aggiungi semplicemente il carico I / O di swap a questo disco. Ciò che sarà utile per le prestazioni di scambio, è inevitabilmente dannoso per gli altri I / O sul disco interessato. Detto questo, nulla è male per le prestazioni del tuo sistema come un elevato numero di richieste di pageout / pagein. In questo caso, correggilo aggiungendo memoria o riducendo il footprint di memoria del sistema.
the-wabbit

avere due dispositivi di scambio su diversi mandrini ti aiuterà a migliorare le tue prestazioni di scambio (poiché ci sono due dischi che possono essere indirizzati contemporaneamente invece di uno solo da cui leggere e scrivere). Ma poiché non dovresti vedere attività di I / O elevate dovute comunque allo scambio, potresti preferire l'uso di un solo dispositivo / partizione / file per facilitare l'amministrazione
the-wabbit

1
Nota che un file di scambio non funzionerà se utilizzi un BtrFS. Due soluzioni alternative sono (1) creare un dispositivo di loopback o (2) utilizzare btrfs-swapon .
Diagon,

@ the-wabbit Come si crea effettivamente la /etc/fstabvoce per assicurarsi che il nuovo swap venga attivato al riavvio?
SIGSTACKFAULT,

3

Avresti bisogno di scambiare in questo caso? Non so che cosa hai in esecuzione sul tuo sistema di sistema, ma provo ad avere abbastanza memoria nei miei server per evitare lo scambio completamente ... (ce l'ho, ma solo come fail-safe, se il mio server inizia a scambiare, compro più memoria ...)


Sono dalla tua parte qui, lo swap viene principalmente utilizzato per prevenire arresti anomali in caso di esaurimento della memoria (volatile) e non appena inizi a colpire i piatti il ​​tuo server sta subendo un I / O di successo e / o una banda in modo saggio, anche se gli SSD possono aiutare sono almeno 10 volte più lenti della RAM, che al giorno d'oggi è davvero economica. I prezzi di DDR3 ECC 1333MHz sono circa $ 1000 per 64 GB (8x8 GB)
Shadok

2

Devi ripartizionare il disco. Se ricordo bene di muovere l'inizio della partizione Linux non è supportato in parted ma puoi ridurre anche il tuo filesystem e partizione linux e poi fare un altro scambio alla fine del tuo disco. Non puoi farlo mentre il sistema è online.

La soluzione alternativa consiste nell'utilizzare un file di grandi dimensioni come swap. (Non so se è una buona idea al giorno d'oggi.)


Non tutti i filesystem possono essere ridotti, anche offline. Sfortunatamente, ciò influisce su scelte popolari come XFS ( xfs.org/index.php/Shrinking_Support ).
Sven

@Stone significa reinstallare il sistema operativo?
x-man

No. Significa fare backup :), avviare un LiveCD, ridurre il filesystem linux quindi la partizione sdc2 e fare un nuovo scambio alla fine del disco e riavviare il sistema.
Pietra

0

1 Disattiva tutti i processi di scambio

sudo swapoff -a

2 Ridimensiona lo scambio

sudo dd if=/dev/zero of=/swapfile bs=1G count=8

if = input file
of = output file
bs = block size
count = multiplier of blocks

3 Rendi il file utilizzabile come swap

sudo mkswap /swapfile

4 Attivare il file di scambio

sudo swapon /swapfile

5 Controllare la quantità di swap disponibile

grep SwapTotal /proc/meminfo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.