Swap-Speicher unter Ubuntu 20.04 und Ubuntu 22.04 einrichten

Wenn auf einem Ubuntu-Server der verfügbare Arbeitsspeicher vollständig ausgelastet ist, kann der Linux-Out-of-Memory-Killer laufende Prozesse beenden und dadurch Dienste unterbrechen. Swap stellt dem Kernel zusätzlichen, auf einem Datenträger gespeicherten Speicher für anonyme Speicherseiten bereit. Dadurch können Anwendungen bei hoher Speicherauslastung langsamer weiterarbeiten, anstatt unmittelbar auszufallen. In dieser Anleitung wird beschrieben, wie unter Ubuntu 20.04 und Ubuntu 22.04 eine Swap-Datei erstellt, mit mkswap vorbereitet und mit swapon aktiviert wird. Außerdem wird gezeigt, wie die Konfiguration über /etc/fstab dauerhaft gespeichert, vm.swappiness und vm.vfs_cache_pressure angepasst und typische Probleme bei der Swap-Konfiguration behoben werden. Die Anleitung eignet sich für Administratoren von Cloud-Servern, VPS-Systemen, virtuellen Maschinen und physischen Ubuntu-Servern.

Wichtige Punkte zur Swap-Konfiguration unter Ubuntu

  • Prüfen Sie vor Änderungen mit sudo swapon --show und free -h, ob bereits Swap-Speicher eingerichtet ist.
  • Erstellen Sie die Swap-Datei auf ext4 mit fallocate. Bei Btrfs, XFS und älteren Dateisystemen kann stattdessen dd erforderlich sein, da eine Sparse-Allokation die Verwendung mit swapon verhindern kann.
  • Schützen Sie die Swap-Datei mit chmod 600, initialisieren Sie sie mit mkswap und aktivieren Sie sie anschließend mit swapon.
  • Sorgen Sie dafür, dass Swap auch nach einem Neustart verfügbar bleibt, indem Sie /swapfile none swap sw 0 0 in /etc/fstab eintragen. Prüfen Sie die Konfiguration vor dem Neustart mit sudo findmnt --verify --verbose.
  • Passen Sie vm.swappiness und vm.vfs_cache_pressure an Server-Workloads an und speichern Sie dauerhafte Einstellungen unter Ubuntu 22.04 in /etc/sysctl.d/.
  • Deaktivieren Sie Swap vorübergehend mit swapoff. Für eine dauerhafte Entfernung löschen Sie den entsprechenden Eintrag aus fstab und anschließend die Datei /swapfile.
  • Beheben Sie häufige Fehler wie swapon-Meldungen mit „Invalid argument“, Berechtigungsprobleme, Fehler von fallocate unter Btrfs und fehlerhafte fstab-Einträge.

Voraussetzungen für das Einrichten von Swap-Speicher

  • Ein Server mit Ubuntu 20.04 oder Ubuntu 22.04 sowie ein Benutzerkonto ohne Root-Anmeldung, das über sudo-Berechtigungen verfügt. Falls ein entsprechender administrativer Benutzer noch nicht vorhanden ist, muss dieser zunächst eingerichtet werden.
  • Mindestens 2 GB freier Speicherplatz auf dem Dateisystem, auf dem /swapfile für die hier verwendete Beispielgröße gespeichert werden soll. Bei einer größeren Swap-Datei wird entsprechend mehr freier Speicher benötigt.
  • Grundkenntnisse im Umgang mit dem Terminal und mit Linux-Dateiberechtigungen.

Die beschriebenen Befehle und sysctl-Pfade funktionieren unter Ubuntu 20.04 und Ubuntu 22.04 auf die gleiche Weise. Manche Cloud- und VPS-Images besitzen bei kleineren Serverkonfigurationen standardmäßig keinen aktiven Swap-Speicher. Andere Installationen können bereits eine Swap-Datei oder eine Swap-Partition enthalten. Prüfen Sie deshalb zuerst die bestehende Konfiguration, bevor Sie ein weiteres Swap-Gerät hinzufügen.

