Überwachung der Festplatten-I/O mit iostat und dstat | INTROSERV
EUR
european

EUR

usa

USD

German De
Ex. VAT Ex. VAT 0%

Überwachung der Festplatten-I/O mit iostat und dstat

Einführung

Die Überwachung von Festplatten-Ein-/Ausgaben ist eine der Schlüsselaufgaben beim Betrieb von Servern in einer Hosting-Infrastruktur. Das Festplattensubsystem beeinflusst direkt die Leistung von Webdiensten, Datenbanken, virtuellen Maschinen, Containern und Hintergrundaufgaben. Selbst bei ausreichendem RAM 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 Serverbesitzer. Es behandelt die Dienstprogramme iostat und dstat, die Prinzipien ihrer Funktionsweise, die Interpretation von Metriken und einen praktischen Ansatz zur Identifizierung von Engpässen bei der Festplatten-E/A in einer Hosting-Umgebung.

Allgemeine Informationen und Funktionsprinzipien

Festplatten-E/A in einer Serverinfrastruktur

Festplatten-Ein-/Ausgaben umfassen Lese- und Schreibvorgänge von Daten auf Blockgeräte. In realen Hosting-Szenarien wird die Last auf das Festplattensubsystem am häufigsten durch folgende Faktoren erzeugt:

  • Datenbanken (MySQL, MariaDB, PostgreSQL);
  • Webanwendungen mit dynamischem Inhalt;
  • E-Mail-Dienste;
  • Datensicherung und -synchronisation;
  • 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-Planer, fehlerhafte Cache-Operationen oder Virtualisierungsfunktionen auftreten.

Zweck von iostat und dstat

iostat ist ein Dienstprogramm aus dem sysstat-Paket, das entwickelt wurde, um detaillierte Statistiken über die CPU- und Festplattenauslastung zu sammeln. Die Hauptaufgabe von iostat besteht darin, zu zeigen, wie intensiv eine bestimmte Festplatte genutzt wird, ob es eine Anforderungswarteschlange gibt und wie die durchschnittliche Wartezeit für Operationen ist.

dstat ist ein vielseitiges Überwachungstool, das Echtzeitstatistiken über mehrere Subsysteme gleichzeitig anzeigt: CPU, Speicher, Festplatte, Netzwerk, Prozesse. Es ermöglicht die Korrelation von Festplattenaktivität mit der Gesamtserverlast und ist praktisch für schnelle Diagnosen.

Diese Dienstprogramme ergänzen sich gegenseitig: iostat bietet ein genaues Bild auf Geräteebene, während dstat den Kontext des gesamten Systems liefert.

Voraussetzungen und Anforderungen

Vor Beginn der Analyse müssen folgende 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üfung der OS-Version:

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

sudo dnf install sysstat dstat

Überprüfung des Betriebs von sysstat:

systemctl status sysstat

Wenn der Dienst aktiv ist, werden die relevanten 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

Schritt-für-Schritt-Überprüfung und Analyse

Grundlegende Festplattenanalyse mit iostat

Das Dienstprogramm iostat wird verwendet, um die CPU- und Festplattensubsystemauslastung zu bewerten sowie E/A-Verzögerungen und Warteschlangen zu identifizieren.

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.

Grundlegendes Beispiel:

sudo iostat -x

Dynamische Analyse:

sudo iostat -xk 5 3

Das Intervall und die Anzahl der Proben ermöglichen es, Laständerungen im Laufe der Zeit zu verfolgen, anstatt den durchschnittlichen Zustand seit dem Systemstart.

Beispielausgabe von iostat:

Beispielausgabe von iostat

Wichtige CPU-Metriken:

  • %iowait — der Prozentsatz der Zeit, in der die CPU im Leerlauf ist, während sie auf E/A-Operationen wartet. Ein Anstieg dieser Metrik zeigt die Auswirkung der Festplatte auf die Gesamtleistung an.
  • %steal — relevant für virtuelle Server und zeigt gestohlene CPU-Zeit an.

Wichtige Festplattenmetriken:

  • %util — der Prozentsatz der Zeit, in der die Festplatte beschäftigt war. Werte, die konstant 80–90% überschreiten, weisen auf eine Sättigung des Geräts hin.
  • r_await — die durchschnittliche Zeit (ms) für den Abschluss von Leseoperationen (einschließlich Wartezeit in der Warteschlange).
  • w_await — die durchschnittliche Zeit (ms) für den Abschluss von Schreiboperationen (einschließlich Wartezeit in der Warteschlange).
  • aqu-sz — (durchschnittliche Warteschlangengröße) die durchschnittliche Länge der Anforderungswarteschlange für die Festplatte. Ein Wert > 1 zeigt bereits eine Warteschlangenbildung an. Ein Wert > 2–4 für HDD / > 1–2 für SSD ist ein Zeichen dafür, dass die Festplatte mit der Last nicht Schritt hält.

