Reparacion del sistema de fichero (ext2 et ext3)

Réparation du système de fichier (ext2 et ext3)


Durante el arranque, despues des un parado brutal des sistema, un mensaje le informa que una (ou varias) particiones no han sido paradas limpiamente

Lors du démarrage, après un arrêt brutal du système, un message vous informe que une (ou plusieurs) partitions n'ont pas été démontées proprement et qu'un check forcé est effectué (pour les utilisateurs de Windows, ça peut faire penser à un scandisk en mode texte).

Normalement, tout se passe bien et les conséquences sont juste une perte de temps. N.B. Pour éviter ces inconvénients, l'utilisation de systèmes de fichiers journalisés (ext3, reiserfs,...) est une bonne idée.

Mais parfois, le systèmes de fichier d'une (ou plusieurs) partition est trop endommagé pour pouvoir être monté (vous aurez un message d'erreur du style "Too many filesystems mounted " --> Trop de systemes de fichiers montés" ou "Can't read superblock" --> "Impossible de lire le superbloc"

Les conséquences sont évidentes: vous ne pouvez plus monter la (ou les ) partition endommagée et vous ne pouvez donc plus lire, écrire, sauvegarder les données et programmes qui y sont.

Parfois même, c'est la partition racine (ou une partition indispensable au démarrage) qui est endommagée et dans ce cas-là c'est pire puisque le système ne peut même plus démarrer, même pas en mode failsafe...

Bref, vous êtes pas mal embêté :-( Je suis bien placé pour le savoir, je suis passé par là moi aussi.

Je vais donc vous indiquer les manoeuvres que j'ai utilisées: avec un peu de chance, elles fonctionneront chez vous et il y aura plus de peur que de mal (je vous rappelle que c'est sur un système de fichier ext2fs ou ext3fs). N'oubliez tout de même pas qu'il est prudent de faire des sauvegardes régulières de vos données (vous en faites, n'est-ce pas?) et que je ne vous garantis rien du tout, à part que sur mon PC, ça a toujours fonctionné et que je n'ai jamais perdu ni données, ni programmes.


  1. Avec quel système allez-vous intervenir?


  1. Comment procéder?


    Très bonne question! Vous allez utiliser (en tant que root) la commande e2fsck sur la partition concernée. Vérifiez bien qu'elle n'est pas montée (oui, je sais, ce n'est pas drôle...) avec la commande mount ou df. Supposons que c'est la partion /dev/hdb6 qu'il faut réparer. Vous taperez alors: e2fsck /dev/hdb6

    (peu importe si c'est du ext2fs ou du extfs, vu que c'est pratiquement la même chose). Le programme vous demandera surement de confirmer chaque action (le choix par défaut étant "yes" (Y/n), il suffit d'appuyer sur la touche "Entrée". Comme ça peut être fastidieux et très long, vous pouvez rajouter l'option -y qui répond "Yes" à toutes les questions:

    e2fsck -y /dev/hdb6

    Petit rappel: pour interrompre le check, il faut faire CTRL + C

    Souvent, ça se passe bien ;-)

    Mais parfois, ça se passe mal :'-(

    Le programme vous informe qu'il ne peut pas réparer, car il ne peut pas lire ce qu'on appelle le superbloc qui contient des informations vitales sur le système de fichier. Le superbloc est abimé et donc e2fsck ne peut plus rien faire pour votre système de fichier. Heureusement, des copies du superbloc sont réparties sur le système de fichier (vous avez eu peur, hein?). Il vous faudra les indiquer à e2fsck car il ne peut pas les trouver automatiquement. Étant organisés par groupes de blocs de 8192 blocs (par défaut), il vous faudra lancer la commande e2fsck en lui spécifiant de ne pas utiliser le premier superbloc qui se trouve au bloc 1 puisque celui-ci est abimé, mais d'utiliser le suivant qui se trouve au bloc 1+8192=8193.

    On lancera donc la commande:

    e2fsck -f -b 8193 /dev/hdb6

  1. Un message d'erreur Dans ce cas, il faut essayer le superbloc suivant 1+8192=8193 et ainsi de suite, la formule étant 1+n.8192 (ou alors changer la taille du groupe de blocs: voir plus bas)

  2. Ça marche! Des messages "Pass1... Pass2..." s'affichent. Là aussi, si vous voulez répondre "Yes" à toutes les questions, rajoutez l'option -y:

    e2fsck -f -y -b 8193 /dev/hdb6


  1. Quelle taille de superbloc utiliser?

    "Qu'est-ce que c'est que ce truc?" pensez-vous.

    En fait, il y a de fortes chances (si on peut dire) que ça ne marche pas avec les blocs 8193, 16385,... mais avec le bloc 32769. En effet, 8192 est la valeur par défaut, mais ce n'est pas obligatoirement celle de VOTRE système de fichier. Il me semble qu'habituellement, c'est plutôt le quadruple, c'est-à-dire 32768. Vous pouvez le vérifier avec le programme dumpe2fs /dev/hdb6 qui vous affichera des informations sur le système de fichier. Cherchez une ligne qui commence par "Blocks per group": vous y trouverez la valeur qu'il vous faut... sauf que ça ne fonctionnera pas si le premier superbloc est abimé (décidément, ce n'est pas votre jour de chance!) Donc,

En supposant que la valeur est bien 32768, vous essayerez avec 32799

    e2fsck -f -y -b 32799 /dev/hdb6

    Si ça ne marche pas, vous essayerez avec 1+n.32768

    Avec un peu de chance, vous vous en sortirez avec une belle frayeur et une histoire fantastique à raconter à vos petits enfants... Dernièrement, il m'a fallu essayer le quatrième superbloc avant de réussir: les trois premiers étaient abimés.

    Bon courage.


Parfois, il y a des problèmes avec ext3fs lorsque le journal est abimé. Quel est le rôle de ce journal? Il sert notamment à éviter le check au démarrage après un arrêt brutal et donc un démarrage plus rapide. J'ai eu une fois un problème au démarrage, car bien qu'ayant suivi la procédure décrite au-dessus, mon système se bloquait pendant le démarrage. J'avais un "kernel panic" à cause d'un "Ext3-fs: invalide journal inode. Mount: error 22 mounting ext3 flags kernel panic: No init found. Try passing init=option to kernel"




(A FINIR) désolé;-)