Die aktuell eingerichtete Swap-Konfiguration lässt sich mit folgenden Befehlen anzeigen:



              total        used        free      shared  buff/cache   available
Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi
Swap:            0B          0B          0B

Wenn sudo swapon --show keine Ausgabe liefert, ist derzeit kein Swap-Speicher aktiv. In diesem Fall sollte die Zeile Swap bei free -h als Gesamtwert 0B anzeigen.

Was Swap-Speicher ist und wann ein Linux-Server ihn benötigt

Wie der Linux-Kernel Swap-Speicher verwendet

Swap ist ein auf einem Datenträger bereitgestellter Speicherbereich, den Linux verwenden kann, wenn nicht mehr alle anonymen Speicherseiten im physischen RAM gehalten werden können. Zu diesen anonymen Speicherseiten gehören beispielsweise Bereiche von Heaps und Stacks von Anwendungen und nicht dateibasierte Speicherabbildungen. Wenn der verfügbare Arbeitsspeicher knapp wird, versucht der Kernel Speicher freizugeben und kann wenig genutzte anonyme Speicherseiten in den Swap-Bereich verschieben. Aktive Prozesse können dadurch weiterhin den schnelleren RAM verwenden. Da Zugriffe auf Datenträger deutlich langsamer als Zugriffe auf DRAM sind, sollte Swap als zusätzlicher Puffer und nicht als Ersatz für ausreichend physischen Arbeitsspeicher betrachtet werden.

Wenn ein Server bereits einen Prozess wegen Speichermangels beendet hat, hätte Swap dem Kernel möglicherweise zusätzliche Zeit gegeben, Speicher freizugeben, bevor der OOM-Killer eingreift. Ob dies bereits geschehen ist, lässt sich mit sudo dmesg | grep -i 'killed process' oder unter Ubuntu 22.04 mit sudo journalctl -k | grep -i 'killed process' prüfen. Wird ein entsprechender Eintrag gefunden, war der verfügbare RAM erschöpft. Zusätzlicher Swap-Speicher kann die Wahrscheinlichkeit verringern, dass Prozesse bei einer vergleichbaren Speicherauslastung erneut beendet werden.

Swap-Datei im Vergleich zu einer Swap-Partition

Eine Swap-Partition ist ein eigener Bereich eines Datenträgers, der speziell für die Verwendung als Swap formatiert wurde. Eine Swap-Datei ist dagegen eine gewöhnliche Datei innerhalb eines vorhandenen Dateisystems, die vom Linux-Kernel als Swap-Speicher genutzt wird. Moderne Ubuntu-Installationen verwenden häufig Swap-Dateien, weil deren Größe verändert werden kann, ohne dass eine Festplatte neu partitioniert werden muss. Das eingesetzte Dateisystem spielt dennoch eine Rolle, da bei bestimmten Dateisystemkonfigurationen zur Erstellung einer funktionsfähigen Swap-Datei dd anstelle von fallocate verwendet werden muss.

Merkmal Swap-Partition Swap-Datei
Einrichtungsaufwand Erfordert eine passende Partitionierung und kann bei Größenänderungen Ausfallzeiten verursachen Wird mit fallocate oder dd erstellt und kann durch das Ersetzen der Datei vergrößert oder verkleinert werden
Flexibilität bei Größenänderungen Ohne Neupartitionierung oder LVM weniger flexibel Flexibler, da die Datei ersetzt und anschließend erneut mit mkswap vorbereitet werden kann
Anforderung an das Dateisystem Besitzt eine eigene Partition und ist nicht von einem vorhandenen Dateisystem abhängig Liegt auf dem Root-Dateisystem oder einem anderen eingehängten Dateisystem
Ubuntu-Standard Kommt bei älteren Installationen und einigen System-Images vor Ist bei aktuellen Ubuntu-Desktop- und Serverinstallationen weit verbreitet
Unterstützung für Ruhezustand Wird bei Konfigurationen für Resume-to-Disk üblicherweise benötigt Wird in typischen Serverumgebungen normalerweise nicht für den Ruhezustand verwendet
Empfohlen für Ältere Speicherkonfigurationen und Ruhezustands-Workflows Cloud-Server, VPS-Systeme, virtuelle Maschinen und flexibel skalierbare Speicheranforderungen

