Wie erhöht man den Swap Space?

128

Ich habe standardmäßig 250 MB Swap-Speicher in Ubuntu, und ich möchte es auf eine größere Größe erweitern. Ich benötige 800 MB, was meiner Meinung nach ausreichen wird, um mehrere Anwendungen zu öffnen, ohne das derzeitige Swap-Limit zu überschreiten. Ich hoffe mir kann jemand helfen.

Bruno
quelle
2
Bitte öffne Gparted und poste einen Screenshot von dem, was du hier siehst.
Aaron Hill
Wenn Ihre Auslagerungspartition in angrenzenden nicht zugewiesenen Speicherbereich erweitert werden kann, verwenden Sie gparted. Wenn ein solcher Speicherplatz nicht verfügbar ist, weil möglicherweise Ihre aktive (gebootete) Partition den gesamten Nicht-Auslagerungsspeicherplatz verwendet, gpartedkönnen Sie die Größe der aktiven Partition nicht verringern, um nicht zugewiesenen Speicherplatz zu erstellen. In diesem Fall können Sie Ubuntu erneut installieren, um einen größeren Swap-Bereich zu schaffen.
H2ONaCl

Antworten:

172

Sie können jederzeit eine Auslagerungsdatei erstellen

um mehr Swap-Platz hinzuzufügen. Dies ist (in jeder Hinsicht) nicht dasselbe wie eine Swap-Partition, aber es wird einfach und dynamisch sein.

Ändern Sie /media/fasthdd/swapfile.img, was Sie möchten, zum Beispiel kann es /swap.imgauch sein. /media/fasthdd/swapfile.imgIst nur ein Beispieldateiname. Wenn Sie diesen verwenden, muss natürlich ein Verzeichnis /media/fasthdd/mit genügend freiem Speicherplatz für Ihre neue Auslagerungsdatei vorhanden sein.

Verwenden Sie eine Terminalanwendung, um Befehle auszuführen. Alle Befehle sollten mit Root-Rechten ausgeführt werden. Dazu können Sie entweder sudoam Anfang eines jeden Befehls hinzufügen oder sie ausführen, sudo bashbevor Sie Befehle ausführen.

1. Leere Datei erstellen:
Diese Datei enthält den Inhalt des virtuellen Speichers. Machen Sie die Datei also groß genug für Ihre Anforderungen. Dieser erstellt eine 1-GB-Datei, was + 1-GB-Auslagerungsspeicher für Ihr System bedeutet:

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

Wenn Sie eine 3Gb-Datei erstellen möchten, ändern Sie den Zählwert in count=3M. Siehe man ddfür weitere Informationen.

2. Auslagerungsdatei backen: Mit dem
folgenden Befehl wird "Auslagerungsdateisystem" in Ihrer neuen Auslagerungsdatei erstellt.

mkswap /media/fasthdd/swapfile.img

3. Beim Booten starten:
Um sicherzustellen, dass der neue Auslagerungsspeicher beim Booten des Computers aktiviert wird, sollten Sie ihn zur Konfigurationsdatei des Dateisystems hinzufügen /etc/fstab. Fügen Sie es zum Ende der Datei hinzu. Dies wird empfohlen, da andere Dateisysteme ( mindestens eines, das Auslagerungsdateien enthält ) im Lese- / Schreibmodus bereitgestellt werden müssen, bevor auf Dateien zugegriffen werden kann.

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

4. Aktivieren:
Sie können entweder Ihren Computer neu starten oder eine neue Auslagerungsdatei mit folgendem Befehl von Hand aktivieren:

swapon /media/fasthdd/swapfile.img


Wenn alles gut geht

Sie sollten feststellen, dass mehr Auslagerungsspeicher zur Verfügung steht. Mit den folgenden Befehlen können Sie Ihren neuen Swap überprüfen und bestätigen, dass er aktiv ist:

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
Sampo Sarrala
quelle
5
Zum Bearbeiten /etc/fstabversuchen Sie sudo gedit /etc/fstab
Ben
Das hat mir sehr geholfen, vielen Dank, Sir.
Rika
Wie deaktiviere ich die neu erstellte Auslagerungsdatei?
Rika
1
habe es geschafft!
Rika
2
Verwenden Sie den Befehl "swapon -s", um den Status und nicht "cat / proc / swaps" anzuzeigen. dann gibt der Befehl "free" auch Informationen zur Auslagerungsnutzung aus.
Paul M
40

GUI-Methode zur Vergrößerung der Swap-Partition

Eine andere Möglichkeit, die Auslagerungsgröße zu erhöhen, ist die Verwendung des GParted-Partitionseditors . Kurz gesagt, Sie ändern die Größe der Swap-Partition, klicken mit der rechten Maustaste darauf und wählen "Swapon".

Es ist einfacher, gparted-live-disk oder eine Ubuntu-Live-Disk zu booten (damit alle /dev/sdaPartitionen nicht gemountet werden). Wenn Sie Ubuntu Live Disk ausführen, müssen Sie gparted installieren, indem Sie die folgenden Befehle ausführen:

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

Sie müssen in der Lage sein, die Größe der Auslagerungspartition nur zu erhöhen, wenn vor oder nach der Auslagerungspartition nicht zugeordneter Speicherplatz vorhanden ist. Wenn es unter oder über der Swap-Partition keinen nicht zugewiesenen Speicherplatz gab (den Speicherplatz, den wir mit der Swap-Partition hinzufügen möchten), müssen wir die Größe der Partitionen ändern und den nicht zugewiesenen Speicherplatz abrufen.

Fall 1 - Nicht zugewiesener Speicherplatz vor oder nach der Auslagerungspartition

GParted-Partitionen

Im obigen Screenshot hatte ich 11,4 GB nicht zugewiesenen Speicherplatz vor dem Linux-Swap und 12,8 GB nach der Swap-Partition.

  • Um die Größe zu ändern, klicken Sie mit der rechten Maustaste auf die Swap-Partition (/ dev / sda9 hier) und klicken Sie auf die Option Größe ändern / verschieben. Es wird so aussehen:

    Bildbeschreibung hier eingeben

  • Ziehen Sie die Schiebereglerpfeile nach links oder rechts und klicken Sie dann auf die Schaltfläche Größe ändern / verschieben. Die Größe Ihrer Swap-Partition wird geändert.


Fall 2 - Nicht zugewiesener Speicherplatz befindet sich zwischen den Partitionen

Bildbeschreibung hier eingeben

Im obigen Screenshot befand sich der nicht zugewiesene Speicherplatz, den wir der Swap-Partition hinzufügen möchten, zwischen dev/sda7und /dev/sda8.

  • Klicken Sie mit der rechten Maustaste auf die Partition / dev / sda8 und wählen Sie die Option Größe ändern / verschieben .

    Bildbeschreibung hier eingeben

  • Klicken Sie und bewegen Sie den Schieberegler ganz nach links, damit der nicht zugewiesene Speicherplatz, der sich direkt über der /dev/sda8Partition befand, darunter /dev/sda8liegt. Klicken Sie anschließend auf die Schaltfläche Größe ändern / verschieben.

  • Und jetzt befand sich der nicht zugewiesene Speicherplatz direkt über der Swap-Partition, die Fall 1 entsprach. Folgen Sie nun Fall 1.


Fall 3 - wenn der nicht zugewiesene Speicherplatz außerhalb der erweiterten Partition vorhanden war)

Bildbeschreibung hier eingeben

Ich hatte einen nicht zugewiesenen Speicherplatz von 18 GB direkt unterhalb der erweiterten Partition. Um diesen Speicherplatz der Linux-Swap-Partition (die innerhalb der erweiterten Partition vorhanden war) hinzuzufügen, müssen wir die folgenden Schritte ausführen:

  • Klicken Sie mit der rechten Maustaste auf die erweiterte Partition und wählen Sie die Option Größe ändern / verschieben. Der folgende Screenshot ist zu sehen

    Bildbeschreibung hier eingeben

  • Klicken und ziehen Sie den Pfeil ganz nach rechts und klicken Sie auf Größe ändern / verschieben , damit der nicht zugewiesene Speicherplatz von 18 GB am unteren Rand der erweiterten Partition angezeigt wird. Ich hatte bereits 14,80 GB nicht zugewiesenen Speicherplatz am unteren Rand und jetzt 18,34 GB In Kombination mit GB entsteht am unteren Rand der erweiterten Partition ein nicht zugewiesener Speicherplatz von (18,34 + 14,80 GB).

  • Jetzt gab es einen nicht zugewiesenen Speicherplatz direkt unterhalb der Swap-Partition. Dies ist wie in Fall 1 und folgt dann Fall 1.

HINWEIS: Vergessen Sie nicht, alle wichtigen Daten zu sichern, bevor Sie mit den obigen Vorgängen fortfahren.

Avinash Raj
quelle
2
Großartiger Leitfaden für GUI-Tools, verdient ++ wie es ist. Möglicherweise sollte jedoch eine Warnung bezüglich möglicher Risiken bei der Partitionsbearbeitung angezeigt werden. Eine einfache MBR-Backup-Anleitung oder ein Link zu einer solchen Anleitung wäre eine großartige Ergänzung. Fehler sind möglicherweise unwahrscheinlich, aber die Kosten könnten hoch sein. Die Durchführung von MBR-Backups beansprucht weder zu viel Zeit noch Platz und spart viel Arbeit, Platz und Zeit, wenn sie richtig ausgeführt werden.
Sampo Sarrala
2
Vergessen Sie nicht zu tauschen, klicken Sie mit der rechten Maustaste auf die Swap-Partition und tauschen Sie
user3752281
30

Sie können auch verwenden, fallocatewenn Sie Speicherplatz für Ihre Auslagerungsdatei reservieren möchten, ohne die Datei mit 0 bis zu füllen dd.

Von der manSeite:

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.

Wenn Sie bereits ein swapProfil definiert haben, können Sie es entweder entfernen oder behalten, und Ihr * nix verwaltet es (noch besser, indem Sie eine swaponPriorität definieren). Dies kann nützlich sein, wenn Sie den Swap zwischen verschiedenen Geräten und Laufwerken aufteilen möchten (basierend auf deren Geschwindigkeit oder anderen benutzerdefinierten Anforderungen, siehe Was ist der Zweck mehrerer Swap-Dateien in StackExchange? ).

Einfache fallocateVerwendung zum Hinzufügen einer zweiten Auslagerungsdatei

Überprüfen Sie die Swap-Situation:

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

Erstellen Sie eine 4G-Auslagerungsdatei

Standardmethode zum Erstellen und Aktivieren einer Auslagerungsdatei.

$ 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

Machen Sie Ihren Tausch dauerhaft

Fügen Sie eine Zeile in Ihre /etc/fstabDatei ein, damit der Swap beim nächsten Neustart initialisiert wird (wir aktualisieren hier auch die Priorität des neu erstellten Swap Space und die Priorität der alten Swap-Datei).

Beachten Sie, dass in Ihrer Datei / etc / fstab die Priorität des vorherigen Austauschs jetzt 10 ist.

/swapfile    none    swap    sw,pri=10      0       0
/swapfile_4G.img     none    swap    sw,pri=20      0       0

Überprüfen Sie die Auslagerungssituation nach dem Neustart:

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

Entfernen Sie einen der Swap Space (zum Beispiel die ursprüngliche 256 MB)

Bearbeiten /etc/fstab

Entfernen Sie die Zeile, die sich auf den Swap bezieht, den Sie entfernen möchten.

