🧪 FIO Disk Benchmark v1.1
Uniwersalny skrypt do testowania wydajności dysków (lokalnych, sieciowych, SSD, NVMe, HDD) z użyciem fio.
Automatycznie generuje raport tekstowy i CSV, obsługuje tryb szybki, a także samodzielnie wykrywa problemy z I/O.
- ✅ Testy sekwencyjne (1M) i losowe (4K) — zapis i odczyt
- ✅ Automatyczne raporty
.txti.csvz nazwą hosta i datą - ✅ Tryb szybki (
-q) do krótkich testów diagnostycznych - ✅ Automatyczny fallback: jeśli
libaiolub--direct=1nie działa, skrypt przełącza się nasync - ✅ Limit czasu (
timeout) zabezpieczający przed zawieszeniem - ✅ Czytelny, kolorowy output w terminalu
- ✅ Bezpieczny dla systemów plików NFS, ZFS, CIFS, Ceph, itp.
System Linux z zainstalowanym fio:
sudo apt install fio -yPobierz test:
wget https://raw.githubusercontent.com/bykogr/fio/main/fio_benchmark.shNadaj uprawnienia do wykonania:
chmod +x fio_benchmark.shUruchomienie interaktywne (skrypt zapyta o katalog):
./fio_benchmark.shLub z parametrami CLI:
./fio_benchmark.sh -d /mnt/dysk_testowy| Flaga | Opis |
|---|---|
-d <ścieżka> |
Katalog testowy, w którym zostanie utworzony plik testowy fiotest |
-q |
Tryb szybki (30s, mniejsze pliki – idealny do wielu maszyn) |
-f |
Wymusza nadpisanie istniejących logów |
| (brak) | Skrypt poprosi o katalog interaktywnie |
| Test | Blok | Typ | Domyślny rozmiar | Opis |
|---|---|---|---|---|
| Sekwencyjny zapis | 1M | write | 10G / 1G (quick) | Ciągły zapis dużych bloków |
| Sekwencyjny odczyt | 1M | read | 10G / 1G (quick) | Ciągły odczyt dużych bloków |
| Losowy zapis | 4K | randwrite | 1G / 256M (quick) | Symulacja IOPS |
| Losowy odczyt | 4K | randread | 1G / 256M (quick) | Symulacja IOPS przy losowym dostępie |
Po zakończeniu testów generowane są 3 pliki w bieżącym katalogu:
| Plik | Zawartość |
|---|---|
fio_summary_HOST_DATE.txt |
Podsumowanie w formie tekstowej |
fio_results_HOST_DATE.csv |
Dane do Excela / analizy |
fio_HOST_DATE.log |
Pełny log fio z wynikami surowymi |
Test,Typ,Blok,Rozmiar,Przepustowość (MB/s),IOPS,Opóźnienie (µs)
seq-write,WRITE,1M,10G,1120,1100,340
seq-read,READ,1M,10G,1180,1150,310
rand-write,WRITE,4K,1G,85,21800,420
rand-read,READ,4K,1G,92,23400,390./fio_benchmark.sh -d /mnt/nvme./fio_benchmark.sh -d /mnt/ssd -q./fio_benchmark.sh -d /mnt/hdd -f=== 🚀 FIO Benchmark ===
📂 Katalog: /mnt/data
🖥️ Host: test-node-01
🕐 Tryb: Pełny
📊 Wyniki: fio_summary_test-node-01_2025-10-25_13-00-01.txt
▶️ Sekwencyjny zapis (1M)
▶️ Sekwencyjny odczyt (1M)
▶️ Losowy zapis (4K)
▶️ Losowy odczyt (4K)
✅ Benchmark zakończony pomyślnie!
📊 Raport: fio_summary_test-node-01_2025-10-25_13-00-01.txt
📈 CSV: fio_results_test-node-01_2025-10-25_13-00-01.csv
- Testy mogą potrwać — szczególnie sekwencyjne zapisy przy dużych plikach (10G).
- Jeśli system plików nie obsługuje
O_DIRECTlublibaio, skrypt automatycznie przełączy się nasync. - Każdy test ma limit czasu (
timeout 300s) — skrypt nie powinien się nigdy zawiesić. - Po każdym teście plik tymczasowy jest automatycznie usuwany.
Autor: KOGR 18.10.2025