Cela aurait dû être une autre belle journée, mais tout n'était pas bien au paradis. Peu de choses apportent un sentiment de malheur rampant comme un ordinateur qui se verrouille et refuse de démarrer. Le cliquetis provenant de la tour n'est probablement pas un bon signe non plus. Ces sauvegardes sont à jour, non? Droite?

Il existe des légendes et des histoires anciennes sur la réparation des disques durs. L'un de mes favoris est la solution officielle à la stiction pour les vieux disques: frappez-la avec un maillet. Un autre truc que j'ai entendu à plusieurs reprises est de geler un disque dur avant d'essayer d'en lire les données. Cela pourrait en fait être utile dans quelques cas. Le changement de température peut aider à contrecarrer, et le gel du disque peut potentiellement aider un disque en surchauffe à durer un peu plus longtemps. L'inconvénient est le potentiel de condensation à l'intérieur du lecteur. Ne vous tournez pas vers l'une de ces corrections douteuses à moins d'avoir épuisé les options les plus sûres.

Aux fins de cet article, nous supposerons que le problème vient du disque dur et non d'un autre composant comme une alimentation ou un câble SATA qui pose problème. Un disque vraiment mort est un sujet pour une autre fois, mais si le disque est suffisamment vivant pour apparaître comme un périphérique bloc lorsqu'il est branché, il y a alors de l'espoir pour récupérer les données. L'un des câbles USB vers SATA disponible sur votre boutique en ligne préférée est un excellent moyen de récupérer des données. Une autre option consiste à démarrer un DVD Linux ou un lecteur flash et à accéder au lecteur en place. Si vous avez de la chance, vous pouvez simplement copier vos fichiers et l'appeler un jour. Si le transfert de fichiers échoue à cause du lecteur mourant, ou si vous avez besoin d’une image disque complète, il est temps de retirer certains outils et de vous mettre au travail.

Lorsqu'un disque dur se dégrade, certains secteurs peuvent devenir illisibles. C'est un processus attendu, et les disques modernes sont construits avec des secteurs de rechange pour repousser l'inévitable. Comme les secteurs commencent à devenir peu fiables, ils sont retirés et des secteurs de rechange sont utilisés à la place. Lorsque les secteurs de réserve ont disparu, le disque commence à accumuler des secteurs illisibles. Un secteur illisible au milieu d'un fichier va tuer un transfert de fichier, ou peut-être même rendre l'appareil démontable. L'ironie est que ce n'est généralement qu'un petit pourcentage du disque qui est illisible. Si seulement il y avait un moyen de gérer ces secteurs illisibles.

Se tourner vers DDRescue

Le sysadmin amateur a un outil puissant dans sa boîte à outils: ddrescue. C'est un descendant d'une sorte de vénérable dd outil de copie de disque, mais avec une différence importante. Quand dd rencontre une erreur de lecture, il arrête le transfert et affiche l'erreur. ddrescue prend note de l'erreur, laisse une tache vide dans le fichier de sortie et continue de transférer les données qu'il peut. Parce qu'il existe un enregistrement des morceaux manquants, nous pouvons continuer à essayer de lire les parties manquantes et peut-être récupérer plus de données.

Pour lancer ddrescue, nous lui donnons une entrée, une sortie et un mapfile.
ddrescue /dev/sda diskimage.img mapfile.log

Par défaut, ddrescue passe par trois phases de sauvetage. Tout d'abord, il copie un secteur à la fois jusqu'à ce qu'il rencontre une erreur. Pour un lecteur qui fonctionne parfaitement, cette opération se termine sans problème et le lecteur entier est copié. Si un secteur ne peut pas être copié, ou est même particulièrement lent à répondre, ddrescue saute en avant, espérons-le au-delà du problème.

La deuxième phase est le rognage. Pour le dire simplement, ddrescue commence à la fin de chaque section ignorée et fonctionne en arrière jusqu'à ce qu'il atteigne un mauvais secteur. Le but est de récupérer la plus grande quantité de données le plus rapidement possible, et d'établir exactement quels secteurs sont problématiques. La dernière phase est le grattage, où chaque secteur non lu est examiné individuellement, en essayant de lire les données contenues. Chaque fois qu'un secteur est lu, le fichier map est modifié pour garder une trace.

Un secteur peut ne pas réussir à lire 15 fois de suite, et à la 16e tentative, enfin lire avec succès. À cause de ce, ddrescue prend en charge plusieurs passes de raclage dans des directions alternées. Une partie de la théorie est que l'alignement de la tête de lecture peut être légèrement différent lors de l'approche du secteur à partir d'un emplacement différent, et cette différence peut être suffisante pour enfin obtenir une lecture réussie.

Quand ce n'est pas si simple

