> Die vollständige Liste der Artikel steht in [llms.txt](https://docs.f3cloud.com/llms.txt). Jede Seite gibt es auch als Markdown, dazu einfach .md an die Adresse anhängen. Diese Seite als Markdown: [https://docs.f3cloud.com/de/technical-docs/iops-performance-test.md](https://docs.f3cloud.com/de/technical-docs/iops-performance-test.md).

# Festplattengeschwindigkeit und IOPS in Linux mit fio testen

Was IOPS sind und wie sie die Geschwindigkeit eines Servers beeinflussen. So messen Sie zufällige und sequenzielle IOPS einer Festplatte in Linux mit fio, lesen das Ergebnis richtig und wissen, worauf Sie bei der Wahl des Tarifs achten sollten.

**IOPS** (Input/Output Operations Per Second) ist die Anzahl der Lese- und Schreibvorgänge, die eine Festplatte in einer Sekunde ausführen kann. Je höher die IOPS, desto schneller laufen Anwendungen, die häufig in kleinen Datenportionen auf die Festplatte zugreifen.

Für eine einfache Visitenkarten-Website spielen IOPS kaum eine Rolle, bei Datenbanken und stark ausgelasteten Diensten werden sie dagegen oft früher zum Engpass als Prozessor oder Arbeitsspeicher.

***

### Wofür IOPS wichtig sind

Hohe IOPS sind vor allem für Aufgaben mit vielen kleinen Zugriffen auf die Festplatte wichtig:

* Datenbanken wie MySQL, PostgreSQL und MongoDB;
* stark ausgelastete Webserver und Onlineshops;
* Mailserver;
* Caching- und Warteschlangensysteme.

Für Video-Streaming, Backups und die Verteilung großer Dateien zählt weniger die IOPS-Zahl als die lineare Lese- und Schreibgeschwindigkeit, denn die Daten fließen dort in einem durchgehenden Strom.

***

### Wovon IOPS abhängen

Das Ergebnis hängt von drei Hauptfaktoren ab.

#### Art des Datenträgers

NVMe-Laufwerke liefern um ein Vielfaches mehr IOPS als gewöhnliche SATA-SSDs und ungleich mehr als klassische HDD-Festplatten. Auf den Servern von F3 Cloud kommen NVMe-SSDs zum Einsatz.

#### Blockgröße

Je kleiner der Block, desto mehr Vorgänge passen in eine Sekunde. Deshalb misst man die maximalen IOPS mit einem Block von 4 KB, das ist die typische Größe eines Datenbankzugriffs.

#### Zugriffsmuster

Zufällige Zugriffe, kreuz und quer über die ganze Festplatte verteilt, sind aufwendiger als sequenzielle. Datenbanken erzeugen genau diese zufällige Last.\
Backups und Streaming erzeugen sequenzielle Last.

> **Zwei verschiedene Zahlen.**
>
> IOPS und die lineare Geschwindigkeit in MB/s messen Unterschiedliches. Eine Festplatte kann beim sequenziellen Lesen eine enorme Geschwindigkeit erreichen und bei zufälligen kleinen Vorgängen deutlich weniger IOPS liefern. Wenn Sie einen Server für eine Datenbank auswählen, achten Sie genau auf die zufälligen IOPS mit einem Block von 4 KB.

***

### IOPS in Linux messen

Zum Messen verwendet man das Werkzeug **fio**. Installieren Sie es.

#### Ubuntu und Debian

```bash
apt update && apt install -y fio
```

#### AlmaLinux und CentOS

```bash
dnf install -y fio
```

> **Der Test legt eine temporäre Datei an.**
>
> fio schreibt eine Datei der angegebenen Größe auf die Festplatte, in den Beispielen unten sind das 2 GB. Achten Sie darauf, dass genug freier Speicher vorhanden ist, und starten Sie den Test in einem Arbeitsordner, zum Beispiel in `/root`. Löschen Sie nach dem Test die Datei `fiotest`.

Messen Sie die zufälligen Lese-IOPS. Das ist die wichtigste Zahl für Datenbanken.

```bash
fio --name=randread --filename=fiotest --ioengine=libaio --direct=1 \
    --rw=randread --bs=4k --iodepth=32 --numjobs=1 --size=2G \
    --runtime=60 --time_based --group_reporting
```

Die Optionen des Befehls im Einzelnen:

* `--rw=randread` – zufälliges Lesen. Für Schreiben verwenden Sie `randwrite`, für gemischte Last `randrw`;
* `--bs=4k` – Blockgröße von 4 KB;
* `--direct=1` – am Cache vorbei lesen, damit Sie die echte Leistung der Festplatte sehen und nicht die des Arbeitsspeichers;
* `--iodepth=32` – wie viele Anfragen gleichzeitig in der Warteschlange gehalten werden;
* `--runtime=60 --time_based` – der Test läuft genau 60 Sekunden.

***

### Ergebnis richtig lesen

Suchen Sie in der Ausgabe von fio die Zeile, die mit `read` oder `write` beginnt. Der erste Wert darin sind die IOPS.

```
read: IOPS=85.2k, BW=333MiB/s (349MB/s)
```

`IOPS=85.2k` ist genau die Anzahl der Vorgänge pro Sekunde.\
`BW` ist die lineare Geschwindigkeit im selben Zeitraum.\
Weiter unten zeigt fio im Block `lat` die Latenz. Je niedriger sie ist, desto schneller reagiert die Festplatte.

***

### Was Sie sich noch ansehen können

Um die aktuelle Last auf der Festplatte schnell einzuschätzen, ohne einen Test zu starten, hilft `iostat` aus dem Paket `sysstat`.

```bash
# Installieren, falls das Paket noch fehlt
apt install -y sysstat

# Statistik jede Sekunde aktualisieren, die Spalten r/s und w/s sind Vorgänge pro Sekunde
iostat -dx 1
```

So sehen Sie in den Spalten `r/s` und `w/s` die tatsächliche Last durch Ihre Anwendungen und in der Spalte `%util`, wie stark die Festplatte ausgelastet ist.

***

### Unsere Ressourcen

**Telegram-Kanal:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Hosting-Website:** [https://f3cloud.com](https://f3cloud.com/de)
