32 votes

Y a-t-il un moyen d'accélérer ddrescue?

J'ai eu un crash de disque dur de 500 Go il y a environ 5 jours. J'ai utilisé ddrescue sur la partition importante il y a quelques jours, et ça tourne actuellement sur "Trimming failed blocks" depuis près de 2 jours maintenant.

Commande originale :

ddrescue -n /dev/rdisk1s2 /Volumes/OSXBackup/rdisk1s2.img /Volumes/OSXBackup/rdisk1s2.log

Output actuel :

Status initial (lu depuis le fichier de log) rescued:   248992 Mo,  errsize:   1007 Mo,  erreurs:   15867
Status actuel rescued:   249021 Mo,  errsize:    978 Mo,  taux actuel:    17408 B/s
   ipos:    44405 Mo,   erreurs:   15866,    taux moyen:     2784 B/s
   opos:    44405 Mo,     temps depuis la dernière lecture réussie:       0 s
Trimming des blocs en échec...

La commande originale utilisait le paramètre ddrescue -n, et j'ai redémarré le processus plusieurs fois au besoin (et il semblait reprendre là où il s'était arrêté à chaque fois).

Y a-t-il un moyen d'accélérer ce processus ?

Édit : Six heures plus tard, voici le status actuel :

rescued:   249079 Mo,  errsize:    920 Mo,  taux actuel:      409 B/s
   ipos:    39908 Mo,   erreurs:   15851,    taux moyen:     2698 B/s
   opos:    39908 Mo,     temps depuis la dernière lecture réussie:       0 s
Trimming des blocs en échec...

Il semble que alors que "erreurs" diminue extrêmement lentement, ipos/opos compte la quantité de données qu'il doit traiter, et il semble travailler à un taux de 750 Mo/heure. À ce rythme, cela se terminera en ~53 heures. Oups.

Édit #2: Deux jours plus tard, ça tourne toujours. Cependant, il y a de l'espoir. Il est passé de la partie "Trimming failed blocks" à la phase suivante "Splitting failed blocks". Si quelque chose doit être retenu de la lecture de cette question, c'est que cela prend vraiment beaucoup de temps quand une bonne quantité de données/erreurs est impliquée. Mon seul espoir est de pouvoir récupérer avec succès certaines données importantes une fois que tout sera terminé.

rescued:   249311 Mo,  errsize:    688 Mo,  taux actuel:        0 B/s
ipos:    26727 Mo,   erreurs:   15905,    taux moyen:     1331 B/s
opos:    26727 Mo,     temps depuis la dernière lecture réussie:      20 s
Splitting des blocs en échec...

1voto

Dirk Points 111

Quel est le système de fichiers du disque dur sur lequel vous enregistrez l'image de sauvegarde et le fichier journal ? Je viens de faire l'expérience de sauver un disque dur interne de 500 Go (connecté via SATA) sur un ordinateur portable exécutant Linux Mint à partir d'une clé USB, en sauvegardant l'image de sauvegarde et le fichier journal sur un disque dur externe formaté en exFat, mais cela a commencé plutôt lentement (1-2 Mo/s) et après environ 250 Go, il n'avançait plus qu'à <100 Ko/s. Il semblait ralentir au fur et à mesure que le fichier d'image de sauvegarde grossissait.

Ensuite, j'ai déplacé l'image de sauvegarde et le fichier journal vers un autre emplacement temporaire, réformaté le disque dur externe avec le système de fichiers ext4, déplacé les fichiers dessus et repris le processus de ddrescue - et maintenant il fonctionne à nouveau avec 1-20 Mo/s (fluctuant mais en moyenne autour de 7 Mo/s) !

Il semble que exFat ne soit pas très compatible avec les fichiers très volumineux (plusieurs centaines de gigaoctets).

0voto

Dealazer Points 25

Pour une option plus rapide et plus rapide pour sauver le disque, vous pouvez utiliser un fichier de script sh et exécuter le fichier avec "sh nomdufichier.sh". Il contient cette ligne affichée, il suffit de répéter "sudo ddrescue" et "sleep 3" quelques fois de plus, le sleep est utilisé pour permettre au disque de se reposer quelques secondes, ce qui peut être bon pour certaines raisons :

#! /bin/sh -e  
sudo ddrescue -d -r0 -e +0 -T 1s -n /dev/drivepartition file.img log.logfile 
sleep 3

Le -r0 est sans réponses. Le -e +0 est pour sortir en cas d'erreur 1. Le -T 1s sort avec une erreur de lecture de 1 seconde. Il y a des options qui peuvent être utilisées comme -d pour direct et -n pour pas de grattage, ce qui peut accélérer.

Vous pouvez utiliser -R après avoir terminé avec l'option -A une fois, cela inversera et supprimera toutes les tailles d'erreurs et recommencera en arrière. Cela signifie qu'il lira les erreurs différemment.

-2voto

Costin Gușă Points 686

dd_rhelp est un script shell qui utilise dd_rescue "[...] sur tout votre disque, MAIS il essayera de rassembler le maximum de données valides avant de passer des heures sur des tas de secteurs défectueux"

c'est assez ancien (2012) mais cela fonctionne toujours. Je n'ai pas encore essayé ddrescue.

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