
Am Sat, 10 Jun 2017 19:20:24 +0200 schrieb Christian Meseberg <osuse42@t-online.de>:
Egal welche Blocksize Du nimmst - Du bekommst am Ende immer eine exakte Kopie. Der Unterschied ist nur die Geschwindigkeit - bei zu kleiner Blocksize dauert es ewig.
Da kann man gerne auch bs=100M nehmen, um das Tempo zu erhöhen. Zudem würde ich status=progress verwenden um eine Fortschrittsanzeige zu bekommen.
Für die letzte Kopie eines Systems von einer 1TB-Platte auf eine andere habe ich weniger als 4 Stunden gebraucht. Beide Platten waren am (nicht mehr ganz aktuellen) SATA-Controller angeschlossen. Über USB auf eine externe Platte (USB2 mit ca. 35 MB/s) braucht es ca. 8 Stunden.
aus meiner schwachen Erinnerung.
Viele kleine Dateien geringer Blocksize, große Dateien hoher Blocksize
Du bringst da was durcheinander: Die Blocksize, die du hier ansprichst, ist die Größe der "Blöcke" eines Dateisystems. Diese Blöcke werden beim Schreiben von Daten verwendet und können i.A. entweder belegt (= mit Daten beschrieben) oder unbelegt (=derzeit nicht verwendet) sein. Sind die Blöcke z.B. 4 KB groß, und deine Datei hat eine Größe von 6 KB, so werden 2 Blöcke benötigt, wobei ein halber Block "verloren" geht. Geht man davon aus, dass im Schnitt immer ein halber Block ungenutzt bleibt, so kann man anhand der Anzahl der Dateien und der Blockgröße ausrechnen, wie viel Speicherplatz auf dem Datenträger nicht genutzt werden kann. Schreibst du also sehr viele kleine Dateien bei großer Blockgröße, hast du mehr "Verlust", als bei kleiner Blockgröße. Da bei einige Dateisystemen die Anzahl der Blöcke begrenzt ist, kannst du bei kleiner Blockgröße nicht mehr den gesamten Speicher deines Datenträgers in einer Partition unterbringen. Zudem ist der Verwaltungsaufwand höher, da jede Belegung oder Freigabe eines Blocks in eine entsprechende Verwaltungstabelle geschrieben werden muss. Die Blockgröße bei dd gibt hingegen an, wie viele Bytes auf einmal gelesen und geschrieben werden sollen. Ursprünglich war dies dazu gedacht, um eine bestimmte Anzahl von Datenblöcken zu kopieren: Man gibt die Blockgröße des betreffenden Dateisystems an. Dazu dann den Startblock und die Anzahl der Blöcke. Will man ohnehin die gesamte Platte kopieren, kann einem die wirkliche Blockgröße des Dateisystems egal sein. Damit aber dd nicht zu viele Wechsel zwischen Lesen und Schreiben machen muss, gibt man einfach eine viel zu große Blockgröße vor. So kann man dd sagen, ein Block wäre 4 MB groß, obwohl das Dateisystem 4 KB große Blöcke hat. man spart dadurch 999 Lese/Schreib-Wechsel ein ;-) Ich habe für mich den Parameter bs von _Block_-Size in _Buffer_-Size "umgetauft", weil ich selten Blöcke des Dateisystems kopiere. In den meisten Fällen nutze ich dd um ein vollständige Kopie einer Festplatte, CD, DVD, SSD, USB-Sticks,... anzufertigen, so dass mich die reale Blockgröße des betreffenden Dateisystems gar nicht interessiert. Gruß, Michael -- ____ / / / / /__/ Michael Höhne / / / / / / mih-hoehne@web.de / ________________________________/ -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (1)
-
Michael Höhne