# iostat — CPU- und Datenträger-I/O-Statistiken anzeigen

> Praxis-Guide zu iostat: CPU-Auslastung und Festplatten-I/O messen, Engpässe per await, %util und aqu-sz aufspüren – Teil des sysstat-Pakets.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/iostat/

<!-- PROSE:intro -->
iostat zeigt dir in einem einzigen Blick, wie stark CPU und Datenträger ausgelastet sind – ideal, um I/O-Engpässe aufzuspüren, bevor sie deine Anwendungen ausbremsen. Das Werkzeug gehört zum Paket `sysstat` und muss auf vielen Systemen erst nachinstalliert werden. Wichtig: Die erste Ausgabe ist immer ein Durchschnitt seit dem letzten Bootvorgang – für aktuelle Werte misst du mit einem Intervall, etwa `iostat -xz 2`. Dieser Guide führt dich von den Grundlagen bis zu den erweiterten Kennzahlen wie `%util`, `await` und `aqu-sz`.
<!-- PROSE:intro:end -->

## Grundlagen

`iostat` — Zeigt CPU- und Datenträger-I/O-Statistiken seit dem Systemstart.

```bash
iostat
```

`iostat INTERVAL` — Zeigt die Statistiken fortlaufend alle INTERVAL Sekunden.

```bash
iostat 2
```

`iostat INTERVAL COUNT` — Zeigt die Statistiken alle INTERVAL Sekunden, COUNT-mal.

```bash
iostat 2 10
```

`iostat -h` — Lesefreundliche Ausgabe mit Einheiten-Suffixen.

```bash
iostat -h
```

## CPU-Statistiken

`iostat -c` — Zeigt ausschließlich die CPU-Statistiken.

```bash
iostat -c 1
```

`iostat -c 1 5` — Schneller CPU-Auslastungs-Snapshot (fünf Messungen im Sekundentakt).

```bash
iostat -c 1 5
```

## Datenträger-Statistiken

`iostat -d` — Zeigt ausschließlich die Datenträger-I/O-Statistiken.

```bash
iostat -d
```

`iostat -d DEVICE` — Zeigt die Statistiken für ein bestimmtes Gerät.

```bash
iostat -d sda
```

`iostat -d DEVICE1 DEVICE2` — Zeigt die Statistiken für mehrere Geräte.

```bash
iostat -d sda nvme0n1
```

`iostat -p DEVICE` — Zeigt die Statistiken für ein Gerät und alle seine Partitionen.

```bash
iostat -p sda
```

`iostat -p ALL` — Zeigt die Statistiken für alle Geräte und Partitionen.

```bash
iostat -p ALL
```

## Erweiterte Statistiken

`iostat -x` — Zeigt erweiterte Statistiken: `await`, `%util`, Warteschlangengröße und mehr.

```bash
iostat -x
```

`iostat -xd INTERVAL` — Erweiterte Datenträger-Statistiken in festen Intervallen. Häufigste Verwendung.

```bash
iostat -xd 1
```

`iostat -xd DEVICE INTERVAL` — Erweiterte Statistiken für ein bestimmtes Gerät.

```bash
iostat -xd sda 2
```

`iostat -x -t` — Erweiterte Statistiken mit Zeitstempeln.

```bash
iostat -x -t 1
```

## Ausgabe-Optionen

`iostat -k` — Zeigt die Statistiken in Kilobyte pro Sekunde.

```bash
iostat -k
```

`iostat -m` — Zeigt die Statistiken in Megabyte pro Sekunde.

```bash
iostat -m
```

`iostat -t` — Gibt zu jedem Bericht einen Zeitstempel aus.

```bash
iostat -t 1
```

`iostat -y INTERVAL` — Überspringt den ersten Bericht (Durchschnitt seit Boot) und zeigt nur Intervalldaten.

```bash
iostat -y 1
```

`iostat -z` — Lässt inaktive Geräte in der Ausgabe weg.

```bash
iostat -z 1
```

`iostat -o JSON` — Gibt die Ausgabe im JSON-Format aus.

```bash
iostat -o JSON 1 3
```

`iostat -N` — Zeigt Device-Mapper-Namen für LVM-Volumes.

```bash
iostat -N
```

## Schlüsselmetriken erklärt

`tps` — Transfers pro Sekunde (I/O-Anfragen). Lese- und Schreiboperationen kombiniert.

`kB_read/s, kB_wrtn/s` — Gelesene/geschriebene Kilobyte pro Sekunde.

`r/s, w/s` — Lese-/Schreibanfragen pro Sekunde (im erweiterten Modus).

`rkB/s, wkB/s` — Gelesene/geschriebene Kilobyte pro Sekunde (im erweiterten Modus).

`await` — Durchschnittliche Zeit (ms) je I/O-Anfrage. Enthält Warteschlangen- plus Servicezeit.

`r_await, w_await` — Durchschnittliche Zeit (ms) für Lese- bzw. Schreibanfragen getrennt.

`aqu-sz` — Durchschnittliche Warteschlangengröße. Hohe Werte deuten auf I/O-Sättigung hin.

`%util` — Prozentualer Zeitanteil, in dem das Gerät I/O-Anfragen bearbeitet hat. 100 % = gesättigt.

`rareq-sz, wareq-sz` — Durchschnittliche Lese-/Schreib-Anfragegröße in Kilobyte.

## Praxis-Muster

`iostat -xdm 1` — Erweiterte Datenträger-Überwachung in Echtzeit in MB/s. Das Standard-Kommando für die I/O-Analyse.

```bash
iostat -xdm 1
```

`iostat -xd 1 | awk '$NF > 80'` — Beobachtet Datenträger mit einer Auslastung über 80 %.

```bash
iostat -xd 1 | awk '$NF > 80'
```

`iostat -xdm -y 1 60 > iostat.log` — Protokolliert 60 Sekunden I/O-Statistik (ohne Boot-Durchschnitt).

```bash
iostat -xdm -y 1 60 > iostat.log
```

<!-- PROSE:outro -->
## Fazit

iostat ist ein reines Lese-Kommando – es verändert nichts an deinem System und lässt sich daher gefahrlos auf Produktivservern einsetzen. Für die Praxis merkst du dir am besten `iostat -xz 2`: Das blendet inaktive Geräte aus, liefert die erweiterten Kennzahlen und misst echte Intervallwerte statt des Boot-Durchschnitts. Achte vor allem auf `%util` (Sättigung des Geräts), `await` (Antwortzeit inklusive Warteschlange) sowie `r/s`/`w/s` und `aqu-sz`. Ein hohes `%util` allein bedeutet bei modernen SSDs und NVMe-Laufwerken übrigens nicht zwangsläufig einen Engpass – sie verarbeiten viele Anfragen parallel; ziehe deshalb immer `await` und `aqu-sz` zur Bewertung hinzu.

## Weiterführende Links

- [ubuntuusers-Wiki: sysstat](https://wiki.ubuntuusers.de/sysstat/) – deutschsprachige Einführung in sysstat und seine Werkzeuge
- [man-page iostat(1)](https://man7.org/linux/man-pages/man1/iostat.1.html) – offizielle Referenz aller Optionen und Kennzahlen
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [vmstat](https://www.jpkc.com/db/cheatsheets/shell-system/vmstat/) – Statistiken zu Speicher, Prozessen und I/O im Überblick
- [top](https://www.jpkc.com/db/cheatsheets/shell-system/top/) – Prozesse und Systemlast in Echtzeit beobachten
- [free](https://www.jpkc.com/db/cheatsheets/shell-system/free/) – freien und belegten Arbeitsspeicher anzeigen

