Überwachung der Festplatten-E/A mit iostat und dstat: Engpässe aufspüren
Einleitung
Die Überwachung der Festplatten-E/A ist eine der wichtigsten Aufgaben beim Betrieb von Servern in einer Hosting-Infrastruktur. Das Festplattensubsystem wirkt sich direkt auf die Leistung von Webdiensten, Datenbanken, virtuellen Maschinen, Containern und Hintergrundaufgaben aus. Selbst bei ausreichendem Arbeitsspeicher und freien CPU-Ressourcen kann eine überlastete oder langsame Festplatte zum Engpass des gesamten Systems werden.
Dieses Handbuch richtet sich an Systemadministratoren, DevOps-Ingenieure und Serverbetreiber. Es behandelt die Dienstprogramme „iostat“ und „dstat“, deren Funktionsweise, die Interpretation der Kennzahlen sowie einen praktischen Ansatz zur Ermittlung von Festplatten-E/A-Engpässen in einer Hosting-Umgebung.
Allgemeine Informationen und Funktionsprinzipien
Festplatten-E/A in einer Serverinfrastruktur
Die Festplatten-E/A umfasst Lese- und Schreibvorgänge von Daten auf Blockgeräten. In realen Hosting-Szenarien wird die Auslastung des Festplattensubsystems meist verursacht durch:
- Datenbanken (MySQL, MariaDB, PostgreSQL);
- Webanwendungen mit dynamischen Inhalten;
- E-Mail-Dienste;
- Datensicherung und -synchronisierung;
- Protokollierung;
- Swap- und temporäre Dateien;
- Benutzerskripte und Cron-Jobs.
Engpässe können durch langsame Speichergeräte, hohe Konkurrenz zwischen Prozessen, nicht optimale E/A-Scheduler, fehlerhafte Caching-Vorgänge oder Virtualisierungsfunktionen entstehen.
Zweck von iostat und dstat
iostat ist ein Dienstprogramm aus dem sysstat-Paket, das dazu dient, detaillierte Statistiken zur Auslastung von CPU und Festplatten zu erfassen. Die Hauptaufgabe von iostat besteht darin, anzuzeigen, wie intensiv eine bestimmte Festplatte genutzt wird, ob eine Anforderungswarteschlange vorliegt und wie hoch die durchschnittliche Wartezeit für Operationen ist.
dstat ist ein vielseitiges Überwachungstool, das Echtzeitstatistiken über mehrere Subsysteme gleichzeitig anzeigt: CPU, Arbeitsspeicher, Festplatte, Netzwerk und Prozesse. Es ermöglicht es Ihnen, die Festplattenaktivität mit der Gesamtauslastung des Servers in Zusammenhang zu bringen, und eignet sich gut für eine schnelle Diagnose.
Diese Dienstprogramme ergänzen sich gegenseitig: iostat liefert ein genaues Bild auf Geräteebene, während dstat den Kontext des gesamten Systems bereitstellt.
Voraussetzungen und Anforderungen
Bevor Sie mit der Analyse beginnen, müssen die folgenden Bedingungen erfüllt sein:
- Linux-Betriebssystem (Debian, Ubuntu, AlmaLinux, Rocky Linux, CentOS).
- SSH-Zugriff auf den Server.
- Root-Rechte oder die Möglichkeit, Befehle über sudo auszuführen.
Überprüfen der Betriebssystemversion:
cat /etc/os-release
Installation der erforderlichen Pakete:
Debian / Ubuntu:
sudo apt update sudo apt install sysstat dstat
CentOS / RHEL / AlmaLinux / Rocky Linux:
sudo yum install sysstat dstat # or sudo dnf install sysstat dstat
Überprüfung der Funktion von sysstat:
systemctl status sysstat
Wenn der Dienst aktiv ist, werden die entsprechenden Informationen angezeigt:
root@server:~# systemctl status sysstat ● sysstat.service - Resets System Activity Logs Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; preset: enabled) Active: active (exited) since Tue 2025-12-23 10:35:35 UTC; 16min ago Docs: man:sa1(8) man:sadc(8) man:sar(1) Main PID: 731 (code=exited, status=0/SUCCESS) CPU: 7ms
Schrittweise Überprüfung und Analyse
Grundlegende Festplattenanalyse mit iostat
Das Dienstprogramm „iostat“ dient zur Beurteilung der Auslastung von CPU und Festplattensubsystem sowie zur Identifizierung von E/A-Verzögerungen und Warteschlangen.
Syntax:
sudo iostat [options] [interval] [count]
Am häufigsten verwendete Parameter:
- -x – erweiterte Statistiken;
- -d – nur Festplattendaten;
- -k – Ausgabe in Kilobyte;
- -p – Statistiken für Partitionen oder ein bestimmtes Gerät.
Einfaches Beispiel:
sudo iostat -x
Dynamische Analyse:
sudo iostat -xk 5 3
Das Intervall und die Anzahl der Stichproben ermöglichen es Ihnen, Laständerungen im Zeitverlauf zu verfolgen, anstatt den durchschnittlichen Zustand seit dem Systemstart zu betrachten.
Beispiel für eine iostat-Ausgabe