Bien que le fonctionnement idéal de ddrescue soit assez simple, il existe certains problèmes potentiels à prendre en compte. Le premier est la chaleur. Le processus consistant à essayer de récupérer des données à partir d'un lecteur déjà mourant peut rapidement le surchauffer et rendre les lectures supplémentaires impossibles. La solution la meilleure et la plus simple est un ventilateur soufflant de l'air frais sur le variateur. L'autre problème courant que j'ai rencontré est un peu plus difficile à expliquer, mais il est identifié par un message d'erreur spécifique: ddrescue: Input file disappeared: No such file or directory. Lorsque vous tentez de lire à partir du lecteur, quelque chose s'est mal passé suffisamment pour que le lecteur ait disparu du système. Ma théorie dans ce cas est que le firmware du lecteur lui-même est tombé en panne et s'est arrêté. Quoi qu'il en soit, la mise hors tension et la remise sous tension du disque sont généralement suffisantes pour se remettre au travail.

Cela aurait pu mieux fonctionner.

Cela signifie que pour un lecteur particulièrement têtu, le processus de récupération de bits ressemble beaucoup à un baby-sitting. Redémarrez le disque une fois qu'il se bloque et redémarrez ddrescue – Encore et encore. Étant donné que la lecture échoue à la suite de l'accident, ce secteur est marqué comme mauvais et la tentative de sauvetage le dépasse. Les secteurs en bon état peuvent ne pas déclencher le crash, donc certaines données sont lues.

Si vous pensez que passer des heures à redémarrer un disque dur n’est pas une tâche amusante et doit être automatisé, alors vous avez raison. Il est assez facile d’envelopper notre ddrescue commande en boucle, idéalement avec cinq secondes de sommeil. Cela gère la moitié du problème, mais le redémarrage du lecteur n'est pas un problème logiciel. J'ai utilisé dans le passé la queue de l'interrupteur d'alimentation d'Adafruit, connectée à une broche GPIO du Raspberry Pi, pour couper l'alimentation du disque toutes les 30 secondes. Ce n’est pas idéal, mais ça marche. Malheureusement, cet appareil n'est plus disponible et je ne connais pas de remplacement direct.

La dernière fois que j'ai rencontré ce problème, j'ai utilisé un interrupteur d'alimentation WiFi, illustré ci-dessus. Chaque fois que le périphérique disparaissait, le script déclenchait la prise pour redémarrer le variateur. Cela a fonctionné, et sur un disque de 500 Go, j'ai récupéré tout sauf les 1,5 derniers Mo. Le seul inconvénient est que la prise intelligente ne fonctionne que via le cloud, donc chaque cycle d'alimentation nécessitait une demande envoyée au cloud IFTTT. Laisser le disque dur pendant la nuit a entraîné trop de demandes et mon compte a été bloqué. La prochaine fois, je vais devoir utiliser un appareil qui prend en charge l'un des firmwares open source, comme Tasmota. Quoi qu'il en soit, le script est simple:

while true; do
    sudo ddrescue /dev/sda diskimage.img mapfile.log
    if [ -a /dev/sdc ]; then
        sudo ddrescue /dev/sda diskimage.img mapfile.log -M
    else
        curl -X POST https://maker.ifttt.com/trigger/switch_off/with/key/REDACTED
        sleep 10
        curl -X POST https://maker.ifttt.com/trigger/switch_on/with/key/REDACTED
        sleep 10
    fi
done

Si l'appareil disparaît, utilisez l'interrupteur pour redémarrer le variateur. Si ddrescue se termine et que le périphérique est toujours présent, utilisez le -M passer pour marquer tous les secteurs défectueux comme non testés.

Dans de nombreux cas, ce n'est pas un processus qui se termine vraiment, mais le taux de récupération tombe finalement trop bas pour mériter d'être poursuivi. Une fois que vous avez copié autant de données brutes du disque que possible, c'est une bonne idée d'utiliser fsck/chkdsk pour réparer le système de fichiers maintenant sauvé. S'il s'agit d'un lecteur système, après l'avoir gravé sur un nouveau disque, vous souhaiterez utiliser les outils de votre système d'exploitation pour vérifier les fichiers système. Pour Windows, j’ai eu beaucoup de succès avec SFC et DISM. Sous Linux, utilisez le gestionnaire de packages de votre système pour vérifier vos packages installés. Sur un système Fedora / Red Hat, rpm -Va affichera tous les fichiers binaires installés dont le contenu est inattendu.

Au fil des ans, j'ai sauvé une poignée de disques avec ddrescue, que les autres techniques ne toucheraient tout simplement pas. Il est vrai qu'une bonne sauvegarde est la solution idéale, mais si vous vous trouvez dans une situation où vous avez vraiment besoin de récupérer des données sur un lecteur mourant, ddrescue pourrait bien être votre grâce salvatrice. Bonne chance!

Image de la bannière: «Shiny» par Nick Perla, BY-ND

LAISSER UN COMMENTAIRE

Rédigez votre commentaire !
Entrez votre nom ici