Aller au contenu
Sylvain Joffraud l4w
Retour

Adaptateur USB-SATA bon marché : l’écriture ment

Pour diagnostiquer un disque NAS dont je n’arrive pas à booter, je le sors et le branche sur mon PC via un adaptateur USB-SATA générique acheté à 12 €. Sur le PC, le disque s’auto-assemble en RAID dégradé (md126 = sda2 du NAS), je peux mounter en read-only, lire les fichiers : tout semble parfait.

Puis je tente de mounter en read-write pour fixer la config GRUB :

$ sudo mdadm --readwrite /dev/md126
mdadm: failed to set writable for /dev/md126: Device or resource busy
$ sudo mount /dev/md126 /mnt/nas-root
mount: /mnt/nas-root: impossible de lire le superbloc à l'adresse /dev/md126.

Et dans dmesg :

md: super_written gets error=-5
Buffer I/O error on dev md126, logical block 0, async page read
EXT4-fs (md126): unable to read superblock

Le superblock devient illisible après la tentative d’écriture. Avant l’écriture, tout marchait.

Diagnostic

Hypothèse 1 : disque physique défectueux (secteur 0 cassé). Test :

$ sudo dd if=/dev/sdb of=/dev/null bs=1M count=100
100+0 records in
112 MB/s

✓ La lecture brute du disque marche à plein régime, pas de bad sector signalé.

Hypothèse 2 : l’adaptateur USB-SATA simule l’écriture sans la propager. Test :

$ sudo dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=999999 conv=notrunc
$ sudo dd if=/dev/sdb skip=999999 bs=512 count=1 | xxd | head
00000000: 0102 ... (= ce qu'il y avait avant, pas du \0)

❌ L’adaptateur acquitte l’écriture mais ne la propage pas au disque. Sur certaines zones du disque, ou via certaines paths d’I/O (mdadm superblock update notamment), les écritures sont silencieusement perdues.

C’est un comportement classique des chips JMicron / ASMedia / Realtek bas de gamme : ils gèrent mal les commandes ATA non-standard et préfèrent acquitter pour éviter les timeouts.

Workaround

sudo mdadm --stop /dev/md126
sudo mdadm --assemble --readonly /dev/md126 /dev/sdb2
sudo mount -o ro,noload /dev/md126 /mnt/nas-root

Avec --readonly et noload, mdadm et ext4 ne touchent jamais le disque en écriture. Lecture parfaite.

Pour les modifications, préparer un script et l’appliquer sur le NAS lui-même (SATA natif, pas USB).

Lessons learned


Partager cet article :

Article précédent
Clé USB de boot quand le bootloader natif refuse
Article suivant
Pousser un binaire en série vers BusyBox, sans réseau