Überwachung der Festplatten-E/A mit iostat und dstat: Engpässe aufspüren | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Ü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.

Tip

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

Info

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.

Info

„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.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA