Réparer une « journal commit I/O error » sur le Raspberry Pi

Réparer une « journal commit I/O error » sur le Raspberry Pi

FramboisesBidouiller un peu avec un Raspberry Pi peut amener parfois à le faire planter, surtout lorsqu’on essaie des choses à tâtons sans vraiment savoir si ce qui est mis en oeuvre va tenir. Parfois on y arrive et on est content, parfois on doit désinstaller ce qui a déjà été installé et remettre le système dans un état cohérent. Malheureusement, il m’est parfois arrivé de perdre le contrôle sur l’engin en faisant quelque manipulation nécessitant beaucoup de ressources et n’aboutissant jamais, ou alors après plusieurs jours de calcul. Dans cette situation, on est obligé d’envisager de retirer le l’alimentation et de tout remettre en marche. Et il y a des expériences plus ou moins chanceuses… en voici une malchanceuse.

La problématique

Il m’est arrivé récemment d’avoir à arrêter le Pi d’une manière qui n’est pas très recommandable, soit en lui coupant le courant, la console ne répondant plus via SSH. En le remettant en marche, j’avais quelques appréhensions sur sa capacité à tout remettre en ordre, mais visiblement tout se passait bien… ou presque. En coupant l’électricité durant l’installation (foireuse) d’une application, j’ai endommagé le système de fichiers, plus précisément le journal du système. En tentant de relancer l’installation, j’ai obtenu une très jolie erreur qui me tenait à peu près ce langage:

[52666.031183] journal commit I/O error

Malheureusement, après une erreur comme celle-ci, il s’avérait que le Raspberry Pi rentrait dans un état incohérent et me faisait perdre l’usage de nombreuses commandes système, dont la commande shutdown qui m’aurait permis de l’arrêter correctement. Fâcheux…

La solution

En recherchant un peu sur Internet une solution au problème que je rencontrais, je suis tombé sur l’article d’une personne qui avait rencontré le même problème mais sur un disque dur externe. Il apparaît que la solution trouvée par cette personne (et trop peu mise en avant à mon goût, d’où cet article) est extrêmement simple à appliquer même sur le disque du système. Voici ce que cela donne en pratique:

  • Si l’erreur se produit sur l’utilisation d’un disque externe, il suffit de le démonter et de le scanner à l’aide de l’utilitaire fdisk (on suppose ici que le volume est sous /dev/sdb1, utiliser la commande fdisk -l pour trouver l’emplacement de montage du volume):
# lister les disques et partitions du système
sudo umount /dev/sdb1

# lancer une analyse du disque
fsck /dev/sdb1
  • Si l’erreur se produit au niveau du système (comme cela a été mon cas), il faut redémarrer le Pi et planifier une vérification du système de fichier en vue d’une réparation:
# l'option 'r' demande le reboot et 'F' une vérification forcée
sudo shutdown -rF now

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.