Langsames dd mit Mac OSX

Kürzlich musste ich ein Image von einer SD-Karte erstellen und diese dann auf andere SD-Karten kopieren. Um dies zu bewerkstelligen, benutzte ich das Unix-Bordmittel “dd”.

Beim kopieren des Images auf eine leere SD-Karte ist mir aufgefallen, dass die Schreibgeschwindigkeit bei knapp 1MB/s lag, dies macht für die 8GB ca. 136min. Da dies viel zu langsam ist, habe ich mich mal mit dem Problem beschäftigt und mit der Blocksize von dd herumgespielt. Mit dem Parameter bs=4m (Linux: bs=4M) kann man die Default-Blocksize von 512kB auf 4MB setzen.

Bevor man das Kopieren starten kann, muss man den Datenträger jedoch unmouten:

diskutil list
/dev/disk2
#: TYPE NAME                    SIZE       IDENTIFIER
0: FDisk_partition_scheme      *8.0 GB     disk2

diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

Danach kann der Kopiervorgang gestartet werden:

dd if=test.img of=/dev/disk2 bs=4m
15661056+0 records in
15661056+0 records out
8018460672 bytes transferred in 8318.960235 secs (963878 bytes/sec)

Dies hat jedoch nicht viel genützt, damit lag ich immernoch unter einem MB/s.

Nach weiterer Suche im Internet habe ich folgendes gefunden: OSX hat für dieselben Datenträger jeweils zwei Einträge in /dev/, hier ein Beispiel:

1. /dev/disk2
2. /dev/rdisk2

Kurz und knapp erklärt ist /dev/disk2 durch einen Buffer des OS angebunden (Blockorientiert), hingegen ist /dev/rdisk2 ein “raw” Laufwerk und direkt ohne Umweg angebunden (Zeichenorientiert). Dies führt zu weniger “overhead” und ist damit auch schneller. (Wiki)

Ein erneuter Test mit dd if=test.img of=/dev/rdisk2 bs=4m hat folgendes Resultat erbracht:

dd if=test.img of=/dev/rdisk2 bs=4m
1911+1 records in
1911+1 records out
8018460672 bytes transferred in 588.066864 secs (13635287 bytes/sec)

13MB/s Durchsatz. Damit habe ich meine 8GB in ein bisschen mehr als 10min kopiert. Einiges besser oder?

Mit pv sieht man dann auch noch den Status und die Durchsatzrate (sudo port install pv).

sudo dd if=test.img | pv | sudo dd of=/dev/rdisk2 bs=4m
280MiB 0:00:31 [12,94MiB/s]

 

3 thoughts on “Langsames dd mit Mac OSX

    1. Ja, wenn du nicht wie im Beispiel ‘pv’ verwenden willst, ist es möglich mit strg+t den Status anzuzeigen. Danke für den Hinweis.

Leave a Reply