Je développe une application sur une carte embarquée Linux (tourne sous Debian) par exemple Raspberry Pi, Beagle Board / Bone ou olimex. Les cartes fonctionnent dans un environnement où l'électricité est coupée de manière inattendue (il est bien compliqué de placer le bloc d'alimentation, etc.) et cela se produirait chaque jour quelques fois. Je me demande si les coupures de courant inattendues causeraient un crash / problème sur le système d'exploitation Linux? Si c'est quelque chose que je dois inquiéter, que suggéreriez-vous pour éviter les dommages sur OS contre les coupures de courant inattendues?
PS. L'application doit écrire des données sur le support de stockage (carte SD), je pense qu'il ne serait pas approprié de les monter en lecture seule.
Réponses:
Des coupures de courant inattendues peuvent endommager les données du système de fichiers - par exemple, si un processus a commencé à écrire dans un fichier, mais pas encore fini de l'écrire, le fichier peut ne finir qu'à moitié écrit. Imaginez maintenant si la coupure de courant se produit lorsque vous êtes à mi-chemin d'une mise à niveau du noyau ...
Comme l'a écrit l0b0, l'utilisation d'un système de fichiers de journalisation sera utile, car il pourra suivre ce qui a réellement été fait. En plus de l'info wikipedia qui l0b0 lié, vous pouvez être intéressé par /unix/12699/do-journaling-filesystems-guarantee-against-corruption-after-a-power-failure aussi bien .
En tant que programmeur, vous devez évidemment réfléchir soigneusement à la façon de gérer l'écriture dans des fichiers afin que cela devienne un processus atomique (c'est-à-dire qu'il soit entièrement terminé ou pas du tout, mais jamais à moitié fait). C'est une question assez complexe.
la source
Pour aider à minimiser la possibilité de corruption du système d'exploitation, il est probablement préférable d'avoir des partitions "système" et "données" séparées sur la carte SD. De cette façon, vous pouvez monter la partition "système" en lecture seule et utiliser un FS hautement résilient sur la partition "données".
De plus, la plupart de ces cartes ont des besoins en énergie très faibles, donc une batterie de secours est possible. La carte «LiPo rider» pour le Raspberry Pi peut être utilisée comme onduleur de base pour fournir un arrêt net en cas de coupure de courant.
la source
Cela dépendrait de
Considérons par exemple une application qui traite un fichier et écrit les résultats au fur et à mesure qu'ils sont calculés (une ligne de sortie par ligne d'entrée) dans un autre fichier. Si l'alimentation est coupée pendant le traitement et que la même application est exécutée après le redémarrage, elle ne peut pas simplement redémarrer le traitement depuis le début du fichier d'entrée - cela signifierait que le fichier de sortie contiendrait des informations en double.
Il pourrait être très difficile de dire quoi que ce soit de définitif sur un système complexe hypothétique, mais la plupart des logiciels Linux stables semblent être capables de gérer très bien les plantages.
la source
Étant donné que personne n'a mentionné de systèmes de fichiers spécifiques: les systèmes de fichiers plus modernes (ext3, ext4, ntfs) sont capables de gérer les plantages bien mieux que les anciens systèmes de fichiers (ext2, ext, fat32) en raison de la journalisation .
En supposant que le disque dur ne plante pas et ne ment pas , une panne de courant complète ne devrait pas corrompre le système de fichiers. Les fichiers individuels qui étaient en cours d'écriture peuvent cependant être corrompus, donc si vous étiez en train de mettre à jour le système d'exploitation lorsque la panne de courant s'est produite, il est toujours possible de le faire.
la source