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

| System | swappiness | |--------|------------| | Desktop | 10-30 | | Server (viel RAM) | 10 | | Server (wenig RAM) | 60 | | Datenbank-Server | 1-10 | | SSD-System | 10 |

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

| Befehl | Funktion | |--------|----------| | swapon | Swap aktivieren | | swapoff | Swap deaktivieren | | mkswap | Swap-Bereich einrichten | | free -h | Speicher anzeigen | | swapon --show | Swap-Details |

| Parameter | Empfehlung | |-----------|------------| | swappiness | 10-30 für SSD/Desktop | | vfs_cache_pressure | 50-100 |

| Swap-Größe | Empfehlung | |------------|------------| | < 2 GB RAM | 2x RAM | | 2-8 GB RAM | = RAM | | 8-64 GB RAM | Min. 4 GB | | > 64 GB RAM | Min. 4 GB oder 0 |

| Datei | Funktion | |-------|----------| | /etc/fstab | Permanente Mounts | | /etc/sysctl.conf | Kernel-Parameter | | /proc/swaps | Aktive 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.