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

| Aspekt | Partition | Datei | |--------|-----------|-------| | Performance | Minimal besser | Fast gleich | | Flexibilität | Schwer änderbar | Einfach anpassbar | | Einrichtung | Komplexer | Einfacher | | Empfehlung | VMs, Installer | Nachträ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

| RAM | Swap (ohne Hibernation) | Swap (mit Hibernation) | |-----|-------------------------|------------------------| | ≤2 GB | 2x RAM | 3x RAM | | 2-8 GB | = RAM | 2x RAM | | 8-64 GB | 4-8 GB | 1,5x RAM | | >64 GB | 4 GB | Nicht 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

| Aufgabe | Befehl | |---------|--------| | Swap prüfen | swapon --show | | RAM/Swap anzeigen | free -h | | Swap-Datei erstellen | fallocate -l 4G /swapfile | | Formatieren | mkswap /swapfile | | Aktivieren | swapon /swapfile | | Deaktivieren | swapoff /swapfile | | Swappiness setzen | sysctl 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.