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/swapsSwap-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=40962. Berechtigungen setzen
chmod 600 /swapfile3. Als Swap formatieren
mkswap /swapfile4. Swap aktivieren
swapon /swapfile5. Prüfen
swapon --show6. Permanent machen
In /etc/fstab hinzufügen:
/swapfile none swap sw 0 0Swap-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 /swapfilePermanent entfernen
# Deaktivieren
swapoff /swapfile
# Aus fstab entfernen
nano /etc/fstab
# Zeile mit /swapfile löschen
# Datei löschen
rm /swapfileSwap-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 /swapfileSwappiness
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/swappinessTemporär ändern
sysctl vm.swappiness=10Permanent ändern
In /etc/sysctl.conf:
vm.swappiness=10sysctl -pWeitere Swap-Parameter
vfs_cache_pressure
Steuert, wie aggressiv Caches freigegeben werden:
# Standard: 100
# Für Server mit viel RAM: 50
vm.vfs_cache_pressure=50Empfohlene Server-Konfiguration
In /etc/sysctl.d/99-swap.conf:
vm.swappiness=10
vm.vfs_cache_pressure=50sysctl -p /etc/sysctl.d/99-swap.confSwap-Nutzung überwachen
Kontinuierlich
# Mit watch
watch -n 1 free -h
# Mit vmstat
vmstat 1
# In htop
htopSwap 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 -20Mit smem
apt install smem
smem -s swap -rSwap 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 reduzierenSwap-Thrashing
System lagert ständig aus und wieder ein:
# I/O-Wait prüfen
vmstat 1
# si/so Spalten zeigen Swap-I/OLösungen:
- RAM erweitern
- Speicherlecks finden
- Prozesse begrenzen
Swap mit zram (komprimiert)
zram komprimiert Swap im RAM:
apt install zram-toolsIn /etc/default/zramswap:
PERCENT=50systemctl enable zramswap
systemctl start zramswapPrüfen:
zramctlMehrere Swap-Bereiche
Mit Priorität
swapon -p 10 /swapfile1
swapon -p 5 /swapfile2In /etc/fstab:
/swapfile1 none swap sw,pri=10 0 0
/swapfile2 none swap sw,pri=5 0 0Hö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.