Der Unterschied zwischen await und svctm zeigt, ob die Verzögerung durch die Warteschlange verursacht wird und nicht durch die physische Festplattengeschwindigkeit.
Wenn await nur geringfügig svctm überschreitet (Unterschied < 20–30%), werden die Verzögerungen hauptsächlich durch die Festplatte selbst verursacht (langsame physische Lese-/Schreibvorgänge).
Wenn await deutlich größer als svctm ist (Unterschied > 50–100%), wird die Hauptverzögerung durch die Anforderungswarteschlange verursacht (aqu-sz wird hoch sein), was auf eine Überlastung der Festplatte durch viele parallele Anfragen hinweist.

In modernen Versionen von iostat (wie im Beispiel) wird svctm nicht angezeigt, da seine Berechnung unzuverlässig ist. Für die Analyse wird die Kombination aus await + aqu-sz verwendet: hohes await mit niedrigem aqu-sz (~0) weist auf eine langsame Festplatte hin; hohes await mit hohem aqu-sz (>1) weist darauf hin, dass die Festplatte mit Anfragen überlastet ist.

Analyse des Gesamtbildes mit dstat

dstat wird zur Echtzeitbeobachtung des Systems und zur Korrelation der Festplattenlast 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

Bei der Analyse sollte auf Folgendes geachtet werden:

  • Anstieg von iowait in der CPU;
  • Lese- oder Schreibspitzen;
  • gleichzeitige Netzwerk- und Festplattenaktivität (Backups, Synchronisation).

Beispielausgabe von dstat:

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 Begrenzt Ausgezeichnet
Historische Daten Ja (sar) Nein
Farbige Ausgabe Nein Ja
Erweiterbarkeit Nein Plugins
CSV-Export Nein Ja
CPU-Belastung Niedrig Mittel

dstat ist besonders nützlich für kurzfristige Lastspitzen, die in iostat nicht immer erkennbar sind.

Identifizierung von Engpässen bei der Festplatten-E/A

Die folgenden Befehle werden für eine schnelle Diagnose verwendet:

sudo iostat -mx 2

sudo iostat -p /dev/vda 2 5

sar -d 1 5

Typische Anzeichen eines Problems:

  • %util über 80% für einen längeren Zeitraum;
  • await über 20–30 ms für SSD oder über 50–100 ms für HDD;
  • aqu-sz größer als 2–3, was auf eine Warteschlangenbildung hinweist.

Info

Im Beispiel wird die Festplatte /dev/vda verwendet — dies ist 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) — reguläre 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-Last verursachen

Nachdem die Überlastung des Festplattensubsystems mit iostat und dstat festgestellt wurde, besteht der nächste Schritt darin, die spezifischen Prozesse zu identifizieren, die intensive Lese- oder Schreibvorgänge initiieren. Eine Analyse auf Geräteebene ohne Identifizierung der Lastquelle ermöglicht keine korrekten Abhilfemaßnahmen.

Verwendung von iotop

Das Hauptwerkzeug zur Suche nach 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 hilft, Hintergrundaufgaben mit langfristiger E/A zu identifizieren;
  • -o — zeigt nur die Prozesse an, die derzeit E/A-Operationen durchführen.

Beispielausgabe:

TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 11056 be/4 mysql 0.00 B 3.44 M 0.00 % 0.76 % mysqld 2580 be/4 rsync 0.00 B 23.48 M 0.00 % 1.17 % rsync

In der iotop-Ausgabe sollte besonderes Augenmerk auf die Felder DISK READ, DISK WRITE und den Prozentsatz der I/O-Zeit gelegt werden. Typischerweise sind die Quellen der Last Datenbankprozesse, Sicherungsprozesse, Dateisynchronisationsprozesse oder Benutzerskripte.

Verwendung von pidstat für die prozessbezogene E/A-Analyse

Für eine formalere und wiederholbare Analyse kann pidstat, das Teil des sysstat-Pakets ist, verwendet werden.

pidstat -d 1

Dieser Befehl gibt Festplatten-E/A-Statistiken für jeden Prozess in einsekündigen Intervallen aus. Dies ist praktisch, um kurzfristige Aktivitätsspitzen zu identifizieren und sie mit anderen Systemmetriken zu korrelieren.