Löschen Sie diesen Swap

Löschen und entfernen Sie die Auslagerungsdatei.

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

Ressourcen:

Jean-Christophe Meillaud
quelle
3
1-up für fallocate, viel besser als ddwenn dein fs es unterstützt. Diese Einzeiler fühlen sich immer noch schwer zu lesen an. Könnte es einfacher sein, sie zu studieren, wenn sie in tatsächliche Befehle zerlegt würden?
Sampo Sarrala
3
Dies ist ein Beispiel für eine perfekte Antwort, sehr einfach zu verstehen, sehr einfach zu implementieren. Es funktionierte wie ein Zauber in Ubuntu 18
Damián Rafael Lattenero
7

In meinem Fall hatte ich bereits eine Auslagerungsdatei, die ich für 1 GB hielt, aber bei genauerer Betrachtung war sie nur 256 MB groß, und beim Vorkompilieren meiner Rails-Assets ging dem Server der Speicher aus

Errno::ENOMEM: Cannot allocate memory - nodejs

Ich habe meine Auslagerungsdatei wie hier beschrieben erstellt: https://stackoverflow.com/a/34885004/784318

Nun /swapfilelautet die Zeile, die eine leere Datei erstellt, wie folgt:

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

Um die Größe der Auslagerungsdatei zu ändern, musste ich die folgenden einfachen Schritte ausführen:

# 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

Die Datei wurde erstellt (536870912/1024/1024 = 512 MB):

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

Mit dem free -mBefehl konnte ich sehen, dass die Datei jetzt wie erwartet 512 MB groß ist:

Besi
quelle
Sie sollten nicht das gefährliche Flag -r mit dem Befehl rm zum Entfernen einer einzelnen Datei verwenden. rm -f sollte mehr als genug sein.
Sampo Sarrala
1
@SampoSarrala Danke für die Hinweise, ich habe das Skript entsprechend geändert.
Besi
@Besi Danke! Genau das brauche ich, um die Auslagerungsdatei auf meinem Ubuntu 18.04 LTS-System zu vergrößern. Es hat genau so funktioniert, wie Sie es geschrieben haben. Hervorragende Hilfe !!!
B-radical
Diese Lösung gefällt mir, weil sie über die Befehlszeile ausgeführt wird, keine erneute Partitionierung erfordert und erklärt, was zu tun ist, wenn bereits eine Auslagerungsdatei vorhanden ist.
cxrodgers
3

So fügen Sie eine Auslagerungsdatei hinzu

  1. Erstelle eine IMG-Datei

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

hinweis !: bs = 1M count = 1000 ==> 1GB

(bs * count = Größe in Megabyte)

anderes Beispiel:

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

  1. Format .img Datei

    sudo mkswap /swap.img

  2. Swap-Datei aktivieren

    sudo swapon /swap.img

  3. füge die Auslagerungsdatei zu fstab hinzu

füge diese Zeile zu deiner fstab hinzu (/ etc / fstab)

/swap.img   none            swap    sw              0       0
Jona
quelle
Ich setze normalerweise ein Label auf Swap, zB "mkswap -L SWAP2".
Paul M
Hinweis: Dies ist die gleiche Antwort wie die von Sampo Sarria akzeptierte / am besten bewertete, jedoch mit weniger Kontext und dem Swap-Img, das
steel
0

Ändern Sie die Größe auf 8 GB

# Turn swap off
# This moves stuff in swap to the main memory and might take several minutes
sudo swapoff -a

# Create an empty swapfile
# Note that "1G" is basically just the unit and count is an integer.
# Together, they define the size. In this case 8GB.
sudo dd if=/dev/zero of=/swapfile bs=1G count=8

sudo mkswap /swapfile  # Set up a Linux swap area
sudo swapon /swapfile  # Turn the swap on

Überprüfen Sie, ob es funktioniert hat

grep Swap /proc/meminfo
Martin Thoma
quelle