Iotop: Identifying Disk Offenders (Artikel 267)
Präzise Identifizierung von I/O-Lastverursachern mit iotop. Erfahren Sie, wie Sie Prozesse aufspüren, die Ihre Festplatten blockieren, und wie Sie Schreib-/Lese-Raten live überwachen.
# Iotop Mastery: Wer blockiert die Festplatte?
TL;DR / Management Summary Ein Server, der durch hohe I/O-Last (Disk Wait) ausgebremst wird, ist ein Rätsel für Standard-Tools. Während
iostat(Artikel 266) zeigt, dass die Disk beschäftigt ist, zeigt uns iotop, wer dafür verantwortlich ist. Es ist ein interaktives Tool im Stil vontop, das den Durchsatz pro Prozess in Echtzeit visualisiert. Ein unverzichtbares Werkzeug, um Amok laufende Backup-Skripte oder Datenbank-Vollscans zu entlarven.
# 1. Einführung & Architektur
Die Brücke zwischen Prozess und Disk.
Der Linux-Kernel kann den I/O-Durchsatz für jeden Thread separat erfassen (wenn die Option CONFIG_TASK_IO_ACCOUNTING aktiv ist, was bei SLES/Arch Standard ist).
# Der Analyse-Fokus (Mermaid)
graph TD
A[Hard Disk / SSD] --> B{I/O Load}
B -->|Device View| C[iostat: sda is 100% busy]
B -->|Process View| D[iotop: Process 456 is writing 50MB/s]
D --> E[PID: 456 - mysqld]
D --> F[PID: 789 - backup.sh]
G[Admin Action] -->|renice / kill| D
# 2. Nutzung von iotop
Die interaktive Ansicht.
# Starten (erfordert Root-Rechte)
sudo iotop
# Wichtige interaktive Tasten
- o: Only-Modus ein/aus (Zeigt nur Prozesse, die aktuell I/O verursachen).
- p: Schaltet zwischen Prozessen und Threads um.
- Links/Rechts Pfeile: Sortierspalte ändern (Lesen, Schreiben, Swap, I/O-Wait).
# 3. Die wichtigsten Flags für Skripte
Überwachung automatisieren.
# Der ‘Batch’ Modus
Ideal für das Logging in eine Datei über einen Zeitraum hinweg:
# Zeige nur Prozesse mit I/O, 10 Wiederholungen
sudo iotop -b -n 10 -o > /tmp/io_analysis.txt
# Nur Prozesse anzeigen (keine Threads)
sudo iotop -P
# 4. Day-2 Operations: Ursachenforschung
Was tun bei hoher I/O-Last?
Wenn Sie den Übeltäter gefunden haben:
- Priorität senken: Nutzen Sie
ionice, um dem Prozess weniger I/O-Vorrang zu geben.# Setze Prozess auf 'Idle' Priorität sudo ionice -c 3 -p <PID> - Analyse des Inhalts: Nutzen Sie
lsof -p <PID>, um zu sehen, in welche Dateien der Prozess gerade schreibt.
# 5. Troubleshooting & “War Stories”
Wenn iotop nichts anzeigt.
# Story 1: “Der hängende NFS-Mount”
Symptom: iostat zeigt hohen Wait, aber iotop zeigt 0 B/s bei allen Prozessen.
Ursache: Der I/O-Stau entsteht nicht auf einer lokalen Disk, sondern durch einen hängenden Netzwerk-Speicher (NFS/CIFS). iotop kann Netzwerk-I/O auf Dateiebene oft nicht korrekt zuordnen, wenn der Kernel im RPC-Call blockiert.
Lösung: Nutzen Sie nfsstat oder prüfen Sie die Kernel-Warteschlangen mit cat /proc/mounts.
# Story 2: “Das volle Log-Problem”
Symptom: iotop zeigt, dass syslogd oder journald massiv auf die Platte schreiben.
Ursache: Ein anderer Dienst (z.B. eine Web-App) produziert hunderte Fehlermeldungen pro Sekunde. Der “Schuldige” in iotop ist nur der Bote (Logger).
Lösung: Schauen Sie sich die Logs mit tail -f /var/log/messages an, um den eigentlichen Verursacher zu finden.
# 6. Fazit & Empfehlung
- Pflicht: Nutzen Sie das Flag
-o. Auf einem System mit hunderten Prozessen ist die Gesamtansicht unübersichtlich. - Wahl: Nutzen Sie
ionice, um Backup-Prozesse daran zu hintern, den interaktiven Webserver-Traffic zu blockieren. - Tool: Auf modernsten Systemen (Kernel 5.x+) ist
btop(Artikel 265) eine visuell ansprechendere Alternative für den ersten schnellen Blick.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Starten interaktiv | sudo iotop |
| Nur aktive Prozesse | sudo iotop -o |
| Batch-Modus (Logging) | sudo iotop -b |
| Nur PIDs zeigen | sudo iotop -P |
| Spezifischen User prüfen | sudo iotop -u <user> |
| Hilfe anzeigen | iotop --help |
| I/O Priorität ändern | ionice -c 2 -n 0 -p <pid> (Realtime) |
| I/O Priorität sehen | ionice -p <pid> |
| Paket suchen (Arch) | sudo pacman -S iotop |
| Paket suchen (Alpine) | apk add iotop |