Quelle est la différence entre ces deux commandes dd?

23

Quelle est la différence entre deux ddcommandes qui ont des valeurs bset différentes count, du moment qu'elles se multiplient pour être identiques? Par exemple:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1
Rocheux
la source
4
Les deux commandes prendront des âges. Utilisez urandom si vous avez besoin de nombres aléatoires. Utilisez zéro si vous avez juste besoin de saisir rapidement quelque chose.
Nils
4
Utilisez /dev/urandompas /dev/random. Voir security.stackexchange.com/questions/3936/... , security.stackexchange.com/questions/3259/... , ...
Gilles de l' arrêt SO- étant le mal "

Réponses:

26

En ce qui concerne le résultat final, ils feront de même. La différence réside dans la façon dont les dddonnées seraient traitées. Et en fait, vos deux exemples sont assez extrêmes à cet égard: le bsparamètre indique ddla quantité de données qu'il doit mettre en mémoire tampon avant de les produire.

Donc, essentiellement, la première commande essaierait de lire 2 Go en deux morceaux de 1 Go, et ce dernier essaierait de lire 2 Go entiers en une seule fois, puis les afficherait dans le aafichier.

rozcietrzewiacz
la source
17

Le résultat sera le même mais dans le premier cas dd, écrira deux blocs de 1 Go tandis que dans le second bloc de 2 Go. La différence est que ddle bloc copié est conservé en mémoire. Vous aurez besoin de 1 Go de RAM dans le premier cas et de 2 Go dans le second.

À mon avis, il n'est pas nécessaire d'utiliser de si gros blocs. Vous pouvez faire quelques tests mais dans mon cas, j'atteins une vitesse plus élevée avec des blocs beaucoup plus petits (<1 Mo)

Matteo
la source
9

Le premier prendra 1 Go de mémoire, le remplira de données du fichier d'entrée et le sortira deux fois.

Le second prendra 2 Go de mémoire, le remplira avec les données du fichier d'entrée et le sortira.

Golimar
la source
2

La taille de bloc utilisée doit correspondre aux meilleurs paramètres de vitesse pour le périphérique source et le périphérique cible.

Vous pouvez mieux voir la différence si vous essayez de copier un appareil LV. L'utilisation d'une très petite taille BS interrompra le processus de lecture inutile. L'utilisation d'une très grande taille BS entraînera de longues attentes lors de l'écriture.

Étant donné que les LV standard se composent normalement de blocs de 4 Mo, ce qui est également une bonne taille pour l'accès au disque physique, j'utilise bs = 4M pour ceux-ci.

Essayez d'expérimenter avec 16K ou 256M - vous remarquerez la différence - et regardez l'indicateur de disque pendant la copie ...

Nils
la source
Les pénalités pour les blocs de petite ou grande taille sont quelque peu compensées par la mise en cache effectuée par le noyau. Voir ici pour un mini-benchmark.
Gilles 'SO- arrête d'être méchant'
@Gilles Je ne me souviens pas des chiffres de mes tests, mais ils étaient bien plus dramatiques que les vôtres. Quelle configuration de disque dur physique avez-vous utilisée dans votre test? Le mien était sur un RAID 5 matériel réparti sur 5 disques (SAS 15k) avec 128 Ko. taille de bande.
Nils
Disques SATA, pas de RAID, sinon machine inactive. Je ne me souviens pas des spécifications exactes.
Gilles 'SO- arrête d'être méchant'