DD-Speedtest-Script

Aktuelle Version: 0.5
ddtest.sh - Download
ddtest.sh - Quelltext

#!/bin/bash
#
# Skript zum Testen der optimalen Blocksize für dd-Backup.
# ddtest.sh
# ver=0.5
#
# Aufruf mit sudo bzw. als root erforderlich für Feature "Caches leeren"
#
# Features:
# - für RPi oder beliebige andere Linux-Systeme
# - Lesetest und wahlweise auch Schreibtest in beliebigen Pfaden
# - Auch Test der Auswirkung durch gzip-Kompression
# - Gültigkeit der Pfade und Schreibrechte werden geprüft
# - Blockgrößen von 256 Bytes bis 8 MBytes werden getestet.
# - Cache-flush zur Vermeidung von Caching
# - Testdatei mir Random-Werten oder 0-Werten wählbar
# Hinweise:
# - Lesedatei auf Pi bzw. Linux-System wird immer erzeugt
# - Schreibdatei auf Backuplaufwerk wird nur beim Schreibtest generiert
# - Schreibpfad sollte auf externem Datenträger oder Server/NAS liegen!
# - Testdateien werden am Ende wieder gelöscht.
# - Erzeugung der Testdatei mir Random-Werten dauert viel(!) länger als mit
#   0-Werten (beim RPi ca 1,5MB/s gegenüber 14MB/s mit 0-Werten), sollte aber
#   realistischere Ergebnisse liefern bei Verwendung der gzip-Kompression
#   und ist daher wohl nur bei Test mit gzip-Kompression auch erforderlich.
# - Lesedatei_in_MB sollte ein ganzzahliges Vielfaches jeder einzelnen, zu
#   testenden Blockgrößen sein (da jeweils Verdopplung also Vielfaches von 8)
# - Bei Einsatz unter OS X müssen im Code zumindest die bs angepasst werden
#   z.B. 1M 2M ... ändern in 1m 2m ... (habe ich irgendwo gelesen)
#   Ob der Rest bei OS X funktioniert? Keine Ahnung ... ;)
# (c) 2014 deMattin - free for all!
#     http://www.k64.eu/linux-tools/
# inspired by framp with his raspiBackup-Skript
# on http://www.linux-tips-and-tricks.de/raspiBackup
#
# Einstellungen/Settings:
# -----------
Lesepfad="/tmp"
Lesedatei_in_MB=120
Auch_Schreibtest=0
Schreibpfad="/backup"
gzip_test=0
Zufallsdaten=0
# ===========

Hinweise zur Paramterwahl "Zufallsdaten":

Die Schreibgeschwindigkeit für 0-Werte (Zufallsdaten=0) repräsentiert den leeren Bereich des Lesemediums und die Random-Werte (Zufallsdaten=1) repräsentieren die zu erwartende Geschwindigkeit für den mit Daten gefüllten Bereich.
Wobei hierbei zu beachten ist, dass gelöschte Dateien trotzdem Daten auf dem Datenträger hinterlassen können, die beim byteweisen Raw-Backup mittels DD i.A. eben nicht 0-Werte beinhalten!

Der Schreibtest erfolgte bei mir auf einen Windows-Server per cifs über LAN (Server per GBit angebunden, RPi kann ja nur max. 100MBit)

Tabelle mit Testergebnissen (16GB SanDisk Ultra SDHC1)
am RPi im laufenden Betrieb:

bs
(Blocksize)
Lesedatei_in_MB=120
gzip_test=0
Auch_Schreibtest=0
Zufallsdaten=0
Ergebnis in MB/s
Lesedatei_in_MB=120
gzip_test=0
Auch_Schreibtest=1
Zufallsdaten=0
Ergebnis in MB/s
Lesedatei_in_MB=120
gzip_test=1
Auch_Schreibtest=0
Zufallsdaten=0
Ergebnis in MB/s
Lesedatei_in_MB=120
gzip_test=1
Auch_Schreibtest=0
Zufallsdaten=1
Ergebnis in MB/s
Lesedatei_in_MB=120
gzip_test=1
Auch_Schreibtest=1
Zufallsdaten=0
Ergebnis in MB/s
Lesedatei_in_MB=120
gzip_test=1
Auch_Schreibtest=1
Zufallsdaten=1
Ergebnis in MB/s
create
testfile
bs=1M
13,612,89,21,28,01,3
25618,54,47,11,17,30,98
51218,23,67,81,27,90,95
1k17,95,78,21,28,11,1
2k18,46,08,31,18,40,83
4k18,06,28,61,14,71,1
8k18,06,38,51,28,50,95
16k18,56,38,61,18,51,1
32k18,06,38,41,28,40,86
64k18,06,48,51,28,50,99
128k18,56,48,51,18,51,0
256k18,06,48,71,18,60,97
512k17,96,47,51,16,01,0
1M18,56,46,91,25,40,84
2M18,06,36,41,26,41,0
4M18,06,25,61,15,80,95
8M18,53,94,51,16,01,0

Versionsverlauf:

ddtest.sh (Version 0.5): Download - Quelltext
ddtest.sh (Version 0.1): Download - Quelltext

Valid XHTML 1.0 Transitional CSS ist valide! (c) deMattin - http://www.k64.eu