#!/usr/bin/env bash set -euo pipefail # Dauer des Tests (Default: 10 Minuten, Format z.B. "5m", "600") DURATION="${1:-10m}" # Verzeichnisse / Geräte für File‑IO NVME_MOUNT="~/test" # bitte anpassen SATA_MOUNT="/mnt/nextcloud/test" # bitte anpassen # Größe und Einstellungen für sysbench-File‑IO FILE_TOTAL_SIZE="1G" FILE_NUM="4" TEST_MODE="rndrw" EXTRA_FLAGS="--file-extra-flags=direct" echo "== Vorbereitung: File‑IO Testdateien erstellen ==" sysbench fileio \ --file-total-size=${FILE_TOTAL_SIZE} \ --file-num=${FILE_NUM} \ --file-test-mode=${TEST_MODE} \ ${EXTRA_FLAGS} \ --file-dir=${NVME_MOUNT} prepare & sysbench fileio \ --file-total-size=${FILE_TOTAL_SIZE} \ --file-num=${FILE_NUM} \ --file-test-mode=${TEST_MODE} \ ${EXTRA_FLAGS} \ --file-dir=${SATA_MOUNT} prepare & wait echo "== Vorbereitung fertig, starte Stresstest für ${DURATION} ==" # CPU‑Stresstest stress-ng \ --cpu 8 \ --cpu-method all \ --verify \ --timeout ${DURATION} \ --metrics-brief \ > stress-ng.log 2>&1 & # File‑IO auf NVMe sysbench fileio \ --file-total-size=${FILE_TOTAL_SIZE} \ --file-num=${FILE_NUM} \ --file-test-mode=${TEST_MODE} \ ${EXTRA_FLAGS} \ --file-dir=${NVME_MOUNT} \ --time=${DURATION} run \ > sysbench-nvme.log 2>&1 & # File‑IO auf SATA‑SSD sysbench fileio \ --file-total-size=${FILE_TOTAL_SIZE} \ --file-num=${FILE_NUM} \ --file-test-mode=${TEST_MODE} \ ${EXTRA_FLAGS} \ --file-dir=${SATA_MOUNT} \ --time=${DURATION} run \ > sysbench-sata.log 2>&1 & # Auf alle Hintergrund‐Jobs warten wait echo "== Stresstest abgeschlossen ==" echo "Ergebnisse:" echo " - CPU (stress-ng): see stress-ng.log" echo " - NVMe (sysbench): see sysbench-nvme.log" echo " - SATA (sysbench): see sysbench-sata.log" # Clean up File‑IO Testdateien echo "== Aufräumen: File‑IO Testdateien löschen ==" sysbench fileio ${EXTRA_FLAGS} --file-dir=${NVME_MOUNT} cleanup sysbench fileio ${EXTRA_FLAGS} --file-dir=${SATA_MOUNT} cleanup echo "Fertig."