Wie viel Swap-Speicher eingerichtet werden sollte

Die Größe des Swap-Speichers sollte sich nach dem vorhandenen Arbeitsspeicher und danach richten, wie viel datenträgerbasiertes Paging die jeweilige Anwendung toleriert. Für typische Linux-Server eignen sich folgende Richtwerte:

Arbeitsspeicher Empfohlener Swap-Speicher Hinweise
Bis 2 GB 2x RAM Bietet zusätzlichen Spielraum bei kleinen Serverinstanzen
2 bis 8 GB 2 bis 4 GB Geeignet für typische VPS-Systeme und Webanwendungsserver
8 bis 16 GB 4 GB Bietet eine ausgewogene Reserve für Paging
16 GB oder mehr 2 bis 4 GB Nur erhöhen, wenn Ruhezustand oder ungewöhnliche Lastspitzen zusätzlichen Speicher erfordern

Die folgenden Beispiele verwenden eine Swap-Datei mit 2 GB. Passen Sie die Größenangaben an, wenn Ihr System eine andere Kapazität benötigt.

Schritt 1 – Vorhandenen Swap-Speicher prüfen

Aktiven Swap-Speicher mit swapon überprüfen

Wenn keine Swap-Geräte aktiviert sind, beendet sich der Befehl sofort, ohne Einträge auszugeben. Ist bereits Swap eingerichtet, erscheint eine Tabelle mit den vorhandenen Geräten.

NAME      TYPE  SIZE USED PRIO
/swapfile file 2G    0B   -2

RAM- und Swap-Auslastung mit free prüfen


              total        used        free      shared  buff/cache   available
Mem:          981Mi       122Mi       647Mi       0.0Ki       211Mi       714Mi
Swap:            0B          0B          0B

Bei aktiviertem Swap zeigt die Zeile Swap Gesamtwerte größer als null an.

Freien Speicherplatz mit df kontrollieren


Filesystem      Size  Used Avail Use% Mounted on
udev            474M     0  474M   0% /dev
tmpfs            99M  932K   98M   1% /run
/dev/vda1        25G  1.4G   23G   7% /
tmpfs           491M     0  491M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           491M     0  491M   0% /sys/fs/cgroup
/dev/vda15      105M  3.9M  101M   4% /boot/efi
/dev/loop0       55M   55M     0 100% /snap/core18/1705
/dev/loop1       69M   69M     0 100% /snap/lxd/14804
/dev/loop2       28M   28M     0 100% /snap/snapd/7264
tmpfs            99M     0   99M   0% /run/user/1000

Stellen Sie sicher, dass auf dem Dateisystem, auf dem /swapfile gespeichert werden soll – üblicherweise das unter / eingehängte Root-Dateisystem – genügend freier Speicher für die Swap-Datei und das normale Wachstum des Dateisystems vorhanden ist.

Schritt 2 – Swap-Datei erstellen

Methode 1: Swap-Datei mit fallocate auf ext4 erstellen

Mit fallocate lässt sich benötigter Speicherplatz auf Dateisystemen schnell reservieren, sofern diese vollständig zugewiesene Extents erzeugen, die für Swap geeignet sind.


sudo fallocate -l 2G /swapfile



-rw-r--r-- 1 root root 2.0G Apr 25 11:14 /swapfile

Wählen Sie anhand der zuvor aufgeführten Größenempfehlungen eine für Ihr System passende Kapazität, anstatt den Beispielwert unverändert zu übernehmen.

Unter Btrfs können mit fallocate erstellte Dateien nicht geschriebene Extents enthalten, wodurch swapon fehlschlagen kann. Verwenden Sie deshalb die Methode mit dd, wenn die Swap-Datei auf Btrfs liegt.

