Come faccio ad aumentare le dimensioni del file di scambio senza rimuoverlo nel terminale?


59

C'è un modo per aumentare il mio "file di scambio" esistente senza doverlo distruggere e ricrearlo? Vorrei aumentare il mio spazio di scambio da 1 GB a 2 GB. Attualmente è impostato come tale:

$ sudo swapon -s
Filename                Type        Size    Used    Priority
/swapfile               file        1048572 736640  -1
$ ls -lh /swapfile
-rw------- 1 root root 1.0G Nov  9  2016 /swapfile

Sto usando Ubuntu 14.04.


Quanta RAM hai? 2G è abbastanza? Penso che dovrai swapoff, creare un nuovo / mkswapswapon -a
swapfile

1
Aggiungi un nuovo file di scambio, segui le istruzioni della domanda precedente. puoi avere 2 file di scambio;)
Ravexina,

1
@Ravexina, forse una domanda da principiante, ma perché dovrei aggiungere un nuovo file di scambio anziché aumentare le dimensioni di quello esistente? O non è possibile aumentare un file di scambio esistente?
Dave,

@Dave Anche questo è possibile, come forse saprai che possiamo swapoffallora dde mkswapfinalmente swapon. Pensavo non volessi toccare il tuo file.
Ravexina,

2
@Ravexina pubblica questo post come risposta
Sergiy Kolodyazhnyy,

Risposte:


67

Prima disabilita il file di scambio:

sudo swapoff /swapfile

Ora aumentiamo le dimensioni del file di scambio:

sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 oflag=append conv=notrunc

Il comando sopra aggiungerà 1GiB di zero byte alla fine del file di scambio.

Imposta il file come "file di scambio":

sudo mkswap /swapfile

abilita lo scambio:

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfileè probabilmente più sicuro di dd (anche se non mantiene il file di scambio originale) e ha anche bisogno di un sudo chmod 600 /swapfile.
heynnema,

7
@heynnema Non fallocatecrea file sparsi? La swaponmanpage dice che i file di scambio sparsi sono problematici (menzionando specificamente fallocate).
Muru,

3
@heynnema no, la mkswapmanpage dice anche che i file non devono contenere buchi.
Muru,

1
@muru suppongo che mi sbagli :-) Ogni volta che leggevo come creare un file / swap con l'inizio del 17.04 usavano fallocate. Immagino che dovremo semplicemente usare "disk destroyer"!
heynnema,

1
@heynnema: quello che potresti fare è usare fallocateper pre-allocare spazio su disco e poi usare ddper riempire i buchi con zeri.
David Foerster,

39

Dovresti aggiungere un nuovo file di scambio invece di ridimensionare quello esistente perché non ti costa nulla . Per ridimensionare un file di scambio, devi prima disabilitarlo, il che elimina i contenuti dello scambio in RAM, il che aumenta la pressione sulla RAM e può persino evocare il killer OOM (per non parlare del fatto che potresti avere il thrashing dei dischi per diversi minuti). I file di scambio multipli non sono un problema, è banalmente facile impostare un altro file di scambio. Non c'è letteralmente alcun vantaggio nel ridimensionare un file di scambio rispetto all'aggiunta di un altro.

dd if=/dev/zero of=/some/file count=1K bs=1M
mkswap /some/file
sudo chown root:root /some/file
sudo chmod 600 /some/file
sudo swapon /some/file

È sudo chmod 600 /some/filerichiesto o no?
heynnema,

1
E count=1Kdà un file 1G? il conteggio è in blocchi, sì? E quello può essere 512/4096? O la mia matematica è sbagliata?
heynnema,

3
+1 Questo approccio semplifica anche la disconnessione di uno dei file di scambio se in seguito si decide di ricorrere allo spazio su disco.
joeytwiddle,

2
Questo deve davvero essere contrassegnato come la risposta corretta. Wow, bravo!
Beshoy Girgis,

1
@muru supponiamo che sia una soluzione permanente? Ho eseguito questi comandi il 30 aprile, ma nel mese di maggio, il mio secondo file di scambio era sparito. Non ho cancellato ma era sparito
Christopher Rucinski

13

È possibile creare un altro file di scambio come ho fatto:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Verifica che funzioni con sudo swapon --show
    Per renderlo permanente aggiungi un file alla fstabdigitazione del file:
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Si noti che è fallocatenecessario utilizzare bit per creare il file, poiché crea un file sparce. vediman mkswap
Charles Green il

@CharlesGreen mi ha funzionato come ho scritto, quindi dovrebbe funzionare per quasi tutti.
borekon il

Suggerirei di leggere man mkswap, in particolare l'ultimo pargraph prima di "Environment"
Charles Green

1
ha lavorato su NanoPi Neo con Armbian v 5.65
BiTinerary il

5

Ho ottenuto buoni risultati sul mio Ubuntu 17.04 seguendo i consigli di Arian Acosta dal blogpost . Qui è possibile sostituire il 4G sudo fallocate -l 4G /swapfilecon qualsiasi quantità di gigabyte desiderata. Ad esempio sudo fallocate -l 2G /swapfileper TS.

In generale, la dimensione consigliata per un file di scambio è 2 volte la quantità di RAM, ma puoi renderla grande quanto ti serve. Ricorda che questo non è un sostituto della memoria perché le prestazioni sono molto peggiori poiché le cose sono memorizzate sul disco.

Ho creato un semplice script bash che incrementa il file di scambio a 4 GB e l'ho testato su Ubuntu 16.04.

Questo può essere eseguito riga per riga o uno script bash, ma lo uso per creare installazioni senza testa.

#!/bin/bash
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Turning Off Swap ======"
sudo swapoff /swapfile
echo "====== Allocating 4GB Swap ======"
sudo fallocate -l 4G /swapfile
echo "====== Making Swap ======"
sudo mkswap /swapfile
echo "====== Setting Permissions to Root Only  ======"
sudo chmod 600 /swapfile
echo "====== Turning On Swap ======"
sudo swapon /swapfile
echo "====== Current Swap ======"
sudo swapon -s
echo "====== Done! ======"

3
Avresti dovuto aggiungere un argomento allo script, che è la quantità di SWAP da aggiungere e infine aggiungerlo a fstab. Ma comunque mi piace
LnxSlck,

0

Risposta generale per "come ridimensionare il file di scambio":

Da Bogdan Cornianu, qui: https://bogdancornianu.com/change-swap-size-in-ubuntu/

[PREVENTIVO (QUASI VERBATIM, con solo alcune delle mie aggiunte di commenti) INIZIA]

Nel seguente esempio, estenderemo lo spazio di swap disponibile nel file / swap da 4 GiB a 8 GiB.

  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= file di input = file di
    ofoutput
    bs= dimensione del blocco; qui, 1Gsta per 1 gibibyte, o GB, che, secondo man ddè G = 1024 * 1024 * 1024 byte
    count= moltiplicatore di blocchi

  3. Rendi il file utilizzabile come swap

    sudo mkswap /swapfile
    
  4. Attiva il file di scambio

    sudo swapon /swapfile
    
  5. Controlla la quantità di swap disponibile

    grep SwapTotal /proc/meminfo
    

[FINE PREVENTIVO]

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.