Clonage d'un seul disque sur plusieurs disques simultanément


12

Je recherche un moyen de cloner un seul disque sur plusieurs disques en même temps.

J'ai préparé des images système sur des disques de 1 To, et il faut près de 2 heures pour cloner un disque sur un autre, puis cela augmente de façon exponentielle, pour avoir disons 30 disques clonés.

S'il était possible de cloner un disque sur plusieurs cibles, cela simplifierait beaucoup la procédure.

De plus, y a-t-il quelque chose qui empêche ce genre d'opération? Je veux dire, y a-t-il une raison particulière pour laquelle chaque logiciel de clonage de disque que je connais ne prend en charge qu'un seul lecteur cible?

Merci!

Réponses:


17

Vous pouvez utiliser la "substitution de processus" de bash avec la commande tee pour ce faire:

cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

ou pour plus de clarté (au détriment d'un peu d'efficacité), vous pouvez faire ddappeler le dernier de la même manière que les autres et envoyer la sortie standard de tee à / dev / null:

cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | /dev/null

et si vous l'avez installé, vous pouvez utiliser la visionneuse de tuyaux au lieu de catpour obtenir un indicateur de progression utile:

pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

Cela ne lit l'image source qu'une seule fois, de sorte que le lecteur source subit un choc de tête, ce qui sera probablement la raison pour laquelle vous voyez un ralentissement exponentiel lorsque vous essayez de copier l'image plusieurs fois par d'autres méthodes. En utilisant teecomme ci-dessus, les processus doivent s'exécuter à la vitesse du lecteur de destination le plus lent.

Si vous avez connecté les lecteurs de destination via USB, sachez qu'ils peuvent tous partager la bande passante du bus, de sorte que l'écriture de plusieurs en parallèle peut ne pas être plus rapide que leur écriture séquentielle car le bus USB devient le goulot d'étranglement et non les lecteurs source ou de destination.

Ce qui précède suppose que vous utilisez Linux ou similaire (cela devrait également fonctionner sur OSX bien que les noms de périphériques puissent être différents), si vous utilisez Windows ou autre chose, vous avez besoin d'une solution différente.

Éditer

L'imagerie sur le réseau a un problème similaire à l'imagerie de nombreux disques sur USB - le canal de transport devient le goulot d'étranglement au lieu des disques - à moins que le logiciel que vous utilisez ne prenne en charge une forme de transmission de diffusion ou de multidiffusion.

Pour la ddméthode, vous pourriez probablement enchaîner des processus netcat+ tee+ ddsur chaque machine comme ceci:

  1. Machine source cat/ pv/ dds les données ncjusqu'à la machine de destination 1.
  2. La machine de destination 1 ncécoute les données de la machine source et les achemine, ce teequi les envoie à son tour dd(et donc au disque) et un autre ncprocessus qui les envoie à la machine de destination 2.
  3. La machine de destination 2 ncécoute les données de la machine de destination 1 et les achemine, ce teequi les envoie à son tour dd(et donc au disque) et un autre ncprocessus qui les envoie à la machine de destination 3.
  4. et ainsi de suite jusqu'à la dernière machine qui vient de ncrécupérer les données de la machine précédente et de les envoyer sur le disque via dd.

De cette façon, vous utilisez potentiellement votre bande passante réseau complète en supposant que vous, votre commutateur et vos cartes réseau, avez tous négocié une liaison duplex intégral. Au lieu que la machine source envoie 10 copies des données (en supposant 10 machines de destination), chacune est donc limitée à 1/10 de la bande passante sortante, elle n'en envoie que 1. Chaque machine de destination prend une copie des données et les envoie encore. Vous devrez peut - être modifier les paramètres de taille de la mémoire tampon de pv, ncet ddde se rapprocher de la meilleure performance pratique.

Si vous pouvez trouver des logiciels qui prennent uniquement en charge la multidiffusion, ce serait beaucoup plus facile (et probablement un peu plus rapide)! Mais ce qui précède est le genre de solution hacky que je pourrais être assez stupide pour essayer ...

Modifier à nouveau

Une autre pensée. Si l'image du lecteur se comprime bien (ce qui sera le cas si de gros morceaux sont remplis de zéros), la bande passante sortante de la machine source n'a pas besoin d'être un problème même si elle est envoyée vers de nombreuses destinations à la fois. Compressez d'abord l'image, transmettez-la partout avec tee+ ncet décompressez sur les destinations (réseau-> nc-> décompresseur-> dd-> disque).


Merci pour une explication approfondie du processus. C'était vraiment utile. J'explore les options de clonage réseau en ce moment (en utilisant la multidiffusion), et s'il échoue, j'explorerai ce vecteur DD un peu plus.
mr.b

Vous n'avez pas dit que les disques étaient connectés à différents ordinateurs ... ce qui rend les choses complètement différentes!
marcusw

Cela se rapproche le plus de l'ordinateur local et du réseau d'ordinateurs duplication d'un à plusieurs disques, simultanément. Merci pour une explication approfondie!
mr.b

Pour les options de clonage réseau basées sur Linux, vous pouvez envisager Clonezilla. Il peut cloner via la multidiffusion ainsi que plusieurs options de clonage local, y compris DD.
user35060

5

