Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
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.

Cette documentation concerne les cas où il est encore possible d'accéder à /dev/sdb2, pas les cas où le périphérique ne répond plus du tout.

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/mondisque/
[root@localhost mondisque]# ls
lost+found/
[root@localhost mondisque1]# cd lost+found/
[root@localhost lost+found]# ls

  1. 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.



@ Retour à la rubrique Matériel

Copyright

© 2010 Jiel Beaumadier

Tête de GNU 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. Pour plus d'informations consulter le site de l'APRIL.
Affichages
Outils personnels

Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons CC-BY-SA