Table des matières

, , ,

ddrescue

Traduction partielle de la documentation officielle de l'outil disponible sur https://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html

Concepts

Block: Quantité quelconque de données (séquence continue de données). Un block est caractérisé par une position de départ et une taille. La position de départ et la plus basse position dans le block. La fin du block correspond à la position de départ + sa taille.

Device: Périphérique, unité/pièce matérielle pouvant contenir des données. Disques-durs, lecteurs DVD/CD-Roms, clés USB sont des périphériques.

Sector: Secteur, c'est le bloc matériel. La plus petite quantité de données accessible sur le périphérique, c'est une caractéristique du périphérique (device).

Cluster: Groupe de secteurs consécutifs lus/écrits en une passe.

Partition: Un périphérique peut être divisé en zone logiques indépendantes, ce sont les partitions. Chaque partition contient un système de fichier.

File: Le fichier est une unité de données nommée. Il est stocké par le système d'exploitation afin d’être retrouvé plus tard via son nom.

Formats récupérables Comme ddrescue utilise les bibliothèques standards pour lire les données sur les périphériques seuls les périphériques montables peuvent être récupérés à l'aide de ddrescue. CD-Roms et DVD-Roms peuvent être récupérés mais pas les Compact Disc audio.

Domaine de restauration Bloc ou ensemble de blocs sur lesquels agir. On peut le définir à l'aide des options --input-position, --size et --domain-mapfile. Le domaine de restauration par défaut s’étend sur l'ensemble du fichier en entrée ou du mapfile. Si ddrescue ne peut déterminer la taille du fichier d' entrée le domaine de restauration est définit avec la taille maximale d'un bloc (2^63 -1 soit 8EiOctets - 1 Octet).

ddrescue n'essaiera pas de lire des données hors du domaine de restauration sauf lorsque l’accès direct non aligné est demandé.

La quantité de données restaurée, le nombre de secteurs corrompus etc peuvent variés ou meme devenir nuls dans le cas ou l'on limite le domaine de restauration. Pas d’inquiétude, ils n'ont pas disparus de la récupération mais sont simplement hors du domaine de restauration spécifié par l'utilisateur.

Utiliser ddrescue en toute sécurité

ddrescue ne diffère pas d'autres outils puissants. Vous avez besoin de comprendre ce qu'il fait et d'appréhender le fonctionnement de quelques éléments des machines afin de l'utiliser correctement et en toute sécurité.

Algorithme

GNU ddrescue n'est pas un dérivé de dd, il n'a pas a y être comparé si ce n'est qu'il peut être utilisé pour copier des données d'un périphérique à un autre. La différence majeure est que ddrescue utilise un algorithme sophistiqué pour copier des données contenu sur un disque défaillant en limitant au maximum les dommages/pertes des données.

L'utilitaire dd peut être utilisé pour sauvegarder les données d'un périphérique défaillant mais il lit séquentiellement les données, ce qui peut endommager le lecteur sans rien récupérer si les erreurs sont au début du disque.

D'autres programmes lisent séquentiellement les données mais basculent sur des tailles de lecture plus petites lorsque ils rencontrent des erreurs. C'est en général une mauvaise idée car cela conduit à passer plus de temps sur une zone défectueuse du disque, endommageant la surface, les têtes et la mécanique du disque au lieu d'essayer de récupérer les données le plus rapidement possible. Ce comportement réduit les chances de pouvoir récupérer les données saines restantes.

L'algorithme de ddrescue est le suivant (l'utilisateur peut interrompre le processus a tout instant mais doit être attentif au fait qu'un périphérique disque endommagé peut bloquer un moment ddrescue avant que le noyau ne rende la main):

  1. Optionnellement lecture du mapfile décrivant le statut d'une récupération multi-parties ou précédente. Si aucun mapfile n'est précisé, s'il est vide ou n'existe pas, tout le domaine de restauration est marqué comme non essayé non-tried.
  2. Première phase: la copie (en 5 passes). Lecture des parties non essayées (non-tried) du domaine de restauration dans le fichier d'entrée. Marque les blocs illisibles ou répondant trop lentement comme non-trimmed (non arrangé) et passe au delà en laissant un espace. Ces zones délaissées seront essayées plus tard avec 4 passes additionnelles avant abandon (triming), inversant le sens de lecture entre chaque passe jusqu'à ce que tout le domaine de restauration ait été essayé.
    La 2ieme passe délimite les blocs laissés par la première passe. Les passes 3 et 4 tentent de lire dans le même sens les zone délaissées car trop lentes. Pour chaque blocs, les passes 2 à 4 abandonnent le bloc dès la première erreur. La dernière passe est un passe de balayage avec abandon désactivé. L’intérêt des passes multiples est de déterminer de larges zones défectueuses rapidement, sauvegarder en premier les zones les plus prometteuses, garder le fichier map petit et produire un bon point de départ pour le trimming.
    Seulement les zones non-tried sont lues par blocs. Les étapes de trimming, scraping et retrying sont faites secteurs par secteurs. Chaque secteur est essayé au plus 2 fois. La première fois comme partie d'un bloc, la seconde en lecture du secteur seul.
  3. Deuxième phase: le trimming. Le trimming s'effectue en une passe. Pour chaque bloc marqué non-trimmed lecture par secteur de l’extrémité du bloc jusqu’à un secteur défaillant, marque le secteur comme mauvais bad et le reste du bloc non-scraped sans essayer de le lire.

Installation

Sur une debian like, le paquet à installer via apt est gddrescue :

sudo apt-get install gddrescue

La documentation complète est disponible au format info :

info ddrescue

Options/arguments usuels

Exemple

$ sudo ddrescue /dev/sda1 /data/recovery/sda1.img /data/recovery/journal-sda1.log

Cette commande permettra de cloner la partition /dev/sda1. Le travail de restauration se fera ensuite a partir du clone.

Références