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?
| Arbeitsspeicher | Empfohlene Swap-Größe |
|---|---|
| bis 2 GB | 2 GB |
| 2 bis 8 GB | 2 bis 4 GB |
| 8 bis 32 GB | 4 GB |
| über 32 GB | 4 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.
