Comment déterminer la meilleure taille d'octet pour la commande dd

21

Je sais que faire un dd si = / dev / hda de = / dev / hdb fait une copie profonde du disque dur. J'ai entendu dire que les gens avaient pu accélérer le processus en augmentant le nombre d'octets lus et écrits à la fois (512) avec l'option "bs".

Ma question est:

Qu'est-ce qui détermine la taille d'octet idéale pour copier à partir d'un disque dur?

et

Pourquoi cela détermine-t-il la taille d'octet idéale?

James T
la source
Je pensais qu'il faudrait diviser parfaitement la taille du lecteur ou de la partition: j'ai donc essayé de déterminer la taille d'octet exacte de la partition cible, d'obtenir les facteurs premiers et de déterminer un bloc raisonnablement grand qui est un multiple de plusieurs de ces facteurs premiers ...
PP.

Réponses:

18

Comme le dit Chris S, la taille de bloc optimale dépend du matériel. D'après mon expérience, il est toujours supérieur aux 512 octets par défaut. Si vous travaillez avec des périphériques bruts, la géométrie du système de fichiers sus-jacente n'aura aucun effet. J'ai utilisé le script ci-dessous pour aider à «optimiser» la taille de bloc de dd.

#!/bin/bash
#
#create a file to work with
#
echo "creating a file to work with"
dd if=/dev/zero of=/var/tmp/infile count=1175000

for bs in  1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M 

do
        echo "Testing block size  = $bs"
        dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs
        echo ""
done
rm /var/tmp/infile /var/tmp/outfile
user9517 prend en charge GoFundMonica
la source
4
Sous OS X, "1M ... 8M" doit être réduit en "1m ... 8m".
Matt Beckman
1
vous pouvez ajouter un "temps" devant dd, pour avoir des infos supplémentaires sur le temps passé à attendre les E / S et le vrai travail ...
Olivier Dulac
1
@lain /dev/zeroest généré, pas besoin de le lire depuis le disque; vous pourriez bien dd if=/dev/zero ibs=1M count=32 obs=$bs of=/var/tmp/outfile@ olivier-dulac, dddéjà imprimer la vitesse; je ne pense pas time(ou /usr/bin/time) ajouter des informations valables.
bufh
1

Malheureusement, la taille parfaite dépendra de votre bus système, du contrôleur de disque dur, du lecteur particulier lui-même et des pilotes pour chacun d'entre eux. La seule façon de trouver la taille parfaite est de continuer à essayer différentes tailles. Juste avertissement que certains appareils ne prennent en charge qu'une seule taille de bloc, bien que cela soit rare, et que les pilotes font généralement la différence de toute façon.

Je trouve que la taille de bloc de 2 ^ 15 ou 2 ^ 16 fonctionne mieux pour mes disques SATA WDC (8 Mo de cache) connectés à un contrôleur RAID SAS Adaptec, 4x PCIe, FreeBSD 8.0-STABLE 64 bits. Mais pour ma vieille clé USB bon marché, les tailles de 2 ^ 10 semblent être les plus rapides.

La "taille parfaite" est presque toujours une puissance de deux.

Chris S
la source
0

Je peux garantir le mérite de mesurer les résultats de l'exécution d'un test sur l'appareil utilisé avant de perdre du temps. Je n'ai pas bêtement pris la peine et après avoir mesuré, puis en ajustant la taille de mon bloc, j'ai réduit de moitié la durée DD d'un transfert de 590 Go. La même valeur BS n'aurait réduit le temps que de 20% en utilisant un autre combo caddy / drive.

Bernster
la source