Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Journal : Interrogation à propos d'une carte compact flash

Posté par ahuillet (page perso, ) le 14 mars 2008
Bonjour,

j'ai observé récemment un comportement bizarre d'une carte compact flash et j'hésite à la déclarer hors service.

Ma soekris net4801 a depuis deux ans une carte 128Mo avec un système en cramfs. Récemment j'en ai eu marre de pas pouvoir écrire / (cramfs est lecture seule), et j'ai acheté une carte 4Go, pour y stocker le système en ext3 et éventuellement mes données personnelles (mails notamment).

Bref, j'ai donc partitionné cette carte, transféré le système dessus, fait quelques mises à jour... et testé.
Le système a été transféré via cp -a, c'est un système qui marche, donc les problèmes que je décris plus bas ne sont pas software.

Premier problème, le prompt ne m'affichait pas dans quel répertoire je me trouvais, pwd non plus :

root@Alia:# cd /usr/include/
root@Alia:# pwd

root@Alia:#


C'est déjà très inquiétant me direz-vous... après deux heures d'utilisation, la soekris se bloque complètement avec la LED "disk" allumée, je redémarre, la carte est illisible (kernel panic parce que la partition / ne ressemble plus à rien).

Cette fois-ci donc je re-fais mke2fs avec un test complet lecture/écriture, et aucun problème n'est trouvé, je transfère donc le système à nouveau.

Le problème de pwd est réglé. Mais ssh segfaulte dès que j'essaie de m'en servir.
Je réinstalle OpenSSH, ca remarche. Et deux heures plus tard plusieurs fichiers dans /lib deviennent totalement illisibles.

Quelques-uns de mes messages d'erreur si quelqu'un arrive à y comprendre quelque chose :


EXT2-fs error (device hda3): ext2_new_block: Allocating block in system zone - block = 212993

/usr/bin/perl5.8.8: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: Input/output error


EXT2-fs error (device hda3): ext2_check_page: bad entry in directory #24281: unaligned directory entry - offset=0, inode=786432, rec_len=513, name_len=46


Bref, ma grande question est, "est-ce que ma carte est morte" ? J'ai envie de dire oui mais elle est neuve et *parfaitement* lisible pendant une à trois heures, et je trouve ca assez bizarre.

Merci de votre aide :)

> Lire le journal (21 commentaires, moyenne: 2,2).  

Vous avez demandé le commentaire #913724.

Quelques pistes

Posté par Sébastien Koechlin () le 14/03/2008 à 13:59. (lien). Évalué à 4.

Je vois trois causes possibles :

-1- La carte ne supporte pas correctement le mode de fonctionnement imposé par le contrôleur IDE. C'est très souvent le cas pour les vieilles cartes Compact Flash que j'ai vu (Je n'ai jamais utilisé une carte moderne).
La norme ATA est implémentée de façon un peu légère; et bien que la carte annonce supporter certains mode; dans la réalité, ça se traduit par des erreurs, et parfois par des pertes de données. Le DMA est particulièrement sensible; mais même en ayant tout désactivé, j'ai encore des erreurs sans gravité sur certaines cartes.

-2- La carte a des problèmes. Un défaut de fabrication fait qu'une partie des secteurs ne fonctionne pas. Ce problème est difficile à diagnostiquer parce que:
- Les cartes CF ne supportent quasiment jamais SMART.
- La carte possède en réalité plus de secteurs que le nombre annoncé et fait en permanence du remappage pour distribuer les écritures; donc un secteur qui était défectueux et illisible redevient correct lors d'une ré-écriture.

-3- Le contrôleur a un bug qui se déclenche maintenant avec la nouvelle carte, je vois plus haut que le flashage du BIOS a déjà été envisagé.

Une remarque maintenant. Sur les systèmes à mémoire statique qui ne supportent pas un trop grand nombre d'écriture, on évite généralement d'utiliser un système de fichier journalisé, et on monte les FS en mode noatime pour réduire encore les écritures. Dans un système journalisé, on touche en permanence au journal sur le disque; conduisant à un grand nombre d'écritures.

Comme dit plus haut, la carte a plus de secteurs que le nombre annoncé et déplace continuellement les blocs lors des écritures pour répartir les écritures sur un maximum de secteurs; mais ça ne fait que retarder le problème
- cette répartition a des limites, surtout si le système de fichier est bien plein.
- la détection et le banissement des cellules effectivement mortes n'est pas forcément optimal; ou fait correctement.
- vu les marges sur ces produits, j'imagine qu'il y a des fabricants de mémoire qui n'hésitent pas à supprimer ce mécanisme ou à le réduire a sa plus simple expression.

  • [^]Re: Quelques pistes

    Posté par ahuillet (page perso, ) le 14/03/2008 à 14:09. (lien). Évalué à 1.

    Une remarque maintenant. Sur les systèmes à mémoire statique qui ne supportent pas un trop grand nombre d'écriture, on évite généralement d'utiliser un système de fichier journalisé, et on monte les FS en mode noatime pour réduire encore les écritures. Dans un système journalisé, on touche en permanence au journal sur le disque; conduisant à un grand nombre d'écritures.

    Oui, je dis ext3 mais c'est évidemment du ext2, qui est évidemment monté en noatime :)
    / sera monté en lecture seule de toute facon, sauf lorsque j'ai une mise à jour à faire.
    (Avec cramfs j'étais obligé de sortir la carte, mettre à jour dans un chroot, recréer l'image et flasher.)

    Merci pour tes suggestions, j'espère que ide=nodma et le nouveau BIOS vont régler ça.... réponse dans quelques heures !