Aller au contenu
Sylvain Joffraud l4w
Retour

ext4 64bit : pourquoi un kernel ancien refuse de monter

Pour migrer mon NAS Netgear (kernel RAIDiator 2.6.37) vers Debian 12, je crée un RAID 1 dégradé sur les disques SATA depuis mon laptop, formaté en ext4, et j’y déploie Debian via debootstrap. Tout se passe bien côté laptop.

Je remets le disque dans le NAS, j’arrive à booter en mode « Tech Support » (un BusyBox de récupération basé sur kernel 2.6.37). De là, je veux monter mon RAID dégradé pour copier les fichiers de boot vers le flash interne.

# mount /dev/md127 /tmp/dr
mount: mounting /dev/md127 on /tmp/dr failed: Invalid argument
# mount -t ext4 /dev/md127 /tmp/dr
mount: failed: Invalid argument
# mount -o ro /dev/md127 /tmp/dr
mount: failed: Input/output error

L’array RAID est bien assemblé (vu dans /proc/mdstat), mais le filesystem ext4 dessus est inaccessible. Sur le PC moderne, il se monte sans problème. Pourquoi pas ici ?

Vérification du filesystem côté PC avec file -s :

ext4 filesystem data ... (extents) (64bit) (large files) (huge files)

Le coupable : la feature 64bit d’ext4. Activée par défaut sur les mke2fs modernes (Debian 12 utilise 1.46.5+), elle change la structure des metadata pour permettre des filesystems > 16 To.

Le kernel 2.6.37 (2011) ne supporte pas la feature 64bit ext4 (introduite en kernel 3.7+). Il refuse de monter le filesystem entier.

Workarounds possibles :

  1. Recréer le filesystem sans la feature 64bit :

    mkfs.ext4 -O ^64bit -O ^huge_file /dev/md0

    Limite à 16 To max, mais largement suffisant pour la plupart des usages.

  2. Désactiver la feature après coup (risqué) :

    tune2fs -O ^64bit /dev/md0
    resize2fs -s /dev/md0

    Ne marche que si le filesystem n’a pas atteint 16 To et n’est pas monté.

  3. Utiliser ext3 ou ext2 pour des filesystems destinés à des hosts avec vieux kernels.

Dans mon cas, vu que le kernel 2.6.37 du Tech Menu était juste un environnement temporaire de récupération, j’ai contourné autrement : transfert via wget depuis un serveur HTTP local sur mon laptop.

Lessons learned


Partager cet article :

Article précédent
Recovery firmware NAS : forcé de booter sous Windows
Article suivant
Le service système qui sabote silencieusement votre install