Wie kann ich die Swap-Datei vergrößern, ohne sie im Terminal zu entfernen?


59

Gibt es eine Möglichkeit, meine vorhandene "Swap-Datei" zu vergrößern, ohne sie zerstören und neu erstellen zu müssen? Ich möchte meinen Swap-Speicherplatz von 1 GB auf 2 GB aufrüsten. Derzeit ist es als solches eingerichtet:

$ 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

Ich benutze Ubuntu 14.04.


Wie viel RAM hast du? Ist 2G genug? Ich denke, dass Sie müssen swapoff, erstellen Sie eine neue / mkswapswapon -a
Swap-Datei

1
Fügen Sie eine neue Auslagerungsdatei hinzu, und befolgen Sie die Anweisungen in der obigen Frage. Sie können 2 Swap-Datei haben;)
Ravexina

1
@Ravexina, Eine neue Frage, aber warum sollte ich eine neue Auslagerungsdatei hinzufügen, anstatt die vorhandene zu vergrößern? Oder ist es nicht möglich, eine vorhandene Auslagerungsdatei zu vergrößern?
Dave

@ Dave Das ist auch möglich, wie du vielleicht weißt, können wir das swapoffdann ddund mkswapendlich swapon. Ich dachte du willst deine Akte nicht anfassen.
Ravexina

2
@Ravexina Post, die als Antwort
Sergiy Kolodyazhnyy

Antworten:


66

Deaktivieren Sie zuerst die Auslagerungsdatei:

sudo swapoff /swapfile

Erhöhen wir nun die Größe der Auslagerungsdatei:

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

Mit dem obigen Befehl wird am Ende der Auslagerungsdatei 1 GByte mit Null Byte angehängt.

Richten Sie die Datei als "Auslagerungsdatei" ein:

sudo mkswap /swapfile

Swap aktivieren:

sudo swapon /swapfile

3
sudo fallocate -l 2G /swapfileist wahrscheinlich sicherer als dd (obwohl es nicht die ursprüngliche Auslagerungsdatei enthält), und es benötigt auch eine sudo chmod 600 /swapfile.
Heynnema

7
@heynnema Keine fallocatespärlichen Dateien? Die swaponManpage sagt, dass spärliche Auslagerungsdateien problematisch sind (speziell erwähnt fallocate).
muru

3
@heynnema nein, die mkswapmanpage sagt auch, dass die dateien keine löcher enthalten sollen.
muru

1
@muru denke, ich liege falsch :-) Jedes Mal, wenn ich las, wie man eine / swap-Datei mit dem Einsetzen von 17.04 erstellt, benutzten sie fallocate. Ich denke, wir müssen nur "Disk Destroyer" verwenden!
Heynnema

1
@heynnema: Was Sie tun können, ist, fallocatevorab Speicherplatz zuzuweisen und dann dddie Lücken mit Nullen zu füllen.
David Foerster

39

Sie sollten eine neue Auslagerungsdatei hinzufügen, anstatt die Größe der vorhandenen Auslagerungsdatei zu ändern, da dies Sie nichts kostet . Um die Größe einer Auslagerungsdatei zu ändern, müssen Sie diese zunächst deaktivieren. Dadurch wird der Auslagerungsinhalt in den Arbeitsspeicher verschoben, wodurch der Druck auf den Arbeitsspeicher erhöht wird. Möglicherweise wird sogar der OOM-Killer beschworen (ganz zu schweigen davon, dass Sie möglicherweise Ihre Datenträger für einige Minuten zerstören). Mehrere Auslagerungsdateien sind kein Problem, es ist einfach, eine weitere Auslagerungsdatei einzurichten. Es hat buchstäblich keinen Vorteil, die Größe einer Auslagerungsdatei zu ändern, anstatt eine andere hinzuzufügen.

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

Ist das sudo chmod 600 /some/fileerforderlich oder nicht?
Heynnema

1
Und gibt count=1Kes eine 1G-Datei? Anzahl ist in Blockgröße, ja? Und das kann 512/4096 sein? Oder ist meine Mathematik falsch?
Heynnema

3
+1 Dieser Ansatz erleichtert auch das Trennen einer der Auslagerungsdateien, wenn Sie später entscheiden, dass Sie wieder Speicherplatz benötigen.
Joeytwiddle

2
Dies muss wirklich als die richtige Antwort markiert werden. Wow, Bravo!
Beshoy Girgis

1
@muru soll das eine dauerhafte lösung sein? Ich habe diesen Befehl am 30. April ausgeführt, aber irgendwann im Mai war meine zweite Auslagerungsdatei verschwunden. Ich habe nicht gelöscht, aber es war weg
Christopher Rucinski

13

Sie können eine weitere Auslagerungsdatei wie folgt erstellen:

  1. sudo fallocate -l 4G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
  5. Vergewissern Sie sich, dass es funktioniert. sudo swapon --show
    So legen Sie fest, dass der fstabDateityp permanent eine Datei hinzugefügt wird :
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Bitte beachten Sie, dass fallocatedas Bit zum Erstellen der Datei verwendet werden sollte, da hierdurch eine seltene Datei erstellt wird. sieheman mkswap
Charles Green

@CharlesGreen es hat bei mir funktioniert, wie ich geschrieben habe, also sollte es bei almos jedem funktionieren.
Borekon

Ich würde empfehlen zu lesen man mkswap, insbesondere den letzten Pargraphen vor "Umwelt"
Charles Green

1
arbeitete an NanoPi Neo mit Armbian v
5.65

5

Ich habe auf meinem Ubuntu 17.04 gute Ergebnisse erzielt, wenn ich dem Rat von Arian Acosta aus dem Blogpost folge . Hier kann man das 4G sudo fallocate -l 4G /swapfiledurch eine beliebige Anzahl von Gigabyte ersetzen . Zum Beispiel sudo fallocate -l 2G /swapfilefür TS.

Im Allgemeinen beträgt die empfohlene Größe für eine Auslagerungsdatei das Zweifache des Arbeitsspeichers. Sie können sie jedoch beliebig vergrößern. Denken Sie daran, dass dies kein Ersatz für Speicher ist, da die Leistung viel schlechter ist, da die Daten auf der Festplatte gespeichert sind.

Ich habe ein einfaches Bash-Skript erstellt, das die Auslagerungsdatei auf 4 GB erhöht, und es unter Ubuntu 16.04 getestet.

Dies kann Zeile für Zeile oder als Bash-Skript ausgeführt werden, aber ich verwende es, um Installationen ohne Kopf durchzuführen.

#!/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
Sie sollten dem Skript ein Argument hinzugefügt haben, das die Menge an SWAP angibt, die hinzugefügt werden soll, und es schließlich zu fstab hinzufügen. Aber trotzdem mag ich das
LnxSlck

0

Allgemeine Antwort für "Ändern der Größe der Auslagerungsdatei":

Von Bogdan Cornianu hier: https://bogdancornianu.com/change-swap-size-in-ubuntu/

[ZITAT (FAST VERBATIM, mit nur ein paar meiner Kommentare) START]

Im folgenden Beispiel erweitern wir den verfügbaren Swap-Speicher in der Datei / swap von 4 GiB auf 8 GiB.

  1. Schalten Sie alle Swap-Prozesse aus

    sudo swapoff -a
    
  2. Ändern Sie die Größe des Swap

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

    if= Eingabedatei
    of= Ausgabedatei
    bs= Blockgröße; Hier 1Gsteht für 1 Gibibyte oder GiB, die laut man ddist G = 1024 * 1024 * 1024 Bytes
    count= Multiplikator von Blöcken

  3. Mache die Datei als Swap nutzbar

    sudo mkswap /swapfile
    
  4. Aktivieren Sie die Auslagerungsdatei

    sudo swapon /swapfile
    
  5. Überprüfen Sie den verfügbaren Swap-Betrag

    grep SwapTotal /proc/meminfo
    

[QUOTE END]

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.