Mon appareil Linux intégré utilise une carte SD pour enregistrer certaines données de diagnostic, beaucoup trop copieuses pour le flash interne.
Le problème est que si l'appareil est éteint de manière inattendue, le système de fichiers (FAT32) sur la carte est corrompu.
Il n'y a aucun moyen d'empêcher des pannes de courant inattendues ou de l'éteindre comme ça, et l'appareil devrait être relativement sans entretien. Pire encore, les données sont écrites en continu, donc les corruptions sont très fréquentes, et Linux lors de la détection de FS défectueux les remonte en lecture seule en silence.
Quelles méthodes proposeriez-vous pour atténuer cela? L'exécution automatique de fsck.vfat au démarrage suffira-t-elle?
Quelques informations supplémentaires:
- La carte ne doit pas être considérée comme amovible par l'utilisateur. Cela doit être considéré comme un disque interne. Toutes les données qui y sont stockées seront accessibles pour téléchargement sur le réseau ou sur un lecteur USB, et le système purge automatiquement les entrées les plus anciennes. Cela signifie qu'il n'a pas besoin d'être lisible sur votre PC moyen.
- Le système prend actuellement en charge FAT, yaffs et jffs2. Ajouter d'autres systèmes de fichiers au noyau est possible mais si d'autres voies existent, nous les préférerions d'abord.
- L'écriture peut être suspendue à la demande, même pendant plusieurs minutes sans perte de données.
- une perte de données partielle ou une corruption mineure est acceptable. L'arrêt complet de la journalisation ne l'est pas.
- les événements de mise hors tension sont complètement imprévisibles la plupart du temps.
- le système fonctionne sur ARM9, 200 MHz, 64 Mo de RAM, 32 Mo de mémoire flash interne et utilise la majeure partie de la puissance du processeur pour son rôle principal. Tenez-en compte lorsque vous pensez à des solutions sophistiquées gourmandes en ressources.
Réponses:
Vous pouvez utiliser le
block2mtd
pilote pour utiliser les systèmes de fichiers transactionnels jffs2 ou yaffs (2) que vous semblez utiliser ailleurs pour votre carte SD, ce qui résoudrait votre problème de perte de données ou de corruption du système de fichiers à la mise hors tension.Cela pourrait toutefois entraîner d'autres problèmes. Comme la carte SD est susceptible d'avoir ses propres mécanismes de nivellement de l'usure et de remappage de secteur en place, ceux-ci pourraient interférer avec les implémentations de jffs2 et de yaffs pour faire de même, réduisant la durée de vie ou les performances de votre carte SD. Si ce n'est pas un problème, cela vaut la peine d'essayer.
la source
Vérifiez si le noyau que vous utilisez prend en charge l'indicateur de vidage et / ou de synchronisation pour vfat (il semble que certaines versions l'ignorent, faites attention!).
Ou supprimez tout simplement le système de fichiers si tout peut aller dans un seul fichier (comme ce serait le cas avec un flux de journal brut!) Ou dans quelques fichiers de taille fixe (utilisez des partitions;)
la source