#
🚀 Btrfs RAID-0 Optimierung für Proxmox & Linux
Diese Anleitung beschreibt, wie du ein Btrfs-RAID 0 (Stripe) auf zwei NVMe-SSDs optimal für Performance, Stabilität und Lebensdauer konfigurierst. Sie ist universell nutzbar für Proxmox VE, Debian 12, Ubuntu 22.04 und andere Linux-Systeme mit Kernel ≥ 5.10.
#
🧱 Voraussetzungen
- Zwei NVMe-SSDs im Btrfs RAID 0
- Root-Zugriff auf das System
- Kernel ≥ 5.10
- Optional: Proxmox VE 8 oder höher
#
⚙️ 1. Fstab-Optimierung
UUID ermitteln:
blkidIn
/etc/fstabden Mount-Eintrag anpassen:UUID=<DEINE-UUID> / btrfs noatime,ssd,space_cache=v2,compress=zstd:3,discard=async,commit=120,autodefrag 0 1Neu einhängen:
mount -o remount /Kontrolle:
mount | grep btrfs
#
✂️ 2. TRIM aktivieren
#
Einmalig ausführen
fstrim -av
#
Wöchentliche Automatik
systemctl enable --now fstrim.timer
systemctl status fstrim.timer
Ergebnis: active (waiting) → OK ✅
#
💨 3. Kompression dauerhaft aktivieren
Setzt Zstd-Kompression auf das Root-Subvolume:
btrfs property set / compression zstd:3
btrfs property get / compression
#
⚡ 4. NVMe-I/O-Scheduler optimieren
#
Aktuellen Scheduler prüfen
cat /sys/block/nvme0n1/queue/scheduler
cat /sys/block/nvme1n1/queue/scheduler
#
Auf none setzen
echo none | tee /sys/block/nvme0n1/queue/scheduler
echo none | tee /sys/block/nvme1n1/queue/scheduler
#
Dauerhaft speichern
nano /etc/udev/rules.d/60-ioscheduler.rules
Inhalt:
ACTION=="add|change", KERNEL=="nvme[0-9]*n[0-9]*", ATTR{queue/scheduler}="none"
Dann aktivieren:
udevadm control --reload-rules && udevadm trigger
#
🧠 5. CPU-Governor auf „performance“
Installieren und aktivieren:
apt install -y linux-cpupower
cpupower frequency-set -g performance
Optional dauerhaft:
systemctl enable cpupower.service
#
💾 6. Swap überprüfen
swapon --show
Swap auf NVMe-RAID-0 kann Performance kosten. → besser auf eine separate Partition oder Disk legen.
#
🧹 7. Regelmäßige Pflege
#
Balance- und Defragmentierung
btrfs balance start -dusage=75 -musage=75 /
btrfs filesystem defragment -r -clzo /
#
🧪 8. Performance-Tests
#
Random 4 K IOPS
fio --filename=/root/testfile --ioengine=libaio --direct=1 --rw=randrw --bs=4k --size=2G --numjobs=4 --iodepth=32 --runtime=60 --group_reporting --name=iotest
#
Sequentiell 1 MiB Durchsatz
fio --filename=/root/testfile --ioengine=libaio --direct=1 --rw=readwrite --bs=1M --size=4G --numjobs=4 --iodepth=16 --runtime=60 --group_reporting --name=seqtest
#
🧩 9. Automatische Optimierung beim Boot
#
/usr/local/bin/nvme-optimize.sh
#!/bin/bash
# Auto-Optimierung für NVMe + Btrfs
# CPU Performance Mode
if command -v cpupower &>/dev/null; then
cpupower frequency-set -g performance
fi
# TRIM
fstrim -av &>/dev/null
# NVMe Scheduler
for dev in /sys/block/nvme*n*/queue/scheduler; do
echo none > "$dev"
done
#
Systemd-Service /etc/systemd/system/nvme-optimize.service
[Unit]
Description=NVMe & Btrfs Optimizer
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/nvme-optimize.sh
[Install]
WantedBy=multi-user.target
Aktivieren:
chmod +x /usr/local/bin/nvme-optimize.sh
systemctl daemon-reload
systemctl enable --now nvme-optimize.service