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 cela fait maintenant près de 2 jours que "Couper les blocs en panne".
Commande d'origine:
ddrescue -n /dev/rdisk1s2 /Volumes/OSXBackup/rdisk1s2.img /Volumes/OSXBackup/rdisk1s2.log
Sortie courant:
Initial status (read from logfile)
rescued: 248992 MB, errsize: 1007 MB, errors: 15867
Current status
rescued: 249021 MB, errsize: 978 MB, current rate: 17408 B/s
ipos: 44405 MB, errors: 15866, average rate: 2784 B/s
opos: 44405 MB, time from last successful read: 0 s
Trimming failed blocks...
La commande d'origine a utilisé le ddrescue -n
paramètre, et j'ai redémarré le processus plusieurs fois au besoin (et il semblait reprendre là où il s'était arrêté à chaque fois).
Existe-t-il un moyen d'accélérer ce processus?
Edit: Six heures plus tard, voici l'état actuel:
rescued: 249079 MB, errsize: 920 MB, current rate: 409 B/s
ipos: 39908 MB, errors: 15851, average rate: 2698 B/s
opos: 39908 MB, time from last successful read: 0 s
Trimming failed blocks...
Il semble que, bien que les «erreurs» décomptent lentement, les ipos / opos décomptent la quantité de données à parcourir, et il semble fonctionner à un taux de 750 Mo / heure. À ce rythme, il se terminera en ~ 53 heures. Oui.
Edit # 2: Deux jours plus tard, toujours en cours d'exécution. Cependant, il y a de l'espoir. Il a dépassé la partie "Découpage des blocs défaillants" et passe à la phase suivante "Fractionnement des blocs défaillants". Si quoi que ce soit, ce qui devrait être retiré de l'affichage de cette question, c'est que cela prend certainement beaucoup de temps lorsqu'une bonne quantité de données / erreurs sont impliquées. Mon seul espoir est que je puisse récupérer avec succès certaines données importantes quand tout sera dit et fait.
rescued: 249311 MB, errsize: 688 MB, current rate: 0 B/s
ipos: 26727 MB, errors: 15905, average rate: 1331 B/s
opos: 26727 MB, time from last successful read: 20 s
Splitting failed blocks...
la source
-M
juste au cas où les redémarrages de ce matin et la mise à niveau de dist feraient une sorte de gâchis)Réponses:
J'ai observé que l'utilisation de l'
-n
option (sans fractionnement) avec-r 1
(réessayer une fois) et le réglage-c
(taille du cluster) sur une valeur plus petite peut aider.Mon impression est que l'étape de fractionnement est très lente car elle
ddrescue
se fractionne et fractionne à nouveau les zones endommagées. Cela prend beaucoup de temps car ilddrescue
tente de restaurer de très petites portions de données. , Je préfère utiliser ainsi-n
(sans séparation) avec-c 64
,-c 32
,-c 16
, asoProbablement le
-n
(sans division) devrait toujours être utilisé pour un premier passage dans les directions avant et arrière. Il semble que plus les données ont été divisées, plus le clonage est lent, bien que je n'en sois pas sûr. Je suppose que plus les zones non traitées sont grandes, mieux lors de la réexécutionddrescue
, car des secteurs plus contigus doivent être clonés.Comme j'utilise un fichier journal, je n'hésite pas à annuler la commande avec Ctrl+ Clorsque la vitesse de lecture des données devient deux faible.
J'utilise également le
-R
mode (Inverse) et après un premier passage, cela me donne souvent des vitesses plus élevées de lecture en arrière qu'en avant.Pour moi, la façon dont les secteurs déjà essayés (
-r N
) sont traités lors de la réexécution de laddrescue
commande n'est pas claire , en particulier lors de l'alternance-R
des commandes de clonage avant (par défaut) et inverse ( ). Je ne sais pas si le nombre de fois où ils ont été essayés est stocké dans le fichier journal et probablement le travail est à nouveau inutile.Le
-i
drapeau (position d'entrée) peut également aider à accélérer les choses.la source
Il peut être très difficile de voir la progression de
ddrescue
, mais une autre commande incluse est appeléeddrescuelog
.Une simple commande
ddrescuelog -t YourLog.txt
affichera ces belles infos:Vous pouvez même l'utiliser en
ddrescue
cours d'exécution ...la source
errsize: 289420 MB, errors: 34926 ( 7.23%) non-trimmed: 288130 MB, in 105407 area(s) ( 7.20%) non-split: 1243 MB, in 185 area(s) ( 0.03%) bad-sector: 47490 kB, in 92728 area(s) ( 0.00%)
(... mais merci des tas pour la commande!Une autre façon de surveiller les progrès de ddrescue (sous Linux, au moins) consiste à utiliser strace.
Tout d'abord, recherchez le PID du processus ddrescue à l'aide de "ps aux | grep ddrescue"
Exécutez ensuite "strace" contre ce processus. Vous verrez quelque chose comme:
...etc. La sortie est rapide et moche, donc je la passe ensuite par "grep" pour filtrer les choses qui m'intéressent:
Dans cet exemple, le "1702212676608" équivaut à "la quantité de données qui doit encore être traitée sur ce disque de 2 To que vous essayez de récupérer". (Ouais. Aïe.) Ddrescue crache un nombre similaire - bien que "1720 Go" - dans sa sortie d'écran.
strace vous offre un flux de données BEAUCOUP de granularité à examiner; c'est une autre façon d'évaluer la vitesse de ddrescue et d'estimer une date d'achèvement.
Le faire fonctionner en permanence est probablement un mauvais plan car il rivaliserait avec ddrescue pour le temps CPU. J'ai pris l'habitude de la diriger vers la "tête" pour que je puisse saisir les 10 premières valeurs:
J'espère que cela aide quelqu'un.
la source
strace -e lseek …
pour cela - maispv -d <pid>
peut-être plus joli.Si votre objectif est d'obtenir la majeure partie des données intactes, vous pouvez accélérer leur extraction. Mais si vous voulez vraiment récupérer autant de données que possible, alors laisser ddrecue grignoter à chaque fois est la route à suivre.
la source
J'ai trouvé qu'en jouant avec le paramètre -K, vous pouvez accélérer les choses. D'après ce que j'ai vu si ddrescue trouve une erreur lors de l'exécution avec l'option -n tente de sauter une quantité fixe de secteurs. S'il ne sait toujours pas lire, il double sa taille. Si vous avez de grandes zones endommagées, vous pouvez indiquer une grande valeur K (par exemple 100M) et ainsi le saut sur une erreur sera plus grand la première fois et il sera plus facile d'éviter rapidement les zones problématiques dans le premier passé.
Soit dit en passant, il existe une merveilleuse application graphique pour analyser le journal.
http://sourceforge.net/projects/ddrescueview/
la source
Quel est le système de fichiers du disque dur sur lequel vous enregistrez l'image de secours et le fichier journal? Je viens de faire l'expérience que le sauvetage d'un disque dur interne de 500 Go (connecté via SATA) sur un ordinateur portable exécutant Linux Mint à partir d'une clé USB, en enregistrant l'image de secours et le fichier journal sur un
exFat
disque dur USB formaté, commençait assez lentement (1-2 Mo / sec) mais après environ 250 Go, il ne rampait qu'à <100 Ko / sec. Il semblait devenir plus lent à mesure que le fichier image de secours augmentait.J'ai ensuite déplacé l'image de secours et le fichier journal vers un autre emplacement temporaire, reformaté le disque dur USB avec le
ext4
système de fichiers, déplacé les fichiers dessus et repris le processus ddrescue - et maintenant il fonctionne à nouveau avec 1-20 Mo / sec (fluctuant mais environ 7 Mo / sec en moyenne)!On dirait
exFat
que ne joue pas très bien avec de très gros fichiers (plusieurs centaines de gigaoctets).la source
Pour une option plus rapide et rapide pour sauver le disque, vous pouvez utiliser un fichier de script sh et exécuter le fichier avec "sh filename.sh". Il contient cette ligne montrée, répétez simplement "sudo ddrescue" et "sleep 3" encore quelques fois, le sommeil est utilisé pour faire reposer le lecteur quelques secondes, cela peut être bon pour certaines raisons:
Le -r0 est sans réponses. Le -e +0 correspond à la sortie sur 1 erreur. Le -T 1s se termine avec 1 seconde de lecture en échec. Il existe des options qui peuvent être utilisées comme -d pour direct et -n pour pas de raclage, ce qui peut accélérer.
Vous pouvez utiliser -R après la fin avec l'option -A une fois, qui inversera et supprimera toutes les erreurs et recommencera à l'envers. Signifie qu'il lira les erreurs différemment.
la source
dd_rhelp est un script shell qui utilise dd_rescue "[...] sur tout votre disque, MAIS il essaiera de rassembler le maximum de données valides avant d'essayer pendant des siècles sur des grappes de secteurs défectueux"
il est assez ancien (2012) mais fonctionne toujours. n'ont pas encore essayé ddrescue.
la source