web-dev-qa-db-fra.com

Récupération plus rapide d'un disque avec des secteurs défectueux

Récemment, j’ai essayé de dd d’un disque dur malsain à un fichier. J'ai utilisé dd if=/dev/sdb of=somefile bs=4096 conv=noerror,sync. Mon problème était que dd perdait beaucoup de temps lorsqu'il rencontrait un mauvais bloc. Dans mon cas d'utilisation, je paierais volontiers une perte de données pour un résultat plus rapide.

Existe-t-il un moyen d'accélérer le traitement des erreurs? Peut-être un noyau Tweak (dire au disque dur de faire moins d'effort pour lire un bloc)? Ou un autre programme?

11
Notinlist

Tout d’abord, pour le logiciel à utiliser: vous pouvez essayer d’utiliser ddrescueau lieu de ddname__.

ddrescuea un commutateur pour ne faire qu'un nombre limité de tentatives. Il peut également utiliser un fichier journal pour enregistrer les blocs défectueux. Si vous avez envie de faire plusieurs tentatives plus tard, vous pouvez utiliser le fichier same pour exécuter ddrescueagain avec différentes options (comme plus de tentatives) et ne retentera que les blocs nécessaires.

Exemple d'utilisation:

# ddrescue -n /dev/sda /dev/sdb rescue.log
# ddrescue -r1 /dev/sda /dev/sdb rescue.log

De la page info ddrescuename__:

   -n, --no-scrape     
          Skip the scraping phase. Avoids spending a lot of time
          trying to rescue the most difficult parts of the file.

   -r, --retry-passes=<n>
          Exit after given number of retry passes. Defaults to 0.
          -1 means infinity. Every bad sector is tried only once 
          in each pass. To retry bad sectors detected on a previous
          run, you must specify a non-zero number of retry passes.

Voici quelques sources supplémentaires pour utiliser ddrescuename__:


Modifier

Si le disque dur lui-même prend trop de temps, vous pouvez essayer d'activer une fonctionnalité appelée TLER (T imé L imité E erreur R conversion) ou CCTL (C commande C achèvement T ime L imit). Tous les disques durs ne l'ont pas, mais vous pouvez l'utiliser pour limiter le temps passé sur le contrôleur de disque dur lui-même. Cette approche peut bien sûr être combinée avec ddrecuename__.

Linux a un outil appelé smartctl(dans le paquet smartmontoolsname__).

Pour vérifier le réglage actuel ("désactivé" signifie une durée illimitée que vous ne souhaitez pas):

# smartctl -l scterc /dev/sda

Pour le définir sur une valeur fixe (5,0 secondes dans cet exemple. La définir sur 0 désactive TLER):

# smartctl -l scterc,50,50 /dev/sda

Source pour TLER: http://en.wikipedia.org/wiki/TLER

24
Slizzered

J'ai eu de bons résultats avec des disques autrement illisibles avec ce logiciel.

http://www.cgsecurity.org/wiki/TestDisk

Ce prochain est également un outil de récupération solide. Il peut obtenir des fichiers même si votre table de fichiers est endommagée ou supprimée. C'est un sacré bon outil de criminalistique. Il décharge les choses de manière vraiment désorganisée, mais vous pouvez obtenir toutes les données déplacées.

http://www.cgsecurity.org/wiki/PhotoRec

3
fu9ar

Pour une option rapide et rapide permettant de récupérer le disque, vous pouvez utiliser un fichier de script sh et l'exécuter avec sh. Elle contient cette ligne, il suffit de répéter Sudo ddrescue et sleep 3 quelques fois de plus. Le sommeil est utilisé pour que le lecteur se repose quelques secondes:

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

Les options utilisées ci-dessus:

  • -r0: sans nouvelle tentative
  • -e +0: sortir à la première erreur
  • -T 1s: sortir avec 1 seconde d'échec en lecture
  • -d: E/S directe
  • -n: aucune éraflure

Vous pouvez utiliser -R après avoir terminé avec l'option -A une fois pour inverser et supprimer toutes les erreurs, puis recommencer à l'envers. Cela signifie qu'il lira les erreurs différemment.

2
Dealazer