Swap ist virtueller Speicher, der RAM erweitert, indem Daten auf die Festplatte ausgelagert werden. Die richtige Konfiguration verbessert die Stabilität Ihres Servers.

Swap-Grundlagen

Wozu Swap?

- Erweitert verfügbaren Speicher
- Verhindert Out-of-Memory (OOM)
- Ermöglicht Hibernation
- Puffer für Speicherspitzen

Swap vs. RAM

| Eigenschaft | RAM | Swap | |-------------|-----|------| | Geschwindigkeit | ~25 GB/s | ~500 MB/s (SSD) | | Preis | Teuer | Günstig | | Persistenz | Flüchtig | Persistent | | Latenz | Nanosekunden | Millisekunden |

Swap-Status prüfen

Aktuellen Swap anzeigen

# Übersicht
free -h

# Detailliert
swapon --show

# Alle Swap-Bereiche
cat /proc/swaps

Speichernutzung

# RAM und Swap
free -m

# Detailliert
vmstat 1

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

Swap-Datei erstellen

Swap-Datei anlegen

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

# Oder mit dd (langsamer, aber universell)
dd if=/dev/zero of=/swapfile bs=1G count=4

# Berechtigungen setzen
chmod 600 /swapfile

Swap formatieren und aktivieren

# Als Swap formatieren
mkswap /swapfile

# Swap aktivieren
swapon /swapfile

# Prüfen
swapon --show

Permanent einrichten

# /etc/fstab
echo '/swapfile none swap sw 0 0' >> /etc/fstab

Swap-Partition erstellen

Mit fdisk

# Partition erstellen
fdisk /dev/sdb

# Befehle:
# n - Neue Partition
# p - Primary
# t - Typ ändern auf 82 (Linux swap)
# w - Schreiben und beenden

Swap formatieren

mkswap /dev/sdb1
swapon /dev/sdb1

In fstab eintragen

# UUID ermitteln
blkid /dev/sdb1

# /etc/fstab
UUID=xxx-xxx-xxx none swap sw 0 0

Swap-Größe

Empfehlungen

| RAM | Swap (ohne Hibernation) | Swap (mit Hibernation) | |-----|------------------------|------------------------| | < 2 GB | 2x RAM | 3x RAM | | 2-8 GB | 1x RAM | 2x RAM | | 8-64 GB | 4-8 GB | 1.5x RAM | | > 64 GB | 4 GB | 1x RAM |

Für Server

Empfehlung:
- Web-Server: 1-2 GB
- Datenbank-Server: 4-8 GB
- VPS mit wenig RAM: 1x RAM
- Dedicated mit viel RAM: 4-8 GB fix

Swappiness

Was ist Swappiness?

Swappiness (0-100):
- 0: Swap nur bei absoluter Notwendigkeit
- 10: Minimales Swapping (empfohlen für Server)
- 60: Standard (Ubuntu Desktop)
- 100: Aggressives Swapping

Aktuellen Wert prüfen

cat /proc/sys/vm/swappiness

Temporär ändern

sysctl vm.swappiness=10

Permanent ändern

echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p

Empfehlung nach Anwendung

| Anwendung | Swappiness | |-----------|------------| | Server mit viel RAM | 10 | | Datenbank-Server | 1-10 | | Desktop | 60 | | SSD-System | 10 | | HDD-System | 60 |

VFS Cache Pressure

Was ist cache_pressure?

Bestimmt, wie aggressiv der Kernel Caches freigibt:
- 0: Nie freigeben (nicht empfohlen)
- 50: Ausgeglichen
- 100: Standard
- >100: Aggressiv freigeben

Konfigurieren

# Temporär
sysctl vm.vfs_cache_pressure=50

# Permanent
echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf
sysctl -p

Swap verwalten

Swap deaktivieren

# Einzelne Swap-Quelle
swapoff /swapfile

# Allen Swap deaktivieren
swapoff -a

Swap reaktivieren

swapon /swapfile
# Oder alle aus fstab
swapon -a

Swap-Datei vergrößern

# Swap deaktivieren
swapoff /swapfile

# Datei vergrößern
fallocate -l 8G /swapfile

# Neu formatieren
mkswap /swapfile

# Aktivieren
swapon /swapfile

Swap-Datei löschen

swapoff /swapfile
rm /swapfile
# Eintrag aus /etc/fstab entfernen

Swap-Priorität

Priorität setzen

# Höhere Priorität = wird zuerst verwendet
swapon -p 10 /swapfile
swapon -p 5 /dev/sdb1

In fstab

/swapfile none swap sw,pri=10 0 0
/dev/sdb1 none swap sw,pri=5 0 0

ZRAM (komprimierter RAM-Swap)

ZRAM installieren

# Debian/Ubuntu
apt install zram-tools

Konfiguration

# /etc/default/zramswap

# Prozent des RAM für ZRAM
PERCENT=25

# Priorität
PRIORITY=100

# Kompressionsalgorithmus
ALGO=lz4

Aktivieren

systemctl enable --now zramswap

Status prüfen

zramctl

Vorteile von ZRAM

- Schneller als Festplatten-Swap
- Reduziert SSD-Verschleiß
- 2-3x Kompressionsrate möglich
- Ideal für Server mit wenig RAM

Monitoring

Swap-Nutzung überwachen

# Kontinuierlich
watch -n 1 'free -h; echo; swapon --show'

# Mit vmstat
vmstat 1

# Mit sar
sar -r 1

Swap-intensive Prozesse

# Top Swap-Nutzer
ps aux --sort=-%mem | head -20

# Detailliert pro Prozess
for file in /proc/*/status; do
    awk '/VmSwap|Name/{printf $2 " " $3}END{print ""}' $file 2>/dev/null
done | sort -k 2 -n -r | head

Alert bei hohem Swap

#!/bin/bash
# /usr/local/bin/swap-alert.sh

THRESHOLD=80  # Prozent

SWAP_TOTAL=$(free | grep Swap | awk '{print $2}')
SWAP_USED=$(free | grep Swap | awk '{print $3}')

if [ $SWAP_TOTAL -gt 0 ]; then
    PERCENT=$((SWAP_USED * 100 / SWAP_TOTAL))

    if [ $PERCENT -gt $THRESHOLD ]; then
        echo "Swap usage: $PERCENT%" | mail -s "Swap Alert" admin@example.com
    fi
fi

Swap und SSD

SSD-Optimierung

# Niedrige Swappiness für weniger Schreibzugriffe
vm.swappiness = 10

# TRIM aktivieren (in fstab)
/swapfile none swap sw,discard 0 0

Lebensdauer schützen

Empfehlungen für SSD:
- Swappiness auf 10 setzen
- ZRAM vorschalten
- Ausreichend RAM installieren
- Swap auf separate HDD (falls vorhanden)

Troubleshooting

System langsam durch Swapping

# Swappiness reduzieren
sysctl vm.swappiness=10

# Swap leeren (wenn genug RAM frei)
swapoff -a && swapon -a

OOM-Killer aktiv

# Logs prüfen
dmesg | grep -i "out of memory"
journalctl -k | grep -i oom

# Mehr Swap hinzufügen
fallocate -l 4G /swapfile2
mkswap /swapfile2
swapon /swapfile2

Swap wird nicht genutzt

# Swappiness prüfen
cat /proc/sys/vm/swappiness

# Swap aktiviert?
swapon --show

# Berechtigungen
ls -la /swapfile  # Muss 600 sein

Zusammenfassung

| Aufgabe | Befehl | |---------|--------| | Status 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 | | Permanent | /etc/fstab und /etc/sysctl.conf |

Fazit

Swap ist wichtig für die Systemstabilität, auch bei ausreichend RAM. Für Server empfiehlt sich niedrige Swappiness (10) und moderate Swap-Größe (4-8 GB). Bei SSDs schützt ZRAM die Lebensdauer. Überwachen Sie die Swap-Nutzung und reagieren Sie auf hohe Werte mit RAM-Erweiterung oder Prozess-Optimierung.