Come aumentare lo spazio di swap?

104

Ho, per impostazione predefinita, 250 MB di spazio di swap in Ubuntu, e voglio estenderlo a una dimensione più grande. Ho bisogno di 800 MB, che penso sarà sufficiente per aprire diverse applicazioni senza dover raggiungere l'attuale limite di swap. Spero che qualcuno possa aiutarmi.

    
posta Bruno 21.08.2012 - 22:20

5 risposte

138

Puoi sempre creare il file di scambio

per aggiungere più spazio di swap. Questo non è lo stesso (in ogni aspetto) come partizione di swap, ma sarà facile e dinamico.

Modifica /media/fasthdd/swapfile.img in qualsiasi cosa tu voglia, per esempio può anche essere /swap.img . /media/fasthdd/swapfile.img è solo un esempio di nomefile, se stai usando questo, ovviamente ci deve essere la directory /media/fasthdd/ con abbastanza spazio libero per il tuo nuovo file di scambio.

Utilizzare una qualsiasi delle applicazioni terminali per eseguire comandi. Tutti i comandi devono essere eseguiti con con privilegi di root , per fare questo puoi aggiungere sudo all'inizio di ogni comando o eseguire sudo bash prima di eseguire i comandi.

1. Crea file vuoto:
Questo file conterrà contenuti di memoria virtuale in modo da rendere il file abbastanza grande per le tue esigenze. Questo creerà un file da 1 Gb che significa + 1 Gb di spazio di swap per il tuo sistema:

dd if=/dev/zero of=/media/fasthdd/swapfile.img bs=1024 count=1M

Se vuoi creare un file 3Gb, modifica il valore del conteggio in count=3M . Vedere man dd per ulteriori informazioni.

2. Bake swap file:
Il seguente comando renderà "swap filesystem" all'interno del tuo nuovo file di scambio.

mkswap /media/fasthdd/swapfile.img

3. Aggiungi all'avvio:
Per assicurarti che il tuo nuovo spazio di swap sia attivato durante l'avvio del computer, devi aggiungerlo al file di configurazione del file system /etc/fstab . Aggiungilo alla fine del file, questo è raccomandato perché altri filesystem ( almeno uno che contiene il file di swap ) devono essere montati in modalità lettura-scrittura prima di poter accedere a qualsiasi file.

# Add this line to /etc/fstab
/media/fasthdd/swapfile.img swap swap sw 0 0

4. Attiva:
Puoi riavviare il computer o attivare manualmente il nuovo file di scambio con il seguente comando:

swapon /media/fasthdd/swapfile.img

Se tutto va bene

dovresti vedere che più spazio di swap è disponibile per l'uso. Puoi utilizzare i seguenti comandi per controllare il tuo nuovo scambio e confermare che è attivo:

cat /proc/swaps
  Filename                           Type       Size    Used    Priority
  /media/fasthdd/swapfile.img        file       8388604 2724    -1

grep 'Swap' /proc/meminfo
  SwapCached:         4772 kB
  SwapTotal:       8388604 kB
  SwapFree:        8355812 kB
    
risposta data Sampo Sarrala 21.08.2012 - 22:59
30

Metodo GUI per aumentare la dimensione della partizione di swap

Un altro modo per aumentare la dimensione dello scambio è utilizzare Editor partizione GPart . In breve, ridimensiona la partizione di swap, quindi fai clic destro su di essa e scegli "Swapon".

È più facile avviare gparted-live-disk o un disco live di Ubuntu (in modo che tutte le partizioni /dev/sda vengano smontate). Se esegui il disco live di Ubuntu, devi installare gparted eseguendo i comandi seguenti:

sudo apt-get update
sudo apt-get install gparted && sudo gparted

Devi essere in grado di aumentare la dimensione della partizione di swap solo se c'è uno spazio non allocato presente prima o dopo la partizione di swap. Se non ci fosse spazio non allocato (lo spazio che stiamo cercando di aggiungere con la partizione di swap) al di sotto o al di sopra della partizione di swap, allora dobbiamo ridimensionare le partizioni e ottenere quello spazio non allocato.

Caso 1: spazio non allocato presente prima o dopo la partizione di swap

Nell'immagine sopra, avevo 11,4 GB di spazio non allocato prima di linux-swap e 12,8 GB dopo la partizione di swap.

  • Per ridimensionare, fare clic con il tasto destro sulla partizione di swap (/ dev / sda9 qui) e fare clic sull'opzione Ridimensiona / Sposta. Sembrerà così:

  • Trascinando le frecce del cursore a sinistra o a destra, quindi fai clic sul pulsante Ridimensiona / Sposta. La tua partizione di swap verrà ridimensionata.

Caso 2: lo spazio non allocato si trova tra le partizioni

Nello screenshot qui sopra, lo spazio non allocato che vogliamo aggiungere alla partizione di swap era tra dev/sda7 e /dev/sda8 . Per spostare lo spazio non allocato da quello a appena sopra la partizione di swap, dobbiamo seguire i semplici passaggi indicato di seguito,

  • Fai clic con il tasto destro sulla partizione / dev / sda8 e fai clic sull'opzione Ridimensiona / Sposta .

  • fai clic e sposta il dispositivo di scorrimento all'estrema sinistra, in modo che lo spazio non allocato che era appena sopra la partizione /dev/sda8 sia inferiore a /dev/sda8 . Dopo aver fatto clic sul pulsante Ridimensiona / Sposta.

  • E ora lo spazio non allocato era appena sopra alla partizione di swap che era come Caso 1 . Ora segui il Caso 1.

