Wie bereits zuvor angekündigt folgt nun ein ausführliches Benchmark meines neuen RAID1, LUKS, und LVM gestützten Speichersystems. Dabei zeige ich ermittelte Werte zu sequenziellen und zufälligen Zugriffen auf die Festplatten im Gegensatz zur SSD-Systemplatte.
Sequenzielle Zugriffe
Im ersten Schritt habe ich den Systemdurchsatz / Plattendurchsatz mithilfe von hdparm ermittelt. Wie sich unschwer erkennen lässt, sind die „Timing cached reads“ ohne Zugriff auf die eigentlichen Datenträger von statten gegangen. Diese Werte spiegeln die Leistungsfähigkeit des Systems wieder. Diese Messung „Timing buffered disk reads“ ist ein Indiz dafür, wie schnell das Laufwerk sequentielle Daten, ohne jeglichen Dateisystem Overhead, liest.
# Lesegeschwindigkeitstest auf SSD
hdparm -tT /dev/sda
#> /dev/sda:
#> Timing cached reads: 29528 MB in 2.00 seconds = 14780.64 MB/sec
#> Timing buffered disk reads: 1288 MB in 3.00 seconds = 428.79 MB/sec
# Lesegeschwindigkeitstest auf HDD#1
hdparm -tT /dev/sdb
#> /dev/sdb:
#> Timing cached reads: 28986 MB in 2.00 seconds = 14509.56 MB/sec
#> Timing buffered disk reads: 410 MB in 3.01 seconds = 136.19 MB/sec
# Lesegeschwindigkeitstest auf HDD#2
hdparm -tT /dev/sdc
#> /dev/sdc:
#> Timing cached reads: 29886 MB in 2.00 seconds = 14959.78 MB/sec
#> Timing buffered disk reads: 536 MB in 3.01 seconds = 178.23 MB/sec
Im nächsten Schritt messen wir mit dem Werkzeug dd die Schreibgeschwindigkeit für eine neue, große Datei auf den entsprechenden Laufwerken. Dabei ist festzuhalten, dass alle drei Speichergeräte über große Caches verfügen und per SATA3 angebunden sind.
# Neue große Datei anlegen auf SSD
sync; rm testing; sync; time ( dd if=/dev/zero of=testing bs=16k count=10000; sync )
#> 163840000 Bytes (164 MB) kopiert, 0,0662822 s, 2,5 GB/s
#> real 0m0.501s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,071625 s, 2,3 GB/s
#> real 0m0.526s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0689608 s, 2,4 GB/s
#> real 0m0.489s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0714855 s, 2,3 GB/s
#> real 0m0.500s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0687406 s, 2,4 GB/s
#> real 0m0.525s
# Neue große Datei anlegen auf LUKS/LVM Partition
sync; rm testing; sync; time ( dd if=/dev/zero of=testing bs=16k count=10000; sync )
#> 163840000 Bytes (164 MB) kopiert, 0,069773 s, 2,3 GB/s
#> real 0m1.287s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0692304 s, 2,4 GB/s
#> real 0m1.389s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0746935 s, 2,2 GB/s
#> real 0m1.331s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0718778 s, 2,3 GB/s
#> real 0m1.282s
#>
#> 163840000 Bytes (164 MB) kopiert, 0,0676178 s, 2,4 GB/s
#> real 0m1.415s
Selbigen Test wollen wir nun für das Überschreiben dieser großen Datei durchführen. Dabei ist zu beachten, dass wir im ersten Durchlauf die Datei erstmals anlegen und in den weiteren Iterationen immer wieder überschreiben. An diesem Punkt lässt sich schon eher eine Aussage über die unterschiedliche Leistungsfähigkeit der Laufwerke treffen.
# Datei überschreiben auf SSD Root Partition
dd if=/dev/zero of=output.img bs=8k count=256k
#> 2147483648 Bytes (2,1 GB) kopiert, 1,39487 s, 1,5 GB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,10294 s, 352 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,46983 s, 332 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,33827 s, 339 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,31469 s, 340 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 6,28691 s, 342 MB/s
#> ---------
#> Avg (ohne den ersten, cached Write): 341 MB/s
# Datei überschreiben auf LUKS/LVM Partition
dd if=/dev/zero of=output.img bs=8k count=256k
#> 2147483648 Bytes (2,1 GB) kopiert, 1,60615 s, 1,3 GB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 12,2853 s, 175 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 12,648 s, 170 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 8,85098 s, 243 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 15,7225 s, 137 MB/s
#> 2147483648 Bytes (2,1 GB) kopiert, 12,7022 s, 169 MB/s
#> ---------
#> Avg (ohne den ersten, cached Write): 178,8 MB/s
Zufällige Zugriffe
Selbstverständlich sind die sequenziellen Zugriffe weniger im Alltag anzutreffen, dafür aber eher die zufälligen. Aus diesem Grund legen wir im nächsten Schritt 1000 kleine Dateien auf den Laufwerken an, um eine Alltagssituation zu simulieren. Des Weiteren ermittelte ich die Werte für einen Commit-Size von jeweils einer Datei, und jeweils allen Dateien auf einmal. Der Commit-Size ist die Anzahl der Befehle an die physischen Geräte. Ein Commit-Size von eins bedeutet somit, dass nachdem eine Datei angelegt wurde, der jeweilige Befehl sofort abgefeuert und solange darauf gewartet wird bis dieser abgearbeitet wurde.
# 1000 kleine neue Dateien anlegen auf SSD, Commit-Size: 1 File
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; sync; done; )
#> 157M Insgesamt / 160K pro Datei
#> real 0m31.491s
#>
#> Avg: 4,98 MB/s
# 1000 kleine neue Dateien anlegen auf SSD, Commit-Size: Alle Files
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; done; sync; )
#> 157M Insgesamt / 160K pro Datei
#> real 0m4.173s
#>
#> Avg: 37,62 MB/s
# 1000 kleine neue Dateien anlegen auf LUKS/LVM Partition, Commit-Size: 1 File
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; sync; done; )
#> 157M Insgesamt / 160K pro Datei
#> real 1m30.222s
#>
#> Avg: 1,74 MB/s
# 1000 kleine neue Dateien anlegen auf LUKS/LVM Partition, Commit-Size: Alle Files
sync; rm -rf testing*; sync; time ( for item in `seq 1 1000`; do dd if=/dev/zero of=testing.$item bs=16k count=10; done; sync; )
#> 157M Insgesamt / 160K pro Datei
#> real 0m5.180s
#>
#> Avg: 30,30 MB/s
Übertragen meiner Daten von den alten Platten zum neuen Setup
Jeden Datentransfer vom alten zum neuen System habe ich mit rsync durchgeführt, da es zum einen sehr komfortabel ist und zum anderen detaillierte Informationen zum Transfer nach Abschluss des Prozesses bereithält. Diese Informationen halfen mir, noch aussagekräftigere Werte für die Gesamtsystembewertung zu finden.
Dokumente sent 152982774 bytes received 2432 bytes 33996712.44 bytes/sec
Musik sent 35397843919 bytes received 193622 bytes 51042591.98 bytes/sec
Bilder sent 4345719686 bytes received 66225 bytes 47494927.99 bytes/sec
Projekte sent 13075821042 bytes received 3844489 bytes 20581692.42 bytes/sec
sent 15407912775 bytes received 419696 bytes 30006489.72 bytes/sec
Software/Linux sent 34223276167 bytes received 528066 bytes 52611536.10 bytes/sec
Software/Windows sent 23038547810 bytes received 40556 bytes 67860348.65 bytes/sec
Filme sent 3421078079 bytes received 348 bytes 61641052.74 bytes/sec
sent 110931117562 bytes received 6282 bytes 62514017.38 bytes/sec
sent 3099578522 bytes received 1349 bytes 53905736.89 bytes/sec
sent 58225295334 bytes received 4848 bytes 58547310.39 bytes/sec
sent 106386526122 bytes received 5757 bytes 59450422.96 bytes/sec
Arbeitsdaten sent 40517714800 bytes received 982795 bytes 37992215.28 bytes/sec
sent 10115108418 bytes received 77309 bytes 38979521.11 bytes/sec
-----------------------
Durschnittliche Geschwindigkeit: 48330326.860714285 bytes/sec = 46.091391430 MB/s
Übertragene Größe: 426.86 GB
Dieses Szenario stellte einen sehr ausgewogenen Mix an großen und kleinen Dateien dar, mit einer ansehnlichen Größe von insgesamt 426 GB. Dabei fällt ein etwas magerer Durchsatz ins Auge, der sich aber dadurch erklären lässt, dass alle Daten verschlüsselt werden mussten und von mehreren SATA2 Laufwerken gelesen wurden. Mein letzter Test war eine Video-Datei innerhalb des verschlüsselten Verbundes zu kopieren, was durchaus oft zum tragen kommt in meinem Alltag.
# Kopie von LUKS/LVM Partition zu LUKS/LVM Partition
time cp rh-688x288-xvidac3.avi /mnt/work/Temp/x/
#> size 1742.83 MB
#> real 0m20.403s
#>
#> Avg: 85.42 MB/s
Abschluss
Alles in allem nutze ich dieses System nun schon ein paar Tage, und bin nach wie vor nicht negativ überrascht worden von der Leistungsfähigkeit. Ich hoffe das die gezeigten Werte für den interessierten Leser verständlich waren, und auch einfach reproduzierbar sind. In diesem Sinne denke ich dieser Blog-Post war kurz und gut. Aber natürlich lese ich gern Feedback aller Art als Kommentar. 😃