Première réponse suggérée par Google (sur un système Linux) dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd) >(dd of=/dev/sde):, où / dev / sdb est le disque dur que vous souhaitez cloner et / dev / sdc, / dev / sdb et / dev / sde sont des lecteurs sur lesquels cloner (vous pouvez ajoutez-en autant que vous le souhaitez, copiez simplement). Un LiveCD devrait le faire, et n'oubliez pas de faire attention à vos lettres de lecteur!


1
Vrai. J'ai fait quelques recherches avant de poser cette question, mais j'étais intéressé à entendre les expériences d'autres personnes. DD est un excellent petit utilitaire, mais: 1) il ne connaît pas le contenu réel des données (il copiera également l'espace vide, secteur par secteur), et 2) quelqu'un a signalé des problèmes de performances lors du clonage sur plusieurs disques de cette façon. Avez-vous d'autres idées?
mr.b

"[...] où / dev / sdb est le disque dur à cloner et / dev / sdc, / dev / sdb et / dev / sde sont des lecteurs à cloner vers [...]" ---> "[...] et n'oubliez pas de faire attention à vos lettres de lecteur!" : DI D'accord !!!
dag729

1
@ mr.b: 1) Dans mon esprit, une copie bit à bit est meilleure que de prendre des raccourcis potentiellement dangereux. 2) Meh, la meilleure façon de penser est de jouer avec la source de dd pour le copier simultanément sur plusieurs emplacements, mais il serait plus rapide de copier simplement la manière lente.
marcusw

Êtes-vous sûr du of=-? Le crée simplement un -fichier de sortie plutôt que de sortir vers la sortie standard pour moi. Cela peut être résolu en omettant simplement l' ofoption.

L'utilisation de "tee" de cette façon ne fonctionnera pas. Veuillez voir: joshhead.wordpress.com/2011/08/04/…
user35060

2

Tout ce que je sais, c'est qu'il existe des choses appelées duplicateurs de disque dur. Ce sont des appareils spéciaux pour cloner (dupliquer) des disques durs sur plusieurs disques en même temps. Peut - être que cet article vous aide.


Oui, je connais l'existence de ces appareils; cependant, ils sont tout sauf bon marché, surtout dans mon cas à budget zéro :( Merci de les avoir mentionnés, cependant.
mr.b

1
Bien que ce ne soit pas complètement nul, si vous avez une machine de rechange (avec une alimentation électrique décente) que vous pouvez réquisitionner et pouvez vous permettre quelques contrôleurs SATA bon marché (il y en a un à deux ports dans ma machine domestique qui coûte un dixième) vous pouvez créer votre propre machine de duplication simple et utiliser la méthode dd + tee ou un autre logiciel si vous pouvez en trouver certains qui prennent en charge "lire à partir d'une seule source, écrire sur plusieurs" efficacement.
David Spillett

(C'est ce que j'ai supposé que vous essayiez de faire dans ma réponse initiale.)
David Spillett

1

Puisque personne ne l'a encore mentionné, je mentionnerai Clonezilla et leur Server Edition. (malheureusement, il ne semble pas y avoir de lien direct, mais vous pouvez trouver "Server Edition" dans le menu de navigation gauche du site ...)

J'ai eu beaucoup de chance avec Clonezilla Live Edition mais je n'ai pas encore essayé Server Edition. Ça a l'air plutôt lisse.


Je soutiendrai Clonezilla comme ce qui semble être une bonne solution pour vous sur la base des commentaires que vous avez fournis.
user35060

1

Si vous utilisez Mac OS X, cela est intégré. À partir de la machine, vous allez servir l'image à partir du démarrage d'une session asr de multidiffusion. Depuis le lancement du client vers le disque de démarrage, ouvrez le terminal et connectez-vous au flux de multidiffusion asr. Gratuit.

Détails: http://www.bombich.com/mactips/multicast.html


1

J'ai trouvé 2 liens utiles sur le Web à ce sujet. On a utilisé dd sans cat pour faire la diskdupe:

dd if=/dev/sdb | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh

http://joshhead.wordpress.com/2011/08/04/multiple-output-files-with-dd-utility

Ceci est encore développé avec un autre lien pour afficher un indicateur de progression:

dd if=/dev/sdb | pv -s $(blockdev --getsize64 /dev/sdb) | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh

http://www.commandlinefu.com/commands/view/6177/dd-with-progress-bar-and-statistics


0

Je voulais développer la réponse de David

pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

Le drive.imagepeut en fait être un autre appareil, comme/dev/sde

Deuxièmement, la ddcommande travaillera les amplitudes plus rapidement avec un bsréglage approprié . J'ai utilisé bs=64ket vu une augmentation de 6 fois la vitesse de copie d'une partition de 40 Gig, de 1 heure à 10 minutes.

La commande finale ressemblera donc à ceci:

pv drive.image | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd

Si votre source est un lecteur au lieu d'un fichier, cela ressemblera à ceci:

pv /dev/sde | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd


0

La duplication de disque dur parallèle est une tâche courante en criminalistique informatique. dc3dd( page de manuel ) est un outil dédié qui permet la copie parallèle d'une même source vers plusieurs destinations et fonctionne comme UNIX dd, avec plusieurs of=options autorisées.

Il est également possible d'activer le hachage du volume source et des copies pour vérifier leur intégrité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.