Caso 3 - se lo spazio non allocato era presente all'esterno della partizione estesa)

Avevo uno spazio non allocato di 18 GB appena sotto alla partizione estesa . Per aggiungere questo spazio alla partizione linux-swap (che era presente nella partizione estesa), dobbiamo seguire il sotto i passaggi,

  • Fai clic con il tasto destro sulla partizione estesa e seleziona l'opzione Ridimensiona / Sposta , sarà come lo screenshot di sotto

  • Fai clic e trascina la freccia all'estrema destra e fai clic su Ridimensiona / Sposta , in modo che spazio non allocato di 18 GB arriverà in fondo alla partizione estesa. Avevo uno spazio non allocato di 14,80 GB già presente nella parte inferiore e ora il 18,34 GB si combina con quello per creare spazio non allocato di (18,34 + 14,80 GB) nella parte inferiore di la partizione estesa.

  • Ora c'era uno spazio non allocato appena sotto alla partizione di swap, sarà come Caso 1 , quindi seguirà il caso 1.

NOTA: non dimenticare di fare il backup di tutti i tuoi dati importanti prima di procedere con le operazioni di cui sopra.

    
risposta data Avinash Raj 11.12.2013 - 07:11
19

Puoi anche utilizzare fallocate se vuoi riservare spazio per il tuo file di scambio, senza la necessità di riempire il file da 0 a dd .

dalla pagina MAN :

DESCRIPTION
   fallocate  is  used  to preallocate blocks to a file.  For filesystems which support the fallocate system call, this is done quickly by
   allocating blocks and marking them as uninitialized, requiring no IO to the data blocks.  This is much faster than creating a  file  by
   filling it with zeros.

Se hai già definito un swap , puoi rimuoverlo o tenerlo, e * nix lo gestirà (ancora meglio definendo una priorità swapon ). Questo potrebbe essere utile, nel caso in cui tu voglia diffondere il tuo scambio tra dispositivi diversi, guidare (in base alla loro velocità o ad altre esigenze personalizzate, vedi Qual è lo scopo di più file di scambio su StackExchange ).

Uso semplice fallocate per l'aggiunta di un secondo file di scambio

Verifica situazione swap:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        262140  246276  -1

Crea un file di scambio 4G

Modo standard per creare e attivare un file di scambio.

$ size="4G" && file_swap=/swapfile_$size.img && sudo touch $file_swap && sudo fallocate -l $size /$file_swap && sudo mkswap /$file_swap && sudo swapon -p 20 /$file_swap

Rendi permanente il tuo swap

Aggiungi una riga nel tuo file /etc/fstab in modo che lo swap venga inizializzato al prossimo riavvio (aggiorniamo anche qui la priorità dello spazio di swap appena creato e aggiorniamo la priorità del vecchio file di scambio

# in your /ets/fstab file
/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Verifica la situazione dello swap dopo il riavvio:

$ sudo swapon  -s
Filename       Type     Size        Used    Priority
/swapfile      file     262140      0       10
/swapfile_4G.img       file     4194300     0       20

Rimuovi uno spazio di swap (ad esempio il 256Mb originale)

Modifica /etc/fstab

Rimuovi la linea relativa allo scambio che vuoi rimuovere

Elimina lo scambio

Elimina e rimuovi il file di scambio.

sudo swapoff /mnt/swapfile && sudo rm /mnt/swapfile

Risorse:

risposta data Jean-Christophe Meillaud 09.10.2014 - 15:24
3

Nel mio caso avevo già un file di scambio che pensavo fosse 1GB, ma quando l'ho guardato più da vicino era grande solo 256 MB e quando precompilavo i miei binari il server avrebbe esaurito la memoria

Errno::ENOMEM: Cannot allocate memory - nodejs

Ho creato il mio file di scambio come descritto qui: link

Ora la riga che crea un file vuoto chiamato /swapfile è la seguente:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

Ora per ridimensionare lo swapfile ho dovuto fare questi semplici passaggi:

# Reboot the system to be able to switch swapping off
sudo reboot

# Turn swap off
sudo swapoff -a

# Delete the '/swapfile'
rm -f /swapfile

# Recreate the swapfile but with double file size memory
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

# Turn swap back on
sudo swapon -s

# Change the permission to non-world-readable
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

# Use the swap file
sudo mkswap /swapfile
sudo swapon /swapfile

Il file è stato creato (536870912/1024/1024 = 512 MB):

ls -lia /swapfile 
768 -rw------- 1 root root 536870912 Apr 27 07:54 /swapfile

Usando il comando free -m ho potuto vedere che il file ora è 512 MB come previsto:

    
risposta data Besi 27.04.2016 - 14:03
1

come aggiungere un file di scambio

  1. creat .img file

    sudo dd if = / dev / zero di = / swap.img bs = 1M count = 1000

note !: bs = 1M count = 1000 == & gt; 1GB

(bs * count = dimensione in megabyte)

altro esempio:

sudo dd if = / dev / zero di = / swap.img bs = 10M count = 100

  1. formattare il file .img

    sudo mkswap /swap.img

  2. attiva il file di scambio

    sudo swapon /swap.img

  3. aggiungi il file di scambio a fstab

aggiungi questa linea al tuo fstab (/ etc / fstab)

/swap.img   none            swap    sw              0       0
    
risposta data Jonas 03.10.2015 - 13:13

Leggi altre domande sui tag