Forum Linux.général comportement de BTRFS en cas de corruption détectée

Posté par  . Licence CC By‑SA.
Étiquettes :
4
6
juil.
2022

Bonjour,

J'ai des corruptions détectées par la commande scrub sur un volume composé de plusieurs disques en BTRFS/RAID1. scrub ne peut pas les corriger, sans doute parce qu'il détecte une erreur de "checksum" sur les deux exemplaires des blocs concernés et ne peut donc pas décider quel est le bon.

J'ai des sauvegardes dont une sur un autre ensemble de disques également en BTRFS/RAID1. Un scrub sur ce volume ne détecte aucune erreur. Je me demande cependant comment fonctionne BTRFS si on tente de copier (en l’occurrence via mon logiciel de backup, borg) des blocs en erreur non corrigeable : il "loggue" une erreur mais réalise quand même la copie avec le contenu d'un des deux blocs ou bien il refuse la copie ?

Parce que si c'est le premier cas, le fait que mon volume de sauvegarde soit ok ne veut rien dire, il est peut-être plein de blocs corrompus copiés en double à l'identique (c'est du RAID1).

  • # Si tu trouves ou pas

    Posté par  (site web personnel) . Évalué à 2.

    Bonjour,

    je n'ai rien pour t'aider ou t'orienter.

    Si tu trouves une solution ou une méthode, ou si tu ne trouves pas, un journal relatant tes expériences sur cete affaire serait bienvenue est utile pour les autres.

    Oui, tu as probablement d'autres préoccupations que d'écrire une saga.

    Bon courage

    Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

    • [^] # Re: Si tu trouves ou pas

      Posté par  . Évalué à 4.

      Merci.

      Bon, je n'étais pas vraiment inquiet pour mes données vu que j'ai une sauvegarde locale (borg) et une sauvegarde cloud (restic/wasabi), les deux sans purge du passé (no prune). By the way, avoir deux outils de sauvegarde différents augmente ma sérénité sur ce sujet.

      Ma préoccupation était de déterminer à partir de quel moment dans le passé mes données avaient été corrompues car, forcément, les sauvegardes postérieures l'auraient été sans que cela puisse être détecté par btrfs (dans l'hypothèse où il accepte de copier une des deux versions du bloc en erreur, la copie aurait son checksum recalculé).

      Et puis j'ai eu une intuition voulu faire une ultime vérification : j'ai arrêté puis redémarré mon PC et j'ai relancé un scrub… qui a trouvé des milliers d'erreurs… toutes corrigeables (ce qui signifie que l'autre version du bloc a un checksum correct) !

      Heureux mais perplexe, une fois le scrub fini je redémarre mon PC et relance à nouveau un scrub. Cette fois, plus d'erreurs du tout (j'ai recommencé la manip le lendemain, et à nouveau aujourd'hui, idem).

      Je n'ai pas vraiment d'explication.

      • [^] # Re: Si tu trouves ou pas

        Posté par  . Évalué à 2.

        Le problème s'est reproduit et cette fois j'ai avancé dans sa compréhension.

        En fait, j'ai interprété, à tort, les incorrectable errors de scrub comme le constat que les deux copies du bloc étaient en erreur ; en effet, si une des deux copies est ok, qu'est-ce qui empêcherait scrub de mettre à jour la mauvaise en recopiant la bonne ?

        Or il y a un cas où il ne peut pas le faire ; quand le disque concerné a des erreurs d'E/S. scrub essaie bien de mettre à jour la copie en erreur mais il n'y arrive pas alors il affiche le message incorrectable error qui ne traduit que l'impossibilité de corriger le mauvais bloc et pas nécessairement que les deux blocs sont mauvais.

        Je pense que j'ai un problème aléatoire (et rare) de contrôleur sata qui disparaît au redémarrage. Quand suite à celui-ci je lançe un scrub, il affiche des erreurs mais il peut cette fois les corriger.

        Pour identifier le disque qui pose problème dans un volume btrfs multi-devices, il suffit de faire :

        btrfs dev stats <volume btrfs>

        et bingo, il y a bien un des disques de mon volume qui a cumulé des erreurs dans le passé.

        Bref, btrfs n'est pas en cause, bien au contraire. Il lui manque juste un message d'erreur plus précis afin de discriminer les deux cas de figure : "une des copies est bonne mais je n'arrive pas à corriger la copie corrompue" et "toutes les copies sont corrompues".

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.