2 votes

Puis-je cloner un disque dur contenant un système d'exploitation en utilisant dd avec n'importe quelle taille de bloc ?

Est-il sûr de cloner un disque dur vers un fichier image dans un disque dur plus grand en utilisant dd et une taille de bloc arbitraire pour une meilleure vitesse ? L'image résultante est-elle la même en utilisant différents bs ? Qu'en est-il de la restauration de cette image sur le disque d'origine ?

4voto

Kamil Maciorowski Points 57004

Est-il possible de cloner un disque dur vers un fichier image dans un disque dur plus grand en toute sécurité ? dd et une taille arbitraire de gros bloc pour une meilleure vitesse ?

Cela dépend. En général : non.

Si le disque dur que vous lisez est sain, dd générera la même sortie, quelle que soit la taille du bloc ( bs ) utilisé (à moins qu'il soit incroyablement grand et que vous obteniez des memory exhausted et pas de fichier de sortie du tout). Ceci n'est pas vrai pour tous les périphériques (voir cette question ) et vous avez besoin iflag=fullblock .

Si le disque dur que vous lisez n'est pas sain, dd s'arrêtera après avoir rencontré une erreur de lecture. Vous devez conv=noerror pour faire face à cette situation. En outre, vous devez conv=sync iflag=fullblock . C'est un mythe conv=sync,noerror est suffisante (voir cette réponse y ce commentaire ).

Si le disque dur que vous lisez n'est pas sain, vous pouvez obtenir des images différentes même avec conv=sync,noerror iflag=fullblock en fonction de bs (strictement : ibs ). Imaginez un seul secteur physique erroné sur le disque dur. Ce secteur peut affecter une ou plusieurs opérations de lecture et le résultat dépendra de la taille du bloc et de la façon dont les blocs s'alignent sur les secteurs physiques. Vous pouvez obtenir un "trou de zéros" dans votre image plus grand que le secteur erroné. Si la taille du bloc correspond à la taille du secteur physique, vous obtiendrez un "trou de zéros" de cette taille exactement, ce qui est le meilleur (trou minimal) que vous puissiez obtenir.

D'autre part plus grand bs peut améliorer le débit .

Et il y a un autre aspect. Si le disque dur que vous lisez est sain (ou du moins vous le supposez), vous pouvez le préparer de manière à ce que l'image prenne moins de place en tant que fichier épars ( cette réponse (méthode des fichiers épars). dd essaiera de créer un fichier de sortie clairsemé avec conv=sparse . L'efficacité de cette approche dépend de bs ; strictement : le obs Il est donc raisonnable d'utiliser de grandes ibs et petits obs séparément dans cette affaire.

Toutes ces raisons font que dd n'est pas le meilleur outil pour créer des images disque en général, surtout si vous ne connaissez pas très bien ses particularités. (Note : "pas le meilleur" peut toujours être "bon"). Utilisez GNU ddrescue avec la taille du secteur ( -b ) correspondant à la taille du secteur physique du dispositif source et une taille de cluster relativement importante ( -c ) pour les performances. Avec -S il tirera parti de l'éparpillement.

Il y a deux scénarios où je préfère dd sur ddrescue :

  • (trivial) Lorsque dd est disponible et ddrescue ne l'est pas.
  • Quand j'ai besoin de flux (pipe) la sortie. ddrescue a besoin d'un fichier de sortie recherchable ; avec dd Je peux envoyer la sortie vers nc , pv , gzip ( cette réponse encore une fois, méthode du fichier compressé) ou autre.

Qu'en est-il de la restauration de cette image sur le disque d'origine ?

Le principe est que vous pouvez lire l'image sans erreur et que le disque d'origine est sain. Si c'est le cas, dd fera l'affaire, une grande taille de bloc est acceptable.

S'il y a des erreurs de lecture pendant la lecture de l'image (qui indiquent que le périphérique et/ou le système de fichiers contenant l'image est corrompu), vous devez procéder comme pour un périphérique source non sain (voir ci-dessus) et reconnaître que les données résultantes sur le disque d'origine peuvent être (partiellement) corrompues.

Si des erreurs d'écriture se produisent lors de l'écriture sur le disque d'origine, la restauration de l'image n'a pas beaucoup de sens ; vous ne devriez pas utiliser ce disque du tout.

0voto

ivanivan Points 2827

Oui, aucun problème avec n'importe quelle taille de bloc.

Cela dit, l'utilisation dd vous copierez également l'espace vide/non utilisé, gaspillant ainsi de l'espace dans le fichier de destination. Ce qui est acceptable si vous utilisez netcat a dd à travers un réseau directement sur un disque cible, mais pas si bien si vous créez une "image maître" pour cloner un tas de machines ou à des fins de sauvegarde. Si c'est ce que vous avez l'intention de faire, je me tournerais vers un programme d'imagerie comme clonezilla à la place.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X