Journal Politique du maintien des blocs et évolution du RAID

Posté par  . Licence CC By‑SA.
24
23
oct.
2026

Sommaire

Cher Journal,

Au milieu des avalanches de logiciels à patcher, de mauvaises nouvelles en tout genre et climat légèrement sous tension, j'ai décidé (malgré moi en réalité) de reprendre le contrôle et de devoir réparer un service que j'avais moi même cassé, plutôt que de subir des évènements extérieurs en permanence. C'était une expérience assez intéressante pour moi et je vais donc te la raconter.

Comme toutes les certaines bonnes histoires, l'origine vient de loin. J'ai depuis 2008 un ordinateur qui sert de NAS, avec quatre disques durs. Le matériel a changé depuis, les disques durs ont été progressivement remplacés (plusieurs fois), le système a été complètement réinstallé (sur une autre architecture CPU), mais la grappe RAID est restée au niveau logiciel la même, évoluant au fur et à mesure.

La panne

En 2026, j'ai donc un système RAID 5 logiciel (avec mdadm) de quatre disques (pouvant donc perdre un disque sans tomber en panne) qui date de 2008. Le système de fichier manque également de modernité, avec du EXT3 de l'époque. Je décide de mettre à jour de Debian Bookworm vers Debian Trixie ce beau système (oui, il a été oublié, et j'avais une demi-heure de libre). La mise à jour semble bien se passer, jusqu'au redémarrage : le NAS ne revient pas sur le réseau.

Intrigué je ressors un écran compatible VGA (et oui…) un clavier (l'USB marche, même pas besoin d'aller chercher un PS/2 à la cave) et je regarde ce qui se passe.

Je découvre alors que l'initrd démarre bien, mais ne trouve aucun des systèmes de fichiers qu'il doit monter. Ni le /, ni la partition /home. En regardant dans /proc/mdstat, le noyau n'a trouvé qu'un seul volume RAID (contre deux normalement, un système et un donnée) et ce volume est calculé sur l'intégralité des disques (normalement pourtant sur des partitions séparées). De plus, comme le RAID a été trouvé sur l'intégralité du disque, les partitions ne sont pas visibles dans /dev.

Je trouve cela curieux. Je me dis que c'est un reliquat de configuration d'un temps ancien, et sans trop réfléchir j'écrase les superblocks avec un bon mdadm --zero-superblock /dev/sda (et pareil pour les disques b/c/d). Je me dis qu'il n'y a aucun risque, mes superblocks à moi sont sur les partitions. J'efface donc tout, et je redémarre le système pour un démarrage propre.

C'est quoi un superblock

C'est le moment ou l'histoire a besoin d'un petit détour. Pour savoir comment réassembler les blocs de différents disques et ordonner les données correctement, mdadm qui contrôle le RAID va écrire des métadonnées sur le disque. Ces métadonnées sont critiques : elles contiennent la position du disque sur la grappe (oui c'est important), la taille du fragment (chunk), l'algorithme utilisé pour la répartition des données, et probablement d'autres. J'ai lu qu'ils pouvaient contenir pour les récents des listes de blocs défectueux sur le disque.

Sans ces superblocks, la donnée est toujours présente. Mais pour y accéder, il faut reconstruire à la main exactement la bonne configuration qui permet de lire ces données. Le format des superblocks a évolué avec le temps. Ce qui est important de retenir, c'est que ces superblocks étaient il y a longtemps stockés à la fin de l'équipement, et sur des systèmes moins vieux au début. La documentation notamment signale que stocker à la fin de la partition n'était pas une bonne idée :

Putting the superblock at the end of the device is dangerous if you have any kind of auto-mounting/auto-detection/auto-activation of the raid contents; in some circumstances (in the case of blkid: if the superblock is damaged) the raid components could be detected as a valid filesystem (or other format) which may contain outdated data. This will desynchronise the array and compromise the data

Fin de la petite parenthèse, revenons au récit.

Le redémarrage

Je suis très fier, le système démarre correctement. Je vois les lignes habituelles d'un Linux qui démarre. Jusqu'au moment ou il s'arrête, indiquant ne pas trouver la partition /home. Je ne suis pas inquiet, il a démarré, il doit manquer un petit morceau.

