Swap ist virtueller Speicher auf der Festplatte. Er erweitert den RAM, wenn dieser knapp wird, und ist wichtig für Systemstabilität.

Warum Swap?

  • RAM-Erweiterung: Wenn physischer Speicher voll ist
  • Stabilität: Verhindert Out-of-Memory-Kills
  • Hibernation: Für Sleep-to-Disk benötigt
  • Sicherheitspuffer: Für RAM-Spitzen

Aktuellen Swap prüfen

# Swap-Nutzung
free -h

# Swap-Details
swapon --show

# Detailliert
cat /proc/swaps

Swap-Partition vs. Swap-Datei

AspektPartitionDatei
PerformanceMinimal besserFast gleich
FlexibilitätSchwer änderbarEinfach anpassbar
EinrichtungKomplexerEinfacher
EmpfehlungVMs, InstallerNachträglich

Swap-Datei erstellen

1. Datei erstellen

# 4 GB Swap-Datei
fallocate -l 4G /swapfile

# Alternative (bei fallocate-Problemen)
dd if=/dev/zero of=/swapfile bs=1M count=4096

2. Berechtigungen setzen

chmod 600 /swapfile

3. Als Swap formatieren

mkswap /swapfile

4. Swap aktivieren

swapon /swapfile

5. Prüfen

swapon --show

6. Permanent machen

In /etc/fstab hinzufügen:

/swapfile none swap sw 0 0

Swap-Größe empfohlen

RAMSwap (ohne Hibernation)Swap (mit Hibernation)
≤2 GB2x RAM3x RAM
2-8 GB= RAM2x RAM
8-64 GB4-8 GB1,5x RAM
>64 GB4 GBNicht empfohlen

Für Server ohne Hibernation: Mindestens 1-4 GB.

Swap deaktivieren/entfernen

Temporär deaktivieren

swapoff /swapfile

Permanent entfernen

# Deaktivieren
swapoff /swapfile

# Aus fstab entfernen
nano /etc/fstab
# Zeile mit /swapfile löschen

# Datei löschen
rm /swapfile

Swap-Größe ändern

Swap-Datei vergrößern

# Alten Swap deaktivieren
swapoff /swapfile

# Datei vergrößern (auf 8 GB)
fallocate -l 8G /swapfile

# Neu formatieren
mkswap /swapfile

# Aktivieren
swapon /swapfile

Swappiness

Swappiness bestimmt, wie aggressiv Linux Swap nutzt:

  • 0: Swap nur wenn RAM voll (fast nie)
  • 10: Wenig Swap (für Server empfohlen)
  • 60: Standard (für Desktop)
  • 100: Aggressives Swapping

Aktuellen Wert prüfen

cat /proc/sys/vm/swappiness

Temporär ändern

sysctl vm.swappiness=10

Permanent ändern

In /etc/sysctl.conf:

vm.swappiness=10
sysctl -p

Weitere Swap-Parameter

vfs_cache_pressure

Steuert, wie aggressiv Caches freigegeben werden:

# Standard: 100
# Für Server mit viel RAM: 50
vm.vfs_cache_pressure=50

Empfohlene Server-Konfiguration

In /etc/sysctl.d/99-swap.conf:

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

Swap-Nutzung überwachen

Kontinuierlich

# Mit watch
watch -n 1 free -h

# Mit vmstat
vmstat 1

# In htop
htop

Swap pro Prozess

# Prozesse nach Swap-Nutzung sortiert
for file in /proc/*/status; do
    awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file
done | sort -k 2 -n -r | head -20

Mit smem

apt install smem
smem -s swap -r

Swap auf SSD

Swap auf SSDs ist in Ordnung:

  • Moderne SSDs halten viele Schreibzyklen aus
  • Swap schreibt selten bei ausreichend RAM
  • Performance deutlich besser als auf HDD

Wear-Leveling beachten

SSD-Controller verteilt Schreibzugriffe automatisch.

Swap-Probleme erkennen

Hohe Swap-Nutzung

# Prüfen
free -h

# Wenn Swap hoch und RAM auch hoch: RAM erweitern
# Wenn Swap hoch und RAM frei: Swappiness reduzieren

Swap-Thrashing

System lagert ständig aus und wieder ein:

# I/O-Wait prüfen
vmstat 1
# si/so Spalten zeigen Swap-I/O

Lösungen:

  • RAM erweitern
  • Speicherlecks finden
  • Prozesse begrenzen

Swap mit zram (komprimiert)

zram komprimiert Swap im RAM:

apt install zram-tools

In /etc/default/zramswap:

PERCENT=50
systemctl enable zramswap
systemctl start zramswap

Prüfen:

zramctl

Mehrere Swap-Bereiche

Mit Priorität

swapon -p 10 /swapfile1
swapon -p 5 /swapfile2

In /etc/fstab:

/swapfile1 none swap sw,pri=10 0 0
/swapfile2 none swap sw,pri=5 0 0

Höhere Priorität wird zuerst verwendet.

Zusammenfassung

AufgabeBefehl
Swap prüfenswapon --show
RAM/Swap anzeigenfree -h
Swap-Datei erstellenfallocate -l 4G /swapfile
Formatierenmkswap /swapfile
Aktivierenswapon /swapfile
Deaktivierenswapoff /swapfile
Swappiness setzensysctl vm.swappiness=10

Fazit

Swap ist ein Sicherheitsnetz, kein RAM-Ersatz. Für Server empfehle ich eine moderate Swap-Größe (2-4 GB) und niedrige Swappiness (10). Bei ständig hoher Swap-Nutzung sollten Sie RAM erweitern statt mehr Swap zu nutzen.