linux-cli-shell cli monitoring performance storage iotop

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 von top, 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:

  1. 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>
  2. 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