J'ai besoin de copier un disque sur un autre. J'ai essayé avec la commande ci-dessous et il faut presque un jour pour copier 1 To de disque dans federo.
dd if=/dev/sda of=/dev/sdb
J'ai essayé la même chose sur un système Unix (HP-UX) avec la commande ci-dessous et elle se termine en quelques heures
dd if=/dev/sda of=/dev/rdsk
Quelle est l'alternative que je pourrais utiliser pour copier d'un disque à un disque plus rapidement?
cp /dev/sda /dev/sdb
ou (pv /dev/sda > /dev/sdb
pour obtenir une barre de progression) serait beaucoup plus rapide. Pourquoi utiliseriez-vousdd
ici?dd
ne serait utile qu'avec des choses commeconv=sync,noerror
gérer des disques avec des erreurs, mais même alors, il serait plus logique d'utiliser des choses comme à laddrescue
place (voir aussipv
l'-E
option de).cat
peut être encore plus rapide mais la différence n'est pas si dramatique (peut-être plus grande pour appareil à appareil que fichier à fichier comme dans mon expérience).dd
écueil # 1Réponses:
dd
a de nombreuses options (étranges), voir dd (1) .Vous devez indiquer explicitement la taille du tampon, alors essayez
IIRC, la taille de tampon par défaut n'est que de 512 octets. La commande ci-dessus la définit à 16 mégaoctets. Vous pouvez essayer quelque chose de plus petit (par exemple
bs=1M
), mais vous devez utiliser plus que la valeur par défaut (en particulier sur le matériel de disque récent avec des secteurs de 4 Ko, c'est-à-dire le format avancé ). Je recommande naïvement une puissance de deux qui est au moins un mégaoctet.Avec la taille de tampon de 512 octets par défaut, je suppose (mais je peux me tromper) que le matériel nécessite que le noyau transfère 4K pour chaque bloc de 512 octets.
Concernant
rdsk
, les pages de manuel de sd (4) disent:L'augmentation de la taille du tampon de dd vous donnera plus de performances pour les opérations de lecture et d'écriture. Maintenant, tous les disques ont un tampon de lecture / écriture matériel. Mais si vous augmentez la taille du tampon de dd plus que le tampon matériel, ses performances diminueront car dd lira du premier disque au tampon lorsque le second disque aura tout écrit à partir de son propre tampon matériel. Vous devez définir l'
bs
option de la commande dd à chaque fois une valeur différente pour différents appareils.la source
cat
aussi bien (pour le transfert de système de fichiers à système de fichiers, le bloc à bloc direct peut avoir des caractéristiques de performances différentes). Cependant, la différence n'était pas dramatique en tout cas./dev/rdiskX
comme cible lors de l'exécutiondd
.status=progress
qui imprimera la progression de l'opération.Il y a des années dans Unix-land
dd
était le moyen requis pour copier un périphérique bloc. Cela s'est poursuivi en tant que connaissance culte du fret même si (sur les systèmes Linux, au moins)cat
est presque toujours plus rapide quedd
.Cependant, même dans l'histoire, une taille de bloc décente a contribué à réduire le nombre d'appels système (lents), étant donné que chaque appel système a déclenché une opération d'E / S. La taille de bloc par défaut est de 512 octets (un secteur de disque). La collecte de plusieurs blocs de disques en une seule lecture était - et est - également acceptable. Cet exemple utilise une taille de bloc de 32 Mo:
Sur les systèmes Linux actuels, cependant, les disques peuvent être copiés plus efficacement avec un simple
cat
(Comme indiqué dans les commentaires sur votre question, il
pv
peut être remplacécat
et vous donnera une indication des progrès et du débit.)la source
Généralement,
dd
peut être évité en faveur de certaines alternatives. Il y a plusieurs bonnes raisons d'utiliser GNU à laddrescue
place. Dans Ubuntu, vous pouvez l'installer avec:et tout simplement simple
ddrescue
à utiliser. Notez que différemment du nom du package, l'exécutable n'a pas l'initialeg
.Son utilisation est aussi simple que:
Le fichier journal (nommé quel que soit votre choix) vous permet de suspendre / arrêter et redémarrer, sans refaire le travail précédent, ce qui est utile lors de la création de gros clones ou de la récupération de disques. Par défaut, il affiche la progression, la vitesse de copie actuelle, la vitesse de copie moyenne et le nombre de blocs défectueux trouvés.
Il utilise des valeurs par défaut raisonnables pour la taille des blocs, donc la vitesse de copie est toujours aussi rapide que le périphérique peut le gérer, du moins d'après mon expérience (j'ai cloné plusieurs centaines de disques avec lui, toutes tailles et types).
Souvent, les disques qui commencent à tomber en panne ont des problèmes de vitesse tels que des correctifs occasionnels de lenteur, de faible vitesse moyenne, de longues pauses soudaines (secteurs défectueux) ou des réinitialisations complètes (graves erreurs de surface).
ddrescue
peut vous aider à identifier tout ce qui précède et à redémarrer votre clone (à condition que vous ayez spécifié un fichier journal) même si votre lecteur se réinitialise.la source
Très belle question. L'interface brute est implémentée sur certains systèmes Unix (tru64, hpux, solaris) mais pas sur linux. L'interface brute accélère le transfert car les E / S Unix sont ignorées. L'interface de bloc (
/dev/dsk
ou/dev/disk
) est plus lente car elle utilise le système d'E / S Unix. Pour accélérerdd
(gnu dd peut) utilisezbs=30M
oubs=20M
selon votre matériel. La réponse courte est: NON, elle n'est pas mise en œuvre, du moins pour autant que je sache. J'utilise linux depuis les temps anciens de la version 2.2 du noyau et je n'ai jamais vurdsk
utilisé sous unix.la source