De fil en aiguille je comprends cependant que l'effacement des superblocks a en fait effacé les blocs des partitions de données. C'est « logique », ils sont situés en fin de la dernière partition, donc en fin de disque. Mon vieux RAID utilisait toujours de format 0.9, dangereux, et j'ai donc fait une grosse bêtise.

C'est là ou commence du coup un jeu « amusant ». Je peux retrouver les données à condition de recréer la grappe avec exactement les mêmes options :
- Le même ordre sur les disques (il y en a quatre, soit 24 combinaisons possibles)
- Les mêmes options, notamment la taille des chunks

L'idée est donc de tenter les différentes options en disant à mdadm « si si c'est bien ça » (option --assume-clean). Tenter de monter le système de fichier, et voir si quelque chose de cohérent comme donnée sort.

Je dois vous avouer à ce moment là n'avoir aucune idée de comment retrouver ça. Pour l'ordre des disques, comme le système a démarré, j'ai retrouvé les informations dans les logs noyaux de précédent démarrage réussis (avec un correspondance entre les noms dans /dev et la position dans la grappe. Mais les noms /dev peuvent changer, il a fallu chercher les numéros de séries avec). Cela m'a épargné bien de la peine. Cependant, avec des tailles de chunk par défaut (de 2026) j'avais un système de fichier « bizarre » : bien reconnu comme du ext3, les informations semblaient bonnes, mais impossible de le monter et e2fsck criait très fort. J'ai réussi à trouver sur Internet qu'en 2008 la taille par défaut des chunks étaient de 64KB (et je ne suis pas du genre à changer les options par défaut). J'ai mis l'option sur mon mdadm de 2026 pour forcer à 64KB, et j'ai retrouvé un système environ correct.