Methode 2: Swap-Datei mit dd auf Btrfs, XFS und älteren Dateisystemen erstellen

dd schreibt mit Nullen gefüllte Blöcke und erzeugt dadurch eine vollständig belegte Datei, die die Prüfungen des Kernels für Swap-Dateien erfüllen kann.


sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress


2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 3.12345 s, 687 MB/s

Diese Methode benötigt mehr Zeit als fallocate, erstellt dafür aber eine vollständig beschriebene Datei ohne Sparse-Bereiche.

Wann fallocate oder dd verwendet werden sollte

Faktor fallocate dd
Geschwindigkeit Reserviert Speicherplatz schnell Langsamer, weil die gesamte Datei geschrieben wird
Dateisystem-Kompatibilität Geeignet für ext4 und andere Dateisysteme, die die Datei vollständig allokieren Breit einsetzbar, sofern das Schreiben über /dev/zero unterstützt wird
Risiko einer Sparse-Datei Bei Copy-on-Write- oder Delayed-Allocation-Konfigurationen möglich Gering, da zusammenhängende Schreibvorgänge die Datei vollständig füllen
Btrfs-Unterstützung Für diese Methode zur Erstellung einer Swap-Datei nicht geeignet Stattdessen dd verwenden
XFS-Unterstützung Kann bei Swap problematisch sein, weshalb dd bevorzugt wird Bevorzugte Methode
Empfohlen für ext4-Root-Dateisysteme auf typischen Linux-Servern Btrfs, XFS oder Situationen, in denen swapon eine mit fallocate erzeugte Datei ablehnt

Schritt 3 – Swap-Datei absichern

Eine Swap-Datei kann Bestandteile des Prozessspeichers enthalten, darunter Zugangsdaten oder sitzungsbezogene Informationen. Wenn andere Benutzer diese Datei lesen können, besteht das Risiko einer Offenlegung sensibler Daten.



-rw------- 1 root root 2.0G Apr 25 11:14 /swapfile

Die Lese- und Schreibrechte sollten ausschließlich dem Root-Benutzer vorbehalten bleiben.

Schritt 4 – Datei als Swap-Speicher vorbereiten

mkswap schreibt den Swap-Header, erzeugt eine UUID und kann optional eine Bezeichnung vergeben.


