Que faire en cas de panne de disque dur
Que faire en cas de panne de disque dur ?
A propos de dmesg, mke2fs, Smartmontools, fsck, e2fsck, tune2fs...
par Jiel
Votre disque dur n'est pas visible, vous n'arrivez plus a écrire dessus, il ne se passe rien quand vous le branchez via USB, vous avez des erreurs d'entrée/sortie. Comment essayer de réparer le disque et de récupérer des données avant qu'il ne soit trop tard ? Cette documentation, essaie de synthétiser quelques pistes pour réagir à cette situation délicate.
Nous supposerons dans cette documentation que votre disque défectueux est /dev/sdb2 et qu'il est monté sur /mnt/mondisque (voir le paragraphe ci-dessous pour plus d'informations) en ext4.
Connaître le partitionnement
Pour pouvoir utiliser réparer et analyser un disque, il faut connaître un peu le partitionnement de votre disque. Sous Unix, chaque périphérique est un fichier qui se situe dans /dev. Pour y accéder, on le « monte » dans /mnt ou dans /media. Par exemple, votre disque défectueux est /dev/sdb2 et il est monté sur /mnt/mondisque. Commencez donc par regarder avec des outils graphique tels que GParted ou Diskdrake où est situé votre disque et quel système de fichier il utilise (ext3, ext4, ReiserFS ?), ou en console grâce aux commandes df
et fdisk -l
.
Obtenir des infos sur les périphériques
La commande dmesg
affiche la mémoire tampon de message du noyau, et permet de contrôler l'état du matériel. En effet, lors du chargement du noyau Linux (phase d'amorce/boot), chaque pilote essaie de détecter le matériel dont il s'occupe. De même lorsque que l'on branche un périphérique USB, les pilotes du noyau envoient des informations. dmesg
affiche donc les messages de diagnostic qui contiennent les caractéristiques de chaque périphérique, ce qui est très utile pour détecter des erreurs. La commande est très verbeuse, mais peut être pas mal utile.
La commande mke2fs -n /dev/sdb2
permet également d'avoir des informations sur notre périphérique, notamment les superblocs de secours :
[root@localhost mnt]# mke2fs -n /dev/sdb2 mke2fs 1.41.2 (02-Oct-2008) Étiquette de système de fichiers= Type de système d'exploitation : Linux Taille de bloc=4096 (log=2) Taille de fragment=4096 (log=2) 30531584 i-noeuds, 122096638 blocs 6104831 blocs (5.00%) réservés pour le super utilisateur Premier bloc de données=0 Nombre maximum de blocs du système de fichiers=0 3727 groupes de blocs 32768 blocs par groupe, 32768 fragments par groupe 8192 i-noeuds par groupe Superblocs de secours stockés sur les blocs :
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000
Smartmontools
Smartmontools est un programme permettant de contrôler l'état des disques durs en utilisant le protocole Self-Monitoring, Analysis and Reporting Technology (SMART). Il s'utilise en root ou via la commande sudo.
Il faut commencer par activer SMART sur le disque :
smartctl --saveauto=on --smart=on --offlineauto=on /dev/sdb2
Pour lancer un test court de l'état des disques, lancer :
smartctl -t short /dev/sdb2
Pour lancer un test plus approfondi, lancer :
smartctl -t long /dev/sdb2
Vous pouvez ensuite accéder au résultat du test avec la commande :
smartctl -l selftest /dev/sdb2
Enfin, pour voir les informations concernant le dique, tapez :
smartctl -a /dev/sdb2
fsck, e2fsck
fsck
est un programme en mode console, à lancer en root ou via la commande sudo. Il permet de contrôler les systèmes de fichiers, et si besoin, de les réparer. On l'utilise en postfixant la commande par le nom du système de fichier, par exemple fsck.ext4
, et fsck va chercher la commande nécessaire pour inspecter ce type de système de fichiers (ici e2fsck).
Une fois noté le nom de votre disque (ici /dev/sdb2), démontez le : umount /mnt/mondisque
et vous pouvez lancer fsck : fsck.ext4 /dev/sdb2
ou e2fsck /dev/sdb2
. L'i-noeud est un numéro par lequel est réprésenté chaque fichier dans le système, ne soyez donc pas surpris si vous voyez ce terme apparaître dans certaines questions.
Si votre disque est celui sur lequel est installé le système avec lequel vous lancez fsck, vous ne pouvez donc pas le démonter, donc pas effectuer ces opérations. Deux solutions s'offrent à vous : utiliser un live CD ou créer un fichier forcefsck
à la racine, et fsck sera lancé au prochain démarrage grâce au service /etc/init.d/checkfs.sh ou /etc/init.d/checkroot.sh
Lorsqu'on lance fsck sans options particulières, fsck demande pour chaque erreur si on veut la corriger ou pas. Pour répondre oui à toutes les questions, et ainsi corriger automatiquement toutes les erreurs, choisissez l'option -y : fsck.ext4 -y /dev/sdb2
.
L'option -b permet, lorsque le superbloc primaire a été corrompu, d'utiliser un autre superbloc pour vérifier le système de fichier. On trouve d'autres superblocs de sauvegardes en utilisant le programme mke2f
(voir ci-dessus). Voici un exemple d'utilisation de la commande fsck (e2fsck) ci-dessous :
[root@localhost mnt]# e2fsck -b 98304 /dev/sdb2
e2fsck 1.41.2 (02-Oct-2008)
L'i-noeud de changement de taille n'est pas valide. Recréer<o>? oui
Mon_Disque contient un système de fichiers comportant des erreurs, vérification forcée.
Passe 1 : vérification des i-noeuds, des blocs et des tailles
l'i-noeud racine n'est pas un répertoire. Effacer<o>? oui
Passe 2 : vérification de la structure des répertoires
l'entrée « Mes_Photos » dans ??? (9077920) a un i-noeud effacé/non utilisé 213005. Effacer<o>? oui
l'entrée « .. » dans ??? (29065217) a un i-noeud effacé/non utilisé 2. Effacer<o>? oui
l'entrée « Aqua_&_Safri_Duo_-_Eurovison_Danemark_2001.mpg » dans ??? (32934476) a un i-noeud effacé/non utilisé 425988. Effacer<o>? oui
Passe 3 : vérification de la connectivité des répertoires
l'i-noeud racine n'est pas alloué. Allouer<o>? oui
I-noeud 50561025 (...) de répertoire non connecté
Connecter à /lost+found<o>? oui
/lost+found n'a pas été trouvé. Créer<o>? oui
I-noeud 30769176 (...) de répertoire non connecté
Connecter à /lost+found<o>? oui
Passe 4 : vérification des compteurs de référence
le compteur de référence de l'i-noeud 29065217 est 7, devrait être 6. Corriger<o>? oui
le compteur de référence de l'i-noeud 30769176 est 5, devrait être 4. Corriger<o>? oui
le compteur de référence de l'i-noeud 37142529 est 13, devrait être 12. Corriger<o>? oui
Passe 5 : vérification de l'information du sommaire de groupe
différences de bitmap de blocs: -(1572--32767) -(34337--44859) -(81920--98303) -(100352--104447) -(105589--120831) -(126976--131071) -(131586--163839) -(165409--196607) -(197122--197123) -(197128--229375) -(230945--262143) -(262658--294911) -(296481--296483) -(296488--327679) -(328200--360447) -(360962--365805) -(393730--393735)
Corriger<o>? oui
Le décompte des blocs libres est erroné pour le groupe n°0 (65534, décompté=31196).
Corriger<o>? oui
Le décompte des blocs libres est erroné pour le groupe n°1 (20676, décompté=31199).
Corriger<o>? oui
Le décompte des blocs libres est erroné (15844613, décompté=17220567).
Corriger<o>? oui
différences de bitmap d'i-noeuds : -(16385--16388) -(32769--32785) -(49153--49154) -49157 -(49159--49163) -49165 -65537 -196609 -(212993--213005) -(393217--393222) -(425985--426016) -(557057--557060) -819201 -1081345
Corriger<o>? oui
A la fin de notre commande, nos données qui n'étaient pas corrompues sont toujours accessibles, mais les noms des répertoires et des fichiers peuvent avoir été modifiés.
[root@localhost mnt]# cd /mnt/mondique/
[root@localhost mondisque]# ls
lost+found/
[root@localhost mondisque1]# cd lost+found/
[root@localhost lost+found]# ls
- 29065217/ #30769176/ #37142529/ #39976961/ #50561025/ #54001665/ #54378497/ #58376198/
[root@localhost lost+found]# cd \#29065217/
[root@localhost #29065217]# ls
Photos_Suisse/ Photos_Québec/ Photos_Belgique/
La commande tune2fs permet de paramétrer l'exécution automatique d'un fsck sur des partitions ext2, ext3 ou ext4.
Par exemple, pour faire une vérification toutes les deux semaines :
tune2fs -i 2w /dev/sdb2
Faire une vérification tous les 40 montages :
tune2fs -c 40 /dev/sdb2
Conclusion
On a vu ici sommairement quelques outils pour essayer de récupérer les données sur un disque défaillant et contrôler le fonctionnement de ses disques. Sachez toutefois que la meilleure solution pour éviter ce genre de problèmes est de faire des sauvegardes régulières et d'utiliser des technologies de type RAID.
N'oubliez pas non plus que si vous avez des questions concernant un problème de disques, le forum Matériel de Léa est là pour vous.
Copyright
© 2010 Jiel Beaumadier
Vous avez l'autorisation de copier, distribuer et/ou modifier ce document suivant les termes de la GNU Free Documentation License, Version 1.2 ou n'importe quelle version ultérieure publiée par la Free Software Foundation; sans section invariante, sans page de garde, sans entête et sans page finale.