HowTo: Cloner un disque sous Linux avec ddrescue [ébauche]

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

HowTo: Cloner un disque sous Linux avec ddrescue [ébauche]

Messagepar HP77 » 11 Juil 2010 08:02

Bonjour,

A la suite de soucis de disque dur, j'ai dû apprendre à cloner un disque défectueux sous Linux.

Je me propose donc, ici-même, de partager le fruit de cet apprentissage et de ce fait, je ré-itère ma reconnaissance envers ceux qui m'ont apporté leur aide. :wink:


En bref :
    1. Utiliser un LiveCD Linux tel que SystemRescueCD (ou bien le mode rescue du CD d'installation de la districution Linux utilisée) pour Démarrer le système où se trouve connecté le disque à cloner.
    2. Depuis le terminal donnant accès au Shell, lancer fdisk -l pour lister et identifier les disques (source et cible)
    Code: Tout sélectionner
    fdisk -l

    3. Lancer ddrescue -B -v /dev/XXX /dev/YYY /ZZZ/ddrescue_logfile_AAAA-MM-JJ.log
    Code: Tout sélectionner
    ddrescue -B -v /dev/XXX /dev/YYY /ZZZ/ddrescue_logfile_AAAA-MM-JJ.log


    Où:

    XXX = nom du disque source complet (PAS de la partition). Exemple : sda pour un disque SATA ou une clef USB et bien sûr hda pour une version IDE.
    YYY = nom du disque cible complet (PAS de la partition). Exemple : sdb pour un disque SATA ou une clef USB et bien sûr hdb pour une version IDE.
    ZZZ = nom du point de montage d'un disque ou d'une clef USB pour contenir le fichier de 'log' des activités de ddrescue (pas nécessaire pour dd). Exemple : sdc pour un disque SATA ou une clef USB et bien sûr hdc pour une version IDE.

    AAAA = année sur 4 chiffres. Exemple: 2010.
    MM = mois sur 2 chiffres. Exemple: 07.
    JJ = jour sur 2 chiffres. Exemple: 11.

    L'option -B est pour forcer l'expression des nombres en utilisant les puissances binaires (1024 au lieu de 1000 pour Koctets, etc...)
    L'option -v est pour forcer ddrescue à être "verbeux" (on sait à peu près ce qu'il se passe)
Quand c'est terminé, le disque est cloné ! :wink:

Si un autre 'LiveCD' que celui indiqué est utilisé, il se peut que seul dd (et non pas ddrescue) soit disponible.
La ligne de commande serait donc :
Code: Tout sélectionner
dd if=/dev/XXX of=/dev/YYY -BS=16M

L'option -BS=16M force l'utilisation de blocs de données de 16 Mo lors des phases de lecture/écriture des données par dd. D'autre part, dd ne dit rien sur ce qu'il fait avant d'avoir terminé donc, ddrescue est préférable en cas de clonage de disque avec "secteurs défectueux"...

La différence entre dd et ddrescue, c'est que ce dernier peut tenter une récupération des secteurs défectueux du disque à cloner. Mais seulement tenter...
dd, lui, s'arrêtera à la première erreur de lecture et ne cherchera pas ailleurs s'il y a autre chose à récupérer...


En espérant que cela puisse aider et ne jamais me resservir pour unproblème de disque. :wink:

Cordialement,
HP


P.S.
Pour en savoir un peu plus sur le sujet, on peut tenter une recherche sur l'ensemble des forums IXUS avec ce seul mot clef : ddrescue
Ainsi que d'utiliser les commandes :
Code: Tout sélectionner
man dd
man ddrescue

[color=blue]pour accéder à l'aide en ligne (si cela est possible/disponible).
Autrement, rechercher cette aide sur Internet... "G**gleu is your friend!" :wink:

HP_


P.P.S.
Pour connaître le temps que ça peut prendre, un bête calcul avec les infos retournées par ddrescue et on est fixé. Pour mon cas, c'était au environs de 75 Go/heure entre une disque source en USB et un disque cible en SATA. (oui, j'avais déjà sorti et remplacé le disque défecteux de la machine, il a fini en externe via USB)

[edit]2010-07-11 à 15h25 GMT+08:00 - Orthographe + Changement de titre : "ébauche" remplace "candidate" car il y a encore à dire... :wink:[/edit]
[edit]2010-07-11 à 15h35 GMT+08:00 Autres modifications en bleu [/edit]
[edit]2010-07-11 à 15h40 GMT+08:00 tentative de retrait d'ambigüité sur la commande fdisk -"L"[/edit]
Dernière édition par HP77 le 11 Juil 2010 09:41, édité 4 fois au total.
HP77
Contre-Amiral
Contre-Amiral
 
Messages: 491
Inscrit le: 25 Nov 2009 06:44
Localisation: Singapour

Messagepar jdh » 11 Juil 2010 08:30

ddrescue est destiné à copier sans être interrompu par une erreur de lecture, contrairement à dd.

On fera attention à bien pensez que
- si le disque comporte des erreurs, il faut envisager de le remplacer,
- si les erreurs sont des erreurs de file system et non des erreurs de blocs, il est préférable de réparer le file system,
- si la cible est un fichier, il faut que le disque la contenant soit bien plus grand,
- si la cible est un fichier, il est probable qu'il faudra un autre disque et un autre dd,
- dd (ou ddrescue) ne répare en rien un disque (filesystem), et n'en fait qu'une copie de même taille.

Ceci est une sorte de clonage.


Le clonage de disque peut être vu sous l'angle déploiement d'un master. Et là l'outil libre est partimage (présent sur systemrescuecd et sur clonezilla) qui sait copier juste ce qu'il faut. En sus, on pensera à parted ou gparted pour redimensionner des partitions (préalablement défragmentées pour ntfs ou fat32=vfat).
Avatar de l’utilisateur
jdh
Amiral
Amiral
 
Messages: 4741
Inscrit le: 29 Déc 2002 01:00
Localisation: Nantes

Messagepar HP77 » 11 Juil 2010 09:37

Juste un détail qui peut avoir son importance : du fait que l'on clone tout un disque, il vaut mieux être sûr d'agir avec le compte utilisateur 'root' qui est l'utilisateur par défaut sur le LiveCD cité précédemment. :wink:

HP_
Ma config perso : ATGC3-I (=Atom 330) + 1x 2GB RAM DDR2 + 2x HDD SATA 500 GB en RAID 1 logiciel
--> Mini-Serveur à la maison (derrière une "Box")
--> configuration réseau
A lire : The SME Server Developer's Guide (EN)
HP77
Contre-Amiral
Contre-Amiral
 
Messages: 491
Inscrit le: 25 Nov 2009 06:44
Localisation: Singapour

Messagepar jibe » 12 Juil 2010 21:37

Salut,

Bien, ton tuto :)

Tu as juste oublié quelques précisions sur l'utilisation de ddrescue (si tu ne les connaissais pas, tu peux peut-être les mettre à profit sur ton disque cassé :wink: ). On procède généralement en deux ou tois temps :

1 - On récupère rapidement ce qui peut l'être facilement. Noter le paramètre -n qui permet de ne pas insister lorsqu'on rencontre un bad sector :
Code: Tout sélectionner
ddrescue -B -v -n /dev/XXX /dev/YYY /ZZZ/ddrescue_logfile_AAAA-MM-JJ-HHMM.log

Je préfère ajouter l'heure dans les noms de fichiers log : plus facile si on en génère plusieurs dans la même journée (si on récupère de petites partitions par exemple) :wink:

2 - On refait un passage, pour tenter de récupérer les secteurs non lus au premier passage. Inutile bien sûr en cas d'absence de mauvais secteurs :
Code: Tout sélectionner
ddrescue -B -v -c 16 -r 2  /dev/XXX /dev/YYY /ZZZ/ddrescue_logfile_AAAA-MM-JJ-HHMM.log

Attention à bien indiquer le même fichier .log, puisque c'est à partir de là qu'on va repérer les secteurs à récupérer. On traite 16 secteurs d'un coup (-c 16) et on fait 2 réessais (-r 2).

3 - Si besoin (encore des secteurs non lus), on refait un troisième passage :
Code: Tout sélectionner
ddrescue -B -v -c 1 -r 5 /dev/XXX /dev/YYY /ZZZ/ddrescue_logfile_AAAA-MM-JJ-HHMM.log

Cette fois, on ne traite qu'un seul secteur à la fois (-c 1) et on insiste lourdement (5 réessais : -r 5).

On pourrait imaginer faire encore plus de réessais, mais il n'est pas certain qu'on y gagne grand-chose.

A noter qu'un gros intérêt de ddrescue est aussi qu'il relit toujours d'abord son logfile (donc, bien donner un nom unique ou effacer l'ancien s'il est obsolète :wink: ), et donc qu'il peut être interrompu à tout instant (le log est écrit toutes les 30 secondes), il reprendra ensuite là où il en était 8) .
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar HP77 » 15 Juil 2010 09:14

Hello,

Bien merci a toi Jibe pour fournir quelques complements essentiels, j'ai fait ca en vitesse pendant que c'etait encore tout chaud dans ma tete mais bon, comme tu le sais, avec la clim, ca refroidit super vite... :roll: :wink:

Plus serieusement, le coup de la date dans les noms de fichiers, c'est aussi mon truc mais j'avais peu de passer pour un parano... :lol: :wink:

Bon, euh ??
J'ai oublie ce que je voulais ajouter... c'est malin ca !!

Par contre, le coup de sauver le fichier log toutes les 30s, si on pouvait le regler ce serait top aar ca fait mal a la clef USB si comme dans mon cas le disaue fait quelques centaines de giga octets avec un debit de clonage de 75 Go/heure... :(

Bon, j'arrete de" tartiner", mon pot est vide de matiere... :wink:
et puis, la, je ne peux pas faire basculer le clavier en francais pour les accents, etc... Desole ! :?


A+
HP_
Ma config perso : ATGC3-I (=Atom 330) + 1x 2GB RAM DDR2 + 2x HDD SATA 500 GB en RAID 1 logiciel
--> Mini-Serveur à la maison (derrière une "Box")
--> configuration réseau
A lire : The SME Server Developer's Guide (EN)
HP77
Contre-Amiral
Contre-Amiral
 
Messages: 491
Inscrit le: 25 Nov 2009 06:44
Localisation: Singapour

Messagepar jibe » 15 Juil 2010 14:12

Salut,

HP77 a écrit:Par contre, le coup de sauver le fichier log toutes les 30s, si on pouvait le regler ce serait top aar ca fait mal a la clef USB si comme dans mon cas le disaue fait quelques centaines de giga octets avec un debit de clonage de 75 Go/heure... :(

Non, la fréquence d'écriture n'a rien à voir : ddrescue mémorise secteur par secteur ce qu'il a déjà dupliqué, et c'est cela uniquement qui explique la taille du fichier de log. Réduire la taille, ça voudrait dire ne mémoriser que par clusters, ou autre groupe de secteurs, et du coup les possibilités de reprise et insistance sur les secteurs défectueux seraient bien moins précises ce qui augmenterait dans d'énormes proportions le temps des passes en reprise :wink:
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie

Messagepar HP77 » 16 Juil 2010 05:34

Hello,
jibe a écrit:Salut,

HP77 a écrit:Par contre, le coup de sauver le fichier log toutes les 30s, si on pouvait le regler ce serait top aar ca fait mal a la clef USB si comme dans mon cas le disaue fait quelques centaines de giga octets avec un debit de clonage de 75 Go/heure... :(

Non, la fréquence d'écriture n'a rien à voir : ddrescue mémorise secteur par secteur ce qu'il a déjà dupliqué, et c'est cela uniquement qui explique la taille du fichier de log. Réduire la taille, ça voudrait dire ne mémoriser que par clusters, ou autre groupe de secteurs, et du coup les possibilités de reprise et insistance sur les secteurs défectueux seraient bien moins précises ce qui augmenterait dans d'énormes proportions le temps des passes en reprise :wink:

Euh !?
Ok.
Ce à quoi je pensais, c'était plutôt au délai/temps entre deux écritures pour ne pas trop solliciter la mémoire "Flash". Par exemple, toutes les 2 minutes ou plus longs... :wink:

Bon, cela n'est qu'un détail mais qui peut avoir son importance si jamais le fichier de log est corrompu après plusieurs heures à bosser sur un disque avec de nombreux secteurs défectueux... :roll: :wink:


Sur ce, bon weekend à tous !

HP_
Ma config perso : ATGC3-I (=Atom 330) + 1x 2GB RAM DDR2 + 2x HDD SATA 500 GB en RAID 1 logiciel
--> Mini-Serveur à la maison (derrière une "Box")
--> configuration réseau
A lire : The SME Server Developer's Guide (EN)
HP77
Contre-Amiral
Contre-Amiral
 
Messages: 491
Inscrit le: 25 Nov 2009 06:44
Localisation: Singapour

Messagepar jibe » 16 Juil 2010 11:27

Salut,
HP77 a écrit:Ce à quoi je pensais, c'était plutôt au délai/temps entre deux écritures pour ne pas trop solliciter la mémoire "Flash".

Ah, Ok. Mais tu crois que c'est mieux d'écrire beaucoup toutes les 30mn (par ex.) que peu toutes les 2mn ? Possible, mais je ne suis pas sûr que ça joue beaucoup. Par contre, ça va faire une grosse différence en cas de crash : au lieu de perdre dans le pire des cas seulement 2mn, on en perd 30 !!!

En fait, je ne sais pas si le nombre d'écritures possibles sur une carte CF est donné pour une adresse précise (on écrit X fois à la même adresse) ou pas (on écrit X fois sur la carte, quelle que soit l'adresse)...
"Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire" (Albert Einstein)

Autrefois, l'Etat défendait des valeurs. Maintenant, il défend des profits... (Anne Haunnime)
Avatar de l’utilisateur
jibe
Amiral
Amiral
 
Messages: 4366
Inscrit le: 17 Oct 2003 00:00
Localisation: Haute Savoie


Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron