#!/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
# ===========
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!
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,6 | 12,8 | 9,2 | 1,2 | 8,0 | 1,3 |
256 | 18,5 | 4,4 | 7,1 | 1,1 | 7,3 | 0,98 |
512 | 18,2 | 3,6 | 7,8 | 1,2 | 7,9 | 0,95 |
1k | 17,9 | 5,7 | 8,2 | 1,2 | 8,1 | 1,1 |
2k | 18,4 | 6,0 | 8,3 | 1,1 | 8,4 | 0,83 |
4k | 18,0 | 6,2 | 8,6 | 1,1 | 4,7 | 1,1 |
8k | 18,0 | 6,3 | 8,5 | 1,2 | 8,5 | 0,95 |
16k | 18,5 | 6,3 | 8,6 | 1,1 | 8,5 | 1,1 |
32k | 18,0 | 6,3 | 8,4 | 1,2 | 8,4 | 0,86 |
64k | 18,0 | 6,4 | 8,5 | 1,2 | 8,5 | 0,99 |
128k | 18,5 | 6,4 | 8,5 | 1,1 | 8,5 | 1,0 |
256k | 18,0 | 6,4 | 8,7 | 1,1 | 8,6 | 0,97 |
512k | 17,9 | 6,4 | 7,5 | 1,1 | 6,0 | 1,0 |
1M | 18,5 | 6,4 | 6,9 | 1,2 | 5,4 | 0,84 |
2M | 18,0 | 6,3 | 6,4 | 1,2 | 6,4 | 1,0 |
4M | 18,0 | 6,2 | 5,6 | 1,1 | 5,8 | 0,95 |
8M | 18,5 | 3,9 | 4,5 | 1,1 | 6,0 | 1,0 |
(c) deMattin - http://www.k64.eu |