Setting up swapspace version 1, size = 2 GiB (2147483648 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf

Schritt 5 – Swap-Datei aktivieren



NAME      TYPE  SIZE USED PRIO
/swapfile file 2G    0B   -2

Das Feld PRIO zeigt die Priorität des jeweiligen Swap-Geräts. Linux vergibt automatisch negative Prioritäten wie -2 oder -3, wenn Swap-Geräte ohne eine ausdrücklich definierte Priorität aktiviert werden. Geräte mit höheren Werten werden zuerst genutzt, weshalb bei einer einzelnen Swap-Datei eine Priorität von -2 ausreicht. Befindet sich ein weiteres Swap-Gerät auf einem schnelleren Datenträger und soll bevorzugt verwendet werden, kann ihm mit swapon -p 10 /path/to/faster-swap eine höhere Priorität zugewiesen oder in den fstab-Optionen pri=10 ergänzt werden.


              total        used        free      shared  buff/cache   available
Mem:          981Mi       123Mi       644Mi       0.0Ki       213Mi       714Mi
Swap:         2.0Gi          0B       2.0Gi

Der Kernel kann nun bei entsprechender Speicherknappheit Speicherseiten nach /swapfile auslagern.

Schritt 6 – Swap-Datei nach einem Neustart dauerhaft aktivieren

Die bisherige Konfiguration bleibt nur bis zum nächsten Neustart aktiv. Ergänzen Sie deshalb einen Eintrag in /etc/fstab, damit systemd die Swap-Datei beim Systemstart automatisch aktiviert.

Erstellen Sie vor der Änderung eine Sicherungskopie von fstab:

sudo cp /etc/fstab /etc/fstab.bak

Fügen Sie anschließend die Swap-Konfiguration hinzu:

echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

Die einzelnen Felder dieses Eintrags bestimmen, wie systemd die Swap-Datei beim Start behandelt. /swapfile gibt den Pfad zur Datei an. none steht an der Position des Einhängepunkts, der bei Swap nicht verwendet wird, da Swap nicht in den Dateisystembaum eingehängt wird. swap bezeichnet den Dateisystemtyp. Mit sw werden die üblichen Swap-Optionen verwendet. Die erste 0 verhindert eine Sicherung dieses Eintrags durch dump. Die zweite 0 sorgt dafür, dass fsck keine Dateisystemprüfung für diesen Eintrag ausführt, was für Swap korrekt ist.

Prüfen Sie anschließend die Syntax und die angegebenen Ziele:


sudo findmnt --verify --verbose


/
   [ ] target exists
   [ ] UUID=b3e62c74-e07b-4b57-bfb8-b39bbdbda993
   [ ] LABEL: (none)
   [ ] FS options: rw,relatime
/swapfile
   [ ] target exists
0 parse errors, 0 errors, 0 warnings

Ein fehlerhafter Eintrag in /etc/fstab kann dazu führen, dass ein System nicht ordnungsgemäß startet. Bewahren Sie deshalb eine Sicherungskopie der Datei auf und prüfen Sie die Konfiguration vor einem Neustart mit sudo findmnt --verify.

Kenntnisse über /etc/fstab, Einhängekonfigurationen, Dateisystemstrukturen und die Speicherverwaltung unter Linux sind ebenfalls hilfreich, wenn Swap und andere Speichergeräte verwaltet werden.

Schritt 7 – Swap-Leistung mit Linux-Kernelparametern optimieren

Kernelparameter beeinflussen, wie schnell Ubuntu Speicherseiten in den Swap-Bereich verschiebt und wie aggressiv Inode- und Dentry-Caches freigegeben werden. Beobachten Sie nach Änderungen dieser Einstellungen den RSS-Speicher, die allgemeine Speicherauslastung und die Nutzung von Swap mit den üblichen Linux-Werkzeugen zur Ressourcenüberwachung.

vm.swappiness für Server-Workloads anpassen


cat /proc/sys/vm/swappiness



sudo sysctl vm.swappiness=10


Wert Verhalten Einsatzbereich
0 Swap wird hauptsächlich bei starkem Speicherdruck verwendet Sehr latenzempfindliche Anwendungen
1 Sehr geringe Neigung zum Auslagern MySQL- und PostgreSQL-Workloads
10 Geringe Bevorzugung von Swap Allgemeine Ubuntu-Server, VPS-Systeme und Cloud-Server
60 Standardwert des Kernels Desktop-orientierte Workload-Kombinationen
100 Aggressives Auslagern Für Server-Workloads nur selten geeignet

vm.vfs_cache_pressure anpassen


cat /proc/sys/vm/vfs_cache_pressure



sudo sysctl vm.vfs_cache_pressure=50


vm.vfs_cache_pressure = 50

Dieser Parameter bestimmt, wie stark der Kernel Inode- und Dentry-Caches im Verhältnis zum Page Cache freigibt. Ein niedrigerer Wert sorgt dafür, dass Metadaten des Dateisystems bei Speicherdruck länger im Cache verbleiben.

Kernelparameter dauerhaft speichern

Unter Ubuntu 22.04 werden Konfigurationsdateien unter /etc/sysctl.d/ bevorzugt, anstatt sämtliche Einstellungen in einer einzigen Konfigurationsdatei zu speichern. Verwenden Sie nur eine der folgenden Varianten. Beide Methoden gleichzeitig zu verwenden kann durch doppelte Definitionen in mehreren Dateien zu uneinheitlichen Konfigurationen führen.

Moderne Methode:


echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swap.conf


echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.d/99-swap.conf

Kompatible ältere Methode:


echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf


echo 'vm.vfs_cache_pressure=50' | sudo tee -a /etc/sysctl.conf

Die gespeicherten Einstellungen können ohne Neustart geladen werden:


* Applying /etc/sysctl.d/99-swap.conf ...
vm.swappiness = 10
vm.vfs_cache_pressure = 50

Swap-Speicher deaktivieren oder entfernen

Um die Swap-Datei vorübergehend nicht mehr zu verwenden, ohne sie vom Datenträger zu löschen, führen Sie folgenden Befehl aus:


Wenn kein Swap-Gerät mehr aktiv ist, liefert sudo swapon --show keine Ausgabe und kehrt direkt zur Eingabeaufforderung zurück.

Eine leere Ausgabe bestätigt, dass Swap deaktiviert wurde.

Das Abschalten von Swap während einer hohen Speicherauslastung kann dazu führen, dass der OOM-Killer Prozesse beendet. Kontrollieren Sie deshalb vor swapoff mit free -h, ob genügend freier Arbeitsspeicher vorhanden ist.

Um die Swap-Datei dauerhaft zu entfernen, löschen Sie den Eintrag für /swapfile aus /etc/fstab, führen Sie bei noch aktivem Swap sudo swapoff /swapfile aus und löschen Sie anschließend die Datei:


Prüfen Sie nach dem Entfernen, ob die Werte in der Zeile Swap wieder auf null stehen.

Häufige Swap-Fehler unter Ubuntu beheben

Fehler Ursache Lösung
swapon: /swapfile: Invalid argument mkswap wurde nicht ausgeführt oder die mit fallocate erstellte Datei ist eine Sparse-Datei, was häufig bei Btrfs vorkommt Führen Sie sudo mkswap /swapfile aus oder erstellen Sie die Swap-Datei unter Btrfs mit dd neu
chmod: cannot access '/swapfile': No such file Die Swap-Datei wurde nicht erfolgreich erstellt Prüfen Sie mit df -h den verfügbaren Speicherplatz und führen Sie fallocate oder dd erneut aus
swapon: /swapfile: swapon failed: Operation not permitted Die Berechtigungen der Swap-Datei sind zu weit gefasst Führen Sie vor mkswap den Befehl sudo chmod 600 /swapfile aus
Swap ist nach einem Neustart nicht aktiv Der Eintrag in /etc/fstab fehlt oder ist fehlerhaft Führen Sie sudo findmnt --verify --verbose aus und stellen Sie sicher, dass /swapfile none swap sw 0 0 eingetragen ist
fallocate schlägt unter Btrfs fehl Btrfs kann die Swap-Datei mit dieser fallocate-Methode nicht zuverlässig bereitstellen Löschen Sie die unvollständige Datei mit sudo rm /swapfile und erstellen Sie sie anschließend mit dd neu

Fehler „swapon failed: Invalid argument“ beheben

Falls die Initialisierung des Swap-Bereichs übersprungen wurde, führen Sie sudo mkswap /swapfile aus. Besteht der Fehler weiterhin, prüfen Sie, ob das Root-Dateisystem Btrfs oder ein anderes Copy-on-Write-Dateisystem verwendet:

Wenn als Ergebnis btrfs erscheint, entfernen Sie die ungeeignete Datei, erstellen Sie sie mit dd neu und führen Sie danach erneut die Schritte mit chmod, mkswap und swapon durch:



sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

Swap wird nach dem Neustart nicht aktiviert

Prüfen Sie zunächst, ob der Eintrag in fstab der erwarteten Konfiguration entspricht:


/swapfile none swap sw 0 0

Führen Sie sudo findmnt --verify --verbose aus und beheben Sie sämtliche gemeldeten Probleme, bevor Sie den Server erneut starten.

Ist der fstab-Eintrag korrekt, die Datei /swapfile jedoch nicht mehr vorhanden, erstellen Sie sie anhand des Vorgehens aus Schritt 2 neu. Führen Sie anschließend erneut chmod 600, mkswap und swapon aus. Dies kann beispielsweise nach Änderungen am Speicher auftreten, wenn /swapfile gelöscht wurde, der entsprechende Pfad in fstab aber weiterhin vorhanden ist. Kontrollieren Sie deshalb vor einem Neustart mit ls -lh /swapfile, ob die Datei tatsächlich existiert.

Berechtigungsfehler beim Erstellen einer Swap-Datei beheben

Stellen Sie sicher, dass fallocate oder dd mit sudo ausgeführt wurde. Wenn die Datei erfolgreich erstellt wurde, swapon aber weiterhin einen Berechtigungsfehler meldet, setzen Sie Eigentümer und Dateirechte erneut korrekt:


sudo chown root:root /swapfile


Swap-Datei auf Btrfs erstellen, wenn fallocate nicht funktioniert

Verwenden Sie dd, um den Swap-Speicher unter Btrfs anzulegen. Befindet sich die Swap-Datei in einem Btrfs-Subvolume mit aktiviertem Copy-on-Write, muss CoW für die noch leere Datei deaktiviert werden, bevor Daten hineingeschrieben werden. Die Schritte mit truncate und chattr +C sind nicht erforderlich, wenn die Swap-Datei auf ext4 oder XFS liegt.


sudo truncate -s 0 /swapfile



sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

Fahren Sie danach wie zuvor mit chmod, mkswap, swapon und der fstab-Konfiguration fort.

Häufig gestellte Fragen zu Swap-Speicher unter Ubuntu

Welche Swap-Größe wird für einen Ubuntu-Server empfohlen?

Bei Systemen mit höchstens 2 GB RAM ist eine Swap-Größe von ungefähr dem Doppelten des vorhandenen Arbeitsspeichers eine häufig verwendete Richtlinie. Bei 2 bis 8 GB RAM können in der Regel 2 bis 4 GB Swap verwendet werden. Für Server mit 8 bis 16 GB Arbeitsspeicher eignen sich für viele Workloads etwa 4 GB Swap. Systeme mit mehr als 16 GB RAM verwenden häufig 2 bis 4 GB Swap, sofern nicht beispielsweise der Ruhezustand oder eine andere besondere Anforderung zusätzlichen Speicher benötigt.

Was ist der Unterschied zwischen einer Swap-Partition und einer Swap-Datei unter Ubuntu?

Eine Swap-Partition ist ein eigener Bereich eines Datenträgers, der speziell als Swap formatiert wurde. Eine Swap-Datei ist dagegen eine gewöhnliche Datei innerhalb eines vorhandenen Dateisystems, die der Linux-Kernel als Swap verwendet. Auf modernen Ubuntu-Systemen bieten Swap-Dateien mehr Flexibilität, weil ihre Größe ohne eine Neupartitionierung des Datenträgers angepasst werden kann.

Warum kann fallocate beim Erstellen einer Swap-Datei auf Btrfs fehlschlagen?

Btrfs garantiert bei Verwendung von fallocate nicht, dass vollständig zugewiesene Extents für die Swap-Datei entstehen. Dadurch kann swapon die erstellte Datei ablehnen. Wird die Datei stattdessen mit dd und /dev/zero geschrieben, werden sämtliche Blöcke belegt und die erforderlichen Kernelprüfungen können erfüllt werden.

Wie lässt sich die aktuelle Swap-Nutzung unter Ubuntu prüfen?

Mit sudo swapon --show werden Details zu den einzelnen aktiven Swap-Geräten angezeigt. free -h zeigt dagegen die zusammengefassten Swap-Werte. Beide Befehle zeigen aktiven Swap erst an, nachdem dieser erfolgreich mit swapon aktiviert wurde.

Welcher Wert für vm.swappiness eignet sich für einen Ubuntu-Server?

Ein Wert von 10 ist für allgemeine Server-Workloads ein sinnvoller Ausgangspunkt, wenn aktive Daten möglichst im RAM verbleiben sollen. Datenbank-Workloads wie MySQL oder PostgreSQL, die durch Swap-Lesezugriffe deutlich ausgebremst werden können, verwenden häufig 1. Der Wert 60 eignet sich eher für desktopähnliche Workloads, bei denen häufigeres Paging sinnvoll sein kann.

Wie bleibt Swap nach einem Ubuntu-Neustart dauerhaft aktiviert?

Fügen Sie /swapfile none swap sw 0 0 zu /etc/fstab hinzu, überprüfen Sie die Konfiguration mit sudo findmnt --verify und starten Sie das System anschließend bei Bedarf neu. Ohne diesen fstab-Eintrag wird die Swap-Datei beim Start von Ubuntu nicht automatisch aktiviert.

Kann Swap-Speicher nachträglich zu Ubuntu hinzugefügt werden?

Ja. Erstellen Sie die Swap-Datei, beschränken Sie ihre Berechtigungen, initialisieren Sie sie mit mkswap, aktivieren Sie sie über swapon und tragen Sie sie für eine dauerhafte Nutzung in /etc/fstab ein. Eine Neuinstallation von Ubuntu ist dafür nicht erforderlich.

Wie lässt sich eine bestehende Ubuntu-Swap-Datei vergrößern?

Um eine vorhandene Swap-Datei auf ext4 beispielsweise von 2 GB auf 4 GB zu vergrößern, deaktivieren Sie zunächst den aktiven Swap-Speicher, entfernen und erstellen Sie die Datei anschließend in der neuen Größe und aktivieren Sie sie danach erneut. Solange sich der Pfad der Datei nicht ändert, kann der vorhandene Eintrag in fstab bestehen bleiben.



sudo fallocate -l 4G /swapfile




Prüfen Sie die neue Größe mit sudo swapon --show:


NAME      TYPE  SIZE USED PRIO
/swapfile file 4G    0B   -2

Wenn das System bereits unter Speicherdruck steht, prüfen Sie vor swapoff mit free -h, ob ausreichend physischer Arbeitsspeicher verfügbar ist. Wird eine 2 GB große Swap-Datei deaktiviert, von der beispielsweise 1,5 GB belegt sind, müssen diese Speicherseiten wieder in den RAM geladen werden. Auf einem System mit wenig freiem Arbeitsspeicher kann dies dazu führen, dass der OOM-Killer Prozesse beendet.

Fazit

Diese Anleitung beschreibt, wie unter Ubuntu 20.04 und Ubuntu 22.04 Swap-Speicher mithilfe einer Swap-Datei eingerichtet wird. Dazu gehören die Prüfung des vorhandenen Arbeitsspeichers und freien Speicherplatzes, die Auswahl zwischen fallocate und dd, das Absichern der Dateiberechtigungen, die Initialisierung mit mkswap, die Aktivierung über swapon und die dauerhafte Konfiguration über /etc/fstab nach einer Überprüfung mit findmnt. Außerdem wurde erläutert, wie vm.swappiness und vm.vfs_cache_pressure über /etc/sysctl.d/99-swap.conf angepasst, Swap sicher deaktiviert und typische Probleme mit swapon und fstab behoben werden können.

Swap lässt sich sowohl beim Einrichten eines neuen Cloud-Servers, VPS-Systems, einer virtuellen Maschine oder eines physischen Ubuntu-Systems konfigurieren als auch nachträglich auf einem bestehenden Server hinzufügen, der zeitweise eine hohe RAM-Auslastung aufweist. Probleme mit Berechtigungen oder Besonderheiten des Dateisystems können mit den beschriebenen Maßnahmen behoben werden. Swap sollte als Puffer für vorübergehenden Speicherdruck dienen, während Anwendungen angemessen dimensioniert oder zusätzliche physische Ressourcen eingeplant werden.

Quelle: digitalocean.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

OpenSSL: SSL-Zertifikate, private Schlüssel & CSRs

Security, Tutorial
Vijona20 Aug. um 15:08 Uhr OpenSSL-Grundlagen: SSL-Zertifikate, private Schlüssel und Certificate Signing Requests OpenSSL ist ein Kommandozeilen-Werkzeug, das Administratoren häufig verwenden, um Schlüssel zu erzeugen, Certificate Signing Requests (CSRs) zu erstellen,…