pidstat ist besonders nützlich in Situationen, in denen die Last periodisch auftritt und nicht immer von iotop erfasst wird.

Verwendung von lsof zur Analyse der Dateiaktivität

In Fällen, in denen es notwendig ist, zu verstehen, mit welchen spezifischen Dateien oder Verzeichnissen ein Prozess arbeitet, wird das Dienstprogramm lsof verwendet.

lsof +D /path

Wo /path ein spezifisches Verzeichnis ist, innerhalb dessen aktive Dateien und Prozesse identifiziert werden müssen. Zum Beispiel könnte dies ein Datenbankverzeichnis, ein Sicherungsverzeichnis oder ein Bereich für temporäre Dateien sein.

Der Befehl ermöglicht es, festzustellen, welche Prozesse derzeit Dateideskriptoren halten und Operationen innerhalb des angegebenen Pfads durchführen, was besonders nützlich ist, wenn die Last von Anwendungen analysiert wird.

Analyse des Lastkontexts

Die Identifizierung eines Prozesses mit hoher Festplattenaktivität ist nicht das Endziel. Der Administrator muss den Kontext seines Betriebs bewerten:

  • ist die Last für diesen Dienst erwartet;
  • läuft der Prozess zu einem geeigneten Zeitpunkt (z.B. Backups während der Stoßzeiten);
  • können der Zeitplan oder die Betriebsparameter geändert werden;
  • ist es zulässig, die E/A-Priorität zu reduzieren.

Dieser Ansatz ermöglicht es, normale Last von problematischer Last 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:

  • Spitzen in %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 und nicht mit CPU-Last übereinstimmt;
  • wiederholte Messungen ein reproduzierbares Lastmuster zeigen.

Für die Datensammlung und anschließende Analyse wird empfohlen, Protokollierung zu verwenden:

sar -d 1 100 > io.log

Dies ermöglicht es, das Verhalten des Festplattensubsystems über einen bestimmten Zeitraum aufzuzeichnen und die Daten bei der Untersuchung von Vorfällen zu verwenden.

Typische Fehler und betriebliche Besonderheiten

In der Praxis des Betriebs von Hosting-Servern sind die folgenden Probleme am häufigsten:

  • Ausführung von Backups und Datensynchronisation während der Stoßzeiten;
  • starke Nutzung von Swap bei unzureichendem RAM;
  • ein ungeeigneter E/A-Planer für den Laufwerkstyp;
  • fehlende Priorisierung für Hintergrundaufgaben.

Um die Auswirkungen von Hintergrundprozessen auf die Leistung zu reduzieren, wird empfohlen, das Dienstprogramm ionice zu verwenden, um die E/A-Priorität eines Prozesses zu verwalten, was es ermöglicht, die Auswirkungen von Hintergrundaufgaben auf die Systemreaktionsfähigkeit zu verringern.

Beispiel der Verwendung:

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 (Leerlauf) — Hintergrund. Der Prozess erhält nur dann Festplattenzugriff, wenn keine anderen Prozesse sie nutzen. Sicher und empfohlen für Hintergrundoperationen (Backups, Datensynchronisation).

In diesem Beispiel läuft der rsync-Prozess mit der niedrigsten E/A-Priorität, wodurch seine Auswirkungen auf die Kernsystemoperationen minimiert werden. Die Verwendung von ionice ermöglicht es, die Auswirkungen von Hintergrundprozessen zu minimieren, ohne sie vollständig deaktivieren zu müssen.

Fazit

Die Überwachung der Festplatten-E/A ist ein integraler Bestandteil der Aufrechterhaltung der Leistung und Stabilität einer Serverinfrastruktur. Die Dienstprogramme iostat und dstat ermöglichen es, Überlastungssituationen zu identifizieren und den Zustand des Festplattensubsystems zu bewerten, während Tools wie iotop, pidstat und lsof helfen, spezifische Prozesse und die Art ihrer Last zu identifizieren.

Die regelmäßige Anwendung des beschriebenen Ansatzes, die korrekte Interpretation von Metriken und das Management von E/A-Prioritäten helfen, die Antwortzeiten von Diensten zu verkürzen, die Lastvorhersehbarkeit zu erhöhen und die Einhaltung von SLA-Anforderungen sicherzustellen. Anschließend kann diese Methodik durch zentrale Überwachung und Automatisierung der E/A-Lastanalyse erweitert werden.

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