Swap ist virtueller Speicher, der RAM auf die Festplatte auslagert. Er verhindert Out-of-Memory-Situationen und ermöglicht Hibernation.

Swap-Status prüfen

# Swap-Nutzung anzeigen
free -h
swapon --show

# Detailliert
cat /proc/swaps
vmstat -s

# Swap-Aktivität
vmstat 1

Swap-Partition

Partition erstellen

# Partitionierung mit fdisk
fdisk /dev/sdb

# n = neue Partition
# t = Typ auf 82 (Linux swap) setzen
# w = schreiben

# Oder mit parted
parted /dev/sdb
(parted) mkpart primary linux-swap 1MiB 4GiB

Swap aktivieren

# Swap-Bereich einrichten
mkswap /dev/sdb1

# Aktivieren
swapon /dev/sdb1

# Status prüfen
swapon --show

Permanent in fstab

# UUID ermitteln
blkid /dev/sdb1

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

# Oder
/dev/sdb1           none    swap    sw    0    0

Swap-Datei

Swap-Datei erstellen

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

# Oder mit dd (langsamer, aber sicherer)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096

# Berechtigungen setzen
sudo chmod 600 /swapfile

# Als Swap einrichten
sudo mkswap /swapfile

# Aktivieren
sudo swapon /swapfile

Permanent machen

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

Swap-Datei vergrößern

# 1. Deaktivieren
sudo swapoff /swapfile

# 2. Vergrößern
sudo fallocate -l 8G /swapfile
# Oder: sudo dd if=/dev/zero of=/swapfile bs=1M count=8192

# 3. Neu einrichten
sudo mkswap /swapfile

# 4. Aktivieren
sudo swapon /swapfile

Swap-Datei entfernen

# 1. Deaktivieren
sudo swapoff /swapfile

# 2. Aus fstab entfernen
# (manuell editieren)

# 3. Datei löschen
sudo rm /swapfile

Swappiness

Swappiness verstehen

swappiness = 0:   Swap nur bei absolutem Speichermangel
swappiness = 10:  Minimales Swapping
swappiness = 60:  Standard
swappiness = 100: Aggressives Swapping

Aktuellen Wert prüfen

cat /proc/sys/vm/swappiness
# Standard: 60

Temporär ändern

sudo sysctl vm.swappiness=10

Permanent ändern

# In /etc/sysctl.conf
echo 'vm.swappiness=10' >> /etc/sysctl.conf

# Anwenden
sudo sysctl -p

Empfohlene Werte

Systemswappiness
Desktop10-30
Server (viel RAM)10
Server (wenig RAM)60
Datenbank-Server1-10
SSD-System10

vfs_cache_pressure

Wert verstehen

vfs_cache_pressure kontrolliert, wie aggressiv
der Kernel Dentry und Inode Caches freigibt.

100 = Standard (fair balance)
< 100 = Caches bevorzugt behalten
> 100 = Caches aggressiver freigeben

Für Desktop/SSD

# In /etc/sysctl.conf
vm.vfs_cache_pressure=50

# Anwenden
sysctl -p

Swap-Priorität

Mehrere Swap-Bereiche

# Priorität bei swapon
swapon -p 100 /dev/sdb1   # Höhere Priorität
swapon -p 10 /swapfile    # Niedrigere Priorität

# In fstab
/dev/sdb1    none    swap    sw,pri=100    0    0
/swapfile    none    swap    sw,pri=10     0    0

SSD vor HDD

# SSD-Swap zuerst nutzen
/dev/ssd_swap    none    swap    sw,pri=100    0    0
/dev/hdd_swap    none    swap    sw,pri=10     0    0

Swap auf SSD

Empfehlungen

- Swappiness reduzieren (10-30)
- Nicht zu groß (RAM-Größe oder weniger)
- TRIM aktivieren wenn möglich

Discard aktivieren

# In fstab (wenn SSD TRIM unterstützt)
/swapfile    none    swap    sw,discard    0    0

zswap (Kompression)

zswap aktivieren

# Boot-Parameter
# In /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... zswap.enabled=1"

# Update grub
update-grub
reboot

Status prüfen

cat /sys/module/zswap/parameters/enabled
# Y = aktiviert

# Statistiken
grep -r . /sys/kernel/debug/zswap/

zram (Alternative)

# zram-tools installieren
apt install zram-tools

# Konfiguration
# /etc/default/zramswap
ALGO=lz4
PERCENT=25

systemctl enable zramswap
systemctl start zramswap

# Status
zramctl

Monitoring

Swap-Nutzung überwachen

# Kontinuierlich
watch -n 1 'free -h'

# vmstat (si=swap in, so=swap out)
vmstat 1
# procs -----------memory---------- ---swap-- -----io----
#  r  b   swpd   free  buff  cache   si   so    bi    bo

# Per-Prozess Swap
for f in /proc/*/status; do
    awk '/VmSwap/{swap=$2} /Name/{name=$2} END{if(swap>0) print swap, name}' $f
done 2>/dev/null | sort -rn | head -20

Hoher Swap = Problem?

- Gelegentliches Swapping: Normal
- Konstant hoher Swap: RAM zu knapp
- Swap I/O (si/so hoch): Performance-Problem

Lösungen:
1. Mehr RAM
2. Prozesse optimieren
3. OOM-Killer konfigurieren

Swap und Hibernation

Swap für Hibernation

# Swap muss >= RAM sein
# Resume-Parameter in Grub

# UUID der Swap-Partition/Datei
blkid /dev/sdb1

# In /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=xxx-xxx"

# Für Swap-Datei zusätzlich:
# resume_offset ermitteln
filefrag -v /swapfile | awk '$1=="0:"{print $4}'

GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=xxx resume_offset=123456"

update-grub

Zusammenfassung

BefehlFunktion
swaponSwap aktivieren
swapoffSwap deaktivieren
mkswapSwap-Bereich einrichten
free -hSpeicher anzeigen
swapon --showSwap-Details
ParameterEmpfehlung
swappiness10-30 für SSD/Desktop
vfs_cache_pressure50-100
Swap-GrößeEmpfehlung
< 2 GB RAM2x RAM
2-8 GB RAM= RAM
8-64 GB RAMMin. 4 GB
> 64 GB RAMMin. 4 GB oder 0
DateiFunktion
/etc/fstabPermanente Mounts
/etc/sysctl.confKernel-Parameter
/proc/swapsAktive Swaps

Fazit

Swap ist ein wichtiger Sicherheitspuffer für Linux-Systeme. Die richtige Größe hängt vom Einsatzzweck ab. Swappiness sollte für SSDs und Server reduziert werden. Swap-Dateien sind flexibler als Partitionen. zswap und zram bieten Kompression für bessere Performance. Regelmäßiges Monitoring verhindert Überraschungen.