Wenn der Arbeitsspeicher eines Linux-Servers voll ist, beendet der Kernel Prozesse, um das System am Laufen zu halten. Oft trifft es ausgerechnet die Datenbank oder den Webserver. Eine Swap-Datei gibt dem System einen Puffer: Selten genutzte Speicherinhalte werden auf die Festplatte ausgelagert. Diese Anleitung zeigt, wie Sie eine Swap-Datei anlegen, dauerhaft aktivieren und sinnvoll einstellen.

Brauche ich Swap?

Swap ist kein Ersatz für Arbeitsspeicher. Die Festplatte ist um ein Vielfaches langsamer als RAM. Swap ist aber ein sinnvoller Puffer:

  • Kurze Lastspitzen, etwa bei Updates oder Backups, führen nicht sofort zu abgebrochenen Prozessen.
  • Selten genutzte Speicherbereiche werden ausgelagert und machen Platz für den Dateicache.
  • Sie gewinnen Zeit, um ein Speicherproblem zu erkennen, bevor Dienste ausfallen.

Wird der Swap dauerhaft stark genutzt, ist das ein Zeichen dafür, dass der Server mehr RAM benötigt.

Schritt 1: Aktuellen Zustand prüfen

free -h
swapon --show

Zeigt swapon --show keine Ausgabe, ist kein Swap aktiv.

Wie groß sollte der Swap sein?

ArbeitsspeicherEmpfohlene Swap-Größe
bis 2 GB2 GB
2 bis 8 GB2 bis 4 GB
8 bis 32 GB4 GB
über 32 GB4 bis 8 GB

Auf Servern ist ein kleiner Swap meist ausreichend. Er soll Spitzen abfangen, nicht dauerhaft Speicher ersetzen. Prüfen Sie vorher mit df -h /, ob genug freier Speicherplatz vorhanden ist.

Schritt 2: Swap-Datei anlegen

Das Beispiel legt eine Swap-Datei mit 2 GB an:

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Die Rechte 600 sind wichtig: Im Swap können sensible Daten wie Passwörter landen, die nur Root lesen darf.

Meldet swapon den Fehler invalid argument, unterstützt Ihr Dateisystem fallocate für Swap nicht. Legen Sie die Datei dann mit dd an:

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

Anschließend wiederholen Sie chmod, mkswap und swapon.

Hinweis für Btrfs

Auf Btrfs-Dateisystemen erstellen Sie die Swap-Datei mit einem eigenen Befehl:

sudo btrfs filesystem mkswapfile --size 2g /swapfile
sudo swapon /swapfile

Schritt 3: Swap dauerhaft aktivieren

Damit die Swap-Datei nach einem Neustart wieder aktiv ist, tragen Sie sie in /etc/fstab ein:

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

Prüfen Sie die Datei auf Tippfehler. Ein fehlerhafter Eintrag in /etc/fstab kann den Systemstart verzögern. Mit diesem Befehl testen Sie alle Einträge, ohne neu zu starten:

sudo findmnt --verify

Schritt 4: Swappiness einstellen

Der Wert vm.swappiness legt fest, wie früh Linux Daten auslagert. Er reicht von 0 bis 200, Standard ist 60. Für Server empfehlen wir einen niedrigeren Wert, damit Swap nur bei echtem Speicherdruck genutzt wird:

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

Prüfen Sie den aktiven Wert mit cat /proc/sys/vm/swappiness.

Schritt 5: Ergebnis prüfen

swapon --show
free -h

In der Zeile Swap sollte nun die neue Größe stehen.

Swap-Datei vergrößern

sudo swapoff /swapfile
sudo fallocate -l 4G /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

Beim Abschalten werden ausgelagerte Daten zurück in den Arbeitsspeicher geladen. Ist dafür nicht genug RAM frei, schlägt swapoff fehl. Führen Sie die Änderung dann zu einer ruhigen Zeit durch.

Swap-Datei entfernen

sudo swapoff /swapfile
sudo sed -i '\|^/swapfile |d' /etc/fstab
sudo rm /swapfile

Speicherverbrauch im Blick behalten

Mit diesen Befehlen sehen Sie, welche Prozesse den meisten Speicher belegen und ob gerade aktiv ausgelagert wird:

ps aux --sort=-%mem | head -n 10
vmstat 5 5

In der Ausgabe von vmstat zeigen die Spalten si und so, wie viel pro Sekunde ein- und ausgelagert wird. Stehen dort dauerhaft hohe Werte, braucht der Server mehr Arbeitsspeicher.

Ob der Kernel bereits Prozesse wegen Speichermangels beendet hat, zeigt:

sudo journalctl -k | grep -i "out of memory"

Häufige Fragen

Schadet Swap meiner SSD?

Bei niedriger Swappiness wird Swap nur selten beschrieben. Moderne SSDs vertragen diese Schreiblast problemlos.

Was ist zram?

zram legt einen komprimierten Swap-Bereich im Arbeitsspeicher an. Das ist schneller als Swap auf der Festplatte und vor allem für kleine Server mit wenig RAM interessant. Unter Debian und Ubuntu erhalten Sie es über das Paket zram-tools.

Reicht der Arbeitsspeicher dauerhaft nicht aus? Ihren vServer können Sie jederzeit auf ein größeres Paket umstellen.

War diese Antwort hilfreich? 0 Benutzer fanden dies hilfreich (0 Stimmen)