Comme je n'avais pas toujours mis l'option --read-only sur l'intégralité de mes tentatives (apparemment, je pensais que si), j'ai cependant endommagé quelques parties (je n'ai pas encore fait l'étude réelle de l'impact, mais il semble limité).

La morale

Je n'ai pas cherché exactement ce qui a changé entre Bookworm et Trixie, mais donc je me suis fait avoir par les superblocks en fin de partition qui ont été considérés comme en fin de disque, construisant une grappe invalide. Ces vielles métadonnées, au format obsolète mais parfaitement fonctionnel, ont été à l'origine des ennuis. Ensuite des manipulations peu prudentes (je ne manipule pas non plus du RAID tous les matins) ont conduit à un état chaotique.

La réparation (avant de tenter d'aller chercher les sauvegardes) a été laborieuse mais intéressante. Je n'avais jamais lancé la grande majorité des commandes que j'ai tenté sur mdadm pour comprendre mon problème. Sachez également qu'il n'est pas forcément facile en 2026 de trouver des informations sur les valeurs par défaut d'un logiciel en 2008. Il y a eu beaucoup de essais-erreurs.

J'ai copié en tout cas toutes les données « ailleurs » et je suis actuellement en train de reconstruire une grappe RAID toute neuve, avec un système de fichiers moderne, et je note dans ma tête de ne pas laisser la prochaine grappe atteindre l'âge adulte avant de la reconstruire.

  • # C'est quoi "moderne"

    Posté par  . Évalué à 4 (+3/-0).

    C'est toujours intéressant de lire les mésaventures des autres, on se sent moins idiot en repensant aux notres!
    Mais c'est quoi pou toi un système de fichier "moderne" ?

    • [^] # Re: C'est quoi "moderne"

      Posté par  (site web personnel) . Évalué à 7 (+7/-2).

      Mais c'est quoi pou toi un système de fichier "moderne" ?

      un qui ne voit pas le RAID débarquer chez toi pour récupérer ta clé de chiffrement ?

      • [^] # Re: C'est quoi "moderne"

        Posté par  (Mastodon) . Évalué à 3 (+1/-1).

        le RAID débarquer chez toi

        "RAID", "le RAID"… je l'aie !

        En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: C'est quoi "moderne"

          Posté par  . Évalué à 5 (+2/-0).

          Il faut aussi maintenir les blocs dans le bon ordre, sinon ça marche moins bien. Pour ça il faut parfois employer des moyens coercitifs avec les bits !

    • [^] # Re: C'est quoi "moderne"

      Posté par  . Évalué à 4 (+2/-0).

      Je pense avoir la définition de "moderne" c'est « moins de la moitié de mon âge » (et récent, moins d'un quart ?).

      Avec cette définition EXT4 ça passe (tout juste). Après, EXT4 en 2026, ce n'est plus la même chose qu'un EXT4 créé avant. Voici les fonctionnalités d'un système de fichier créé en 2014 que j'avais sous la main :

      $ sudo tune2fs -l /dev/xvda1 |grep fea
      Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent sparse_super large_file uninit_bg
      

      Et sur un système de fichier de la journée, depuis une Debian stable :

      Filesystem features:      has_journal ext_attr resize_inode dir_index orphan_file filetype extent 64bit flex_bg metadata_csum_seed sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
      

      Nous avons d'ailleurs essayé d'harmoniser ces fonctionnalités un jour au travail, entre des systèmes de fichiers générés à des époques différentes. Cela a généré divers bugs noyaux assez désagréables.

  • # backup

    Posté par  . Évalué à 7 (+5/-0).

    Hello, juste je remet une couche avec le plus de bienveillance possible.m, Le raid, ceph, zfs, btrfs, drbd c'est top. Mais ça n'empêche rien. Faire des backup hors site , (cloud, nas d'un copain, disque dur externe, son pc dans une autre piece. Chez moi le nas est dans le garage avec la box et mon pc dans la maison à l'étage.) est une nécessité pour ne pas perdre des données.

    • [^] # Re: backup

      Posté par  (site web personnel, Mastodon) . Évalué à 5 (+3/-0).

      je l'ai appris à mes dépens, moi aussi j'avais un système RAID 5 qui avait toute ma confiance, j'ai eu une panne bas bruit qui a conduit à une perte de données et à la synchronisation de la sauvegarde qui a supprimé les données correspondantes, conséquence de cela perte sèche de données, j'avais raconté ma mésaventure dans ce journal.
      Du coup j'ai blindé les backups avec une double sauvegarde locale et une sauvegarde dans le cloud (plus d'info là https://funix.org/fr/linux/index.php?ref=sauvegarde)

      https://www.funix.org mettez un manchot dans votre PC

    • [^] # Re: backup

      Posté par  . Évalué à 5 (+3/-0).

      Je n'ai pas abordé le sujet en effet, mais il était plus simple de réparer ce raid que de restaurer les backups (et probablement plus amusant).

      Je vais cependant le faire à froid, pour notamment regarder les éventuels dégâts sur les fichiers.

      Plus de 50% des données de ce NAS sont des backups, d'autres systèmes.

      • [^] # Re: backup

        Posté par  (site web personnel) . Évalué à 3 (+0/-0).

        Est ce qu il est possible en raid soft de changer un disque et il reconstruit tout seul comme un raid hardware ?

        Dans mon souvenir, c'etait trés manuel.

        "La première sécurité est la liberté"

        • [^] # Re: backup

          Posté par  . Évalué à 3 (+1/-0).

          Oui, c'est très facile et deux ou trois commandes de mdadm (supprimer un disque, en remettre un, et suivre la progression via /proc/mdstat).

          Je n'ai cependant jamais utilisé de RAID hardware pour comparer, j'ai toujours évité ces solutions qui enferment dans un contrôleur.

          • [^] # Re: backup

            Posté par  (site web personnel) . Évalué à 3 (+0/-0).

            C est vrai. En mco chez Thales, c'etait 15 min montre en main pour remplacer un disque en faute sur du HW. Il fallait 1 demi journé pour du raid soft : le layout du disque est perdu, il est heteroclite,etc…

            Bref, 2 ou 3 commandes est très manuel et pas du tout automatiques. A prioris, btrfs c'est encore pire, :/

            "La première sécurité est la liberté"

Envoyer un commentaire

Suivre le flux des commentaires

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