Wichtige CPU-Kennzahlen:
- %iowait – der prozentuale Anteil der Zeit, in der die CPU im Leerlauf ist und auf E/A-Vorgänge wartet. Ein Anstieg dieser Kennzahl deutet auf den Einfluss der Festplatte auf die Gesamtleistung hin.
- %steal – relevant für virtuelle Server und zeigt die gestohlene CPU-Zeit an.
Wichtige Festplattenkennzahlen:
- %util – der prozentuale Anteil der Zeit, in der die Festplatte ausgelastet war. Werte, die dauerhaft über 80–90 % liegen, deuten auf eine Auslastung des Geräts hin.
- r_await – die durchschnittliche Zeit (ms) bis zum Abschluss von Lesevorgängen (einschließlich Wartezeit in der Warteschlange).
- w_await – die durchschnittliche Zeit (ms) bis zum Abschluss von Schreibvorgängen (einschließlich Wartezeit in der Warteschlange).
- aqu-sz – (durchschnittliche Warteschlangengröße): Die durchschnittliche Länge der Anforderungswarteschlange für die Festplatte. Ein Wert > 1 deutet bereits auf die Bildung einer Warteschlange hin. Ein Wert > 2–4 bei HDD bzw. > 1–2 bei SSD ist ein Zeichen dafür, dass die Festplatte mit der Last nicht Schritt halten kann.
Der Unterschied zwischen „await“ und „svctm“ zeigt an, ob die Verzögerung durch die Warteschlange und nicht durch die physische Festplattengeschwindigkeit verursacht wird.
Wenn „await“ „svctm“ nur geringfügig übersteigt (Differenz < 20–30 %), werden die Verzögerungen hauptsächlich durch die Festplatte selbst verursacht (langsames physisches Lesen/Schreiben).
Ist „await“ deutlich größer als „svctm“ (Differenz > 50–100 %), wird die Hauptverzögerung durch die Anforderungswarteschlange verursacht (aqu-sz ist hoch), was auf eine Überlastung des Laufwerks durch viele parallele Anforderungen hindeutet.
In modernen Versionen von iostat (wie im Beispiel) wird svctm nicht angezeigt, da seine Berechnung unzuverlässig ist. Zur Analyse wird die Kombination aus „await“ und „aqu-sz“ herangezogen: Ein hoher „await“-Wert bei niedrigem „aqu-sz“-Wert (~0) deutet auf eine langsame Festplatte hin; ein hoher „await“-Wert bei hohem „aqu-sz“-Wert (>1) deutet darauf hin, dass die Festplatte mit Anfragen überlastet ist.
Analyse des Gesamtbildes mit dstat
„dstat“ wird zur Echtzeit-Systemüberwachung und zur Korrelation der Festplattenauslastung mit anderen Ressourcen verwendet.
Befehlsbeispiele:
dstat -d dstat --disk-util dstat -rd --disk-util dstat -D vda,sda
Beispielausführung mit einem Intervall:
dstat -rd --disk-util 1 5
Achten Sie bei der Analyse auf:
- Anstieg von iowait in der CPU;
- Lese- oder Schreibspitzen;
- gleichzeitige Netzwerk- und Festplattenaktivität (Backups, Synchronisation).
Example dstat output: dstat -rd --disk-util 1 5 --io/total- -dsk/total- vda- read write| read write|util 0 4.00 | 0 76k|0.50 0 29.5 | 0 240k|0.20 0 1.00 | 0 4096B| 0 0 0 | 0 0 | 0 0 1.00 | 0 32k| 0
Vergleich von dstat und iostat:
| Kriterien | iostat | dstat |
|---|---|---|
| Datengenauigkeit | Hoch | Hoch |
| Echtzeitmodus | Eingeschränkt | Hervorragend |
| Historische Daten | Ja (sar) | Nein |
| Farbige Ausgabe | Nein | Ja |
| Erweiterbarkeit | Nein | Plugins |
| CSV-Export | Nein | Ja |
| CPU-Auslastung | Gering | Mittel |
dstat ist besonders nützlich für kurzfristige Auslastungsspitzen, die in iostat nicht immer erkennbar sind.
Erkennen von Festplatten-E/A-Engpässen
Die folgenden Befehle dienen der schnellen Diagnose:
sudo iostat -mx 2 sudo iostat -p /dev/vda 2 5 sar -d 1 5
Typische Anzeichen für ein Problem:
- %util über 80 % über einen längeren Zeitraum;
- „await“ über 20–30 ms bei SSDs oder über 50–100 ms bei Festplatten;
- aqu-sz größer als 2–3, was auf einen Warteschlangenstau hindeutet.
Im Beispiel wird die Festplatte /dev/vda verwendet – hierbei handelt es sich um eine virtuelle Festplatte (VirtIO) auf einem virtuellen Server.
Auf physischen Servern und in anderen Umgebungen können Festplatten anders benannt sein:
- /dev/sdX (z. B. /dev/sda) – herkömmliche SATA-/SAS-/USB-Festplatten
- /dev/nvmeXnY (z. B. /dev/nvme0n1) – NVMe-Laufwerke
- /dev/vdX – virtuelle Festplatten
Identifizierung von Prozessen, die eine hohe Festplatten-E/A-Auslastung verursachen
Nachdem mithilfe von `iostat` und `dstat` festgestellt wurde, dass das Festplattensubsystem überlastet ist, besteht der nächste Schritt darin, die spezifischen Prozesse zu identifizieren, die intensive Lese- oder Schreibvorgänge auslösen. Eine Analyse auf Geräteebene ohne Identifizierung der Belastungsquelle ermöglicht keine korrekten Abhilfemaßnahmen.
Verwendung von iotop
Das wichtigste Tool zum Auffinden von Prozessen, die die Festplatte aktiv nutzen, ist das Dienstprogramm iotop.
sudo iotop -ao
Befehlsparameter:
-a – zeigt kumulative Statistiken seit dem Start des Prozesses an, was dabei hilft, Hintergrundaufgaben mit langfristigen E/A-Vorgängen zu identifizieren;
-o – zeigt nur diejenigen Prozesse an, die derzeit E/A-Vorgänge ausführen.
Beispielausgabe:
TID 41PRIO USER41DISK READ41DISK WRITE41SWAPIN41IO>4141COMMAND 1105641be/441mysql410.00 B 413.44 M410.00 %410.76 %41mysqld 258041be/441rsync410.00 B4123.48 M410.00 %411.17 %41rsync
In der iotop-Ausgabe sollte besonderes Augenmerk auf die Felder „DISK READ“, „DISK WRITE“ und den prozentualen Anteil der E/A-Zeit gelegt werden. Typischerweise sind Datenbankprozesse, Sicherungsprozesse, Dateisynchronisationsprozesse oder Benutzerskripte die Ursachen für die Auslastung.
Verwendung von `pidstat` zur prozessbezogenen E/A-Analyse
Für eine formalisiertere und wiederholbare Analyse kann „pidstat“ verwendet werden, das Teil des „sysstat“-Pakets ist.
pidstat -d 1
Dieser Befehl gibt in Intervallen von einer Sekunde Festplatten-E/A-Statistiken für jeden Prozess aus. Dies ist praktisch, um kurzfristige Aktivitätsspitzen zu identifizieren und sie mit anderen Systemkennzahlen in Zusammenhang zu bringen.
„pidstat“ ist besonders nützlich in Situationen, in denen die Auslastung periodisch auftritt und möglicherweise nicht immer von „iotop“ erfasst wird.
Verwendung von lsof zur Analyse der Dateiaktivitäten
In Fällen, in denen ermittelt werden muss, mit welchen spezifischen Dateien oder Verzeichnissen ein Prozess arbeitet, wird das Dienstprogramm „lsof“ verwendet.
lsof +D /path
Dabei ist/path ein bestimmtes Verzeichnis, in dem aktive Dateien und Prozesse identifiziert werden sollen. Dies könnte beispielsweise ein Datenbankverzeichnis, ein Sicherungsverzeichnis oder ein Bereich für temporäre Dateien sein.
Mit dem Befehl lässt sich feststellen, welche Prozesse derzeit Dateideskriptoren halten und Operationen innerhalb des angegebenen Pfads ausführen, was besonders bei der Analyse der Auslastung durch Anwendungen nützlich ist.
Analyse des Auslastungskontexts
Das Identifizieren eines Prozesses mit hoher Festplattenaktivität ist nicht das Endziel. Der Administrator muss den Kontext seines Betriebs bewerten:
- Ist die Auslastung für diesen Dienst zu erwarten?
- Wird der Prozess zu einem angemessenen Zeitpunkt ausgeführt (z. B. Sicherungen während der Spitzenzeiten)?
- können der Zeitplan oder die Betriebsparameter geändert werden;
- ist es zulässig, die E/A-Priorität zu senken?
Dieser Ansatz ermöglicht es, normale Auslastung von problematischer Auslastung zu unterscheiden und die richtige Optimierungsmethode zu wählen.
Überprüfung der Richtigkeit der Analyse
Die Richtigkeit der durchgeführten Analyse wird bestätigt, wenn:
- Spitzenwerte bei %util, await oder aqu-sz in iostat zeitlich mit der Prozessaktivität in iotop oder pidstat übereinstimmen;
- ein Anstieg von „iowait“ in „dstat“ mit Festplattenoperationen zusammenfällt und nicht mit der CPU-Auslastung;
- wiederholte Messungen ein reproduzierbares Auslastungsmuster zeigen.
Für die Datenerfassung und anschließende Analyse wird die Verwendung der Protokollierung empfohlen:
sar -d 1 100 > io.log
Auf diese Weise können Sie das Verhalten des Festplattensubsystems über einen bestimmten Zeitraum aufzeichnen und die Daten bei der Untersuchung von Vorfällen nutzen.
Typische Fehler und betriebliche Besonderheiten
Im Betrieb von Hosting-Servern treten folgende Probleme am häufigsten auf:
- Durchführung von Backups und Datensynchronisationen während der Spitzenzeiten;
- starke Nutzung des Swap-Speichers bei unzureichendem RAM;
- ein für den Laufwerkstyp ungeeigneter E/A-Scheduler;
- fehlende Priorisierung von Hintergrundaufgaben.
Um die Auswirkungen von Hintergrundprozessen auf die Leistung zu verringern, wird empfohlen, das Dienstprogramm „ionice“ zur Verwaltung der E/A-Priorität eines Prozesses zu verwenden. Damit lassen sich die Auswirkungen von Hintergrundaufgaben auf die Reaktionsfähigkeit des Systems verringern.
Anwendungsbeispiel:
ionice -c3 rsync /source /destination
Wichtige Prioritäten:
- -c1 (Echtzeit) – die höchste Priorität. Wird für latenzkritische Aufgaben verwendet. Kann andere Prozesse vollständig blockieren.
- -c2 (Best-Effort) – die Standardeinstellung für die meisten Prozesse. Ermöglicht die Anpassung der Prioritätsstufe (von 0 (hoch) bis 7 (niedrig)).
- -c3 (idle) – Hintergrund. Der Prozess erhält nur dann Zugriff auf die Festplatte, wenn kein anderer Prozess diese gerade nutzt. Sicher und empfohlen für Hintergrundvorgänge (Backups, Datensynchronisation).
In diesem Beispiel läuft der rsync-Prozess mit der niedrigsten E/A-Priorität, wodurch seine Auswirkungen auf die Kernfunktionen des Systems minimiert werden. Mit ionice können Sie die Auswirkungen von Hintergrundprozessen minimieren, ohne diese vollständig deaktivieren zu müssen.
Fazit
Die Überwachung der Festplatten-E/A ist ein wesentlicher Bestandteil der Aufrechterhaltung der Leistung und Stabilität einer Serverinfrastruktur. Mit den Dienstprogrammen `iostat` und `dstat` können Sie Überlastungssituationen erkennen und den Zustand des Festplattensubsystems beurteilen, während Tools wie `iotop`, `pidstat` und `lsof` dabei helfen, bestimmte Prozesse und die Art ihrer Auslastung zu identifizieren.
Die regelmäßige Anwendung des beschriebenen Ansatzes, die korrekte Interpretation der Kennzahlen und die Steuerung der E/A-Prioritäten tragen dazu bei, die Reaktionszeiten der Dienste zu verkürzen, die Vorhersagbarkeit der Auslastung zu erhöhen und die Einhaltung der SLA-Anforderungen sicherzustellen. In einem nächsten Schritt lässt sich diese Methodik durch eine zentralisierte Überwachung und die Automatisierung der E/A-Auslastungsanalyse erweitern.