Logo de la framboise

Raspberry Pi : un système plus résilient File Système

Raspberry-Pi-Rendre-un-système-plus-résilient-File-Système-produit

Portée du document

Ce document s'applique aux produits Raspberry Pi suivants :

Pi 0 Pi 1 Pi 2 Pi 3 Pi 4 Pi 400 CM1 CM3 CM4 CM 5 Pic
0 W H A B A B B Tous Tous Tous Tous Tous Tous Tous
* * * * * * * * * * * * * *  

 

Introduction

Les appareils Raspberry Pi Ltd sont fréquemment utilisés comme dispositifs de stockage et de surveillance de données, souvent dans des endroits sujets à des coupures de courant soudaines. Comme pour tout appareil informatique, les coupures de courant peuvent entraîner une corruption du stockage. Ce livre blanc propose des solutions pour prévenir la corruption des données dans ces circonstances et d'autres, en sélectionnant les équipements appropriés. file Systèmes et configurations garantissant l'intégrité des données. Ce livre blanc suppose que le Raspberry Pi exécute le système d'exploitation (SE) Raspberry Pi (Linux) et est entièrement à jour avec les derniers firmwares et noyaux.

Qu’est-ce que la corruption des données et pourquoi se produit-elle ?
La corruption de données désigne les modifications involontaires des données informatiques qui surviennent lors de l'écriture, de la lecture, du stockage, de la transmission ou du traitement. Dans ce document, nous nous référons uniquement au stockage, et non à la transmission ou au traitement. La corruption peut survenir lorsqu'un processus d'écriture est interrompu avant sa fin, empêchant ainsi l'écriture de se terminer, par exemple.ampLe système d'exploitation Linux (et, par extension, Raspberry Pi) écrit les données sur le stockage. Linux utilise généralement des caches d'écriture pour stocker les données à écrire. Ces caches stockent temporairement les données en mémoire vive (RAM) jusqu'à ce qu'une limite prédéfinie soit atteinte, auquel cas toutes les écritures en attente sur le support de stockage sont effectuées en une seule transaction. Ces limites prédéfinies peuvent être liées au temps et/ou à la taille. Par exempleampLes données peuvent être mises en cache et écrites sur le stockage uniquement toutes les cinq secondes, ou seulement lorsqu'une certaine quantité de données est accumulée. Ces schémas permettent d'améliorer les performances : l'écriture d'un gros volume de données en une seule fois est plus rapide que l'écriture de nombreux petits volumes.

Cependant, si l'alimentation est coupée entre le stockage des données dans le cache et leur écriture, ces données sont perdues. D'autres problèmes peuvent survenir plus tard dans le processus d'écriture, lors de l'écriture physique des données sur le support de stockage. Une fois qu'un composant matériel (par exemple) est déconnecté,ampMême si l'interface de la carte Secure Digital (SD) reçoit l'instruction d'écrire des données, leur stockage physique prend un temps limité. Une panne de courant pendant cette période extrêmement brève peut corrompre les données en cours d'écriture. Lors de l'arrêt d'un système informatique, y compris le Raspberry Pi, la meilleure pratique consiste à utiliser l'option d'arrêt. Cela garantit que toutes les données en cache sont écrites et que le matériel a eu le temps d'écrire les données sur le support de stockage. Les cartes SD utilisées par la plupart des appareils Raspberry Pi sont idéales pour remplacer les disques durs à moindre coût, mais elles sont sujettes à des pannes au fil du temps, selon leur utilisation. La mémoire flash des cartes SD a une durée de vie limitée en écriture, et à mesure que les cartes approchent de cette limite, elles peuvent perdre leur fiabilité. La plupart des cartes SD utilisent une procédure appelée « wear leveling » pour optimiser leur durée de vie, mais elles peuvent finir par tomber en panne. Cela peut prendre de quelques mois à plusieurs années, selon la quantité de données écrites ou, plus important encore, effacées. Cette durée de vie peut varier considérablement d'une carte à l'autre. Une défaillance de la carte SD est généralement indiquée par un signal aléatoire. file corruptions lorsque certaines parties de la carte SD deviennent inutilisables.

Il existe d'autres causes de corruption des données, notamment un support de stockage défectueux, des bugs dans les logiciels d'écriture (pilotes) ou des bugs dans les applications elles-mêmes. Aux fins du présent livre blanc, tout processus entraînant une perte de données est défini comme une corruption.

Qu'est-ce qui peut provoquer une opération d'écriture ?
La plupart des applications effectuent une sorte d'écriture sur le stockage, par exempleampinformations de configuration, mises à jour de bases de données, etc. Certaines d'entre elles fileLes écritures peuvent être temporaires, c'est-à-dire utilisées uniquement pendant l'exécution du programme, et ne nécessitent pas de maintenance pendant un cycle d'alimentation. Cependant, elles génèrent des écritures sur le support de stockage. Même si votre application n'écrit pas de données, Linux effectuera en permanence des écritures sur le stockage en arrière-plan, principalement des enregistrements de journalisation.

Solutions matérielles

Bien que cela ne soit pas entièrement abordé dans ce livre blanc, il convient de mentionner que la prévention des coupures de courant imprévues est une mesure courante et bien connue pour prévenir la perte de données. Des dispositifs tels que les onduleurs (UPS) garantissent la continuité de l'alimentation électrique et, en cas de panne de courant, l'onduleur, lorsqu'il est alimenté par batterie, peut avertir le système informatique de l'imminence d'une coupure de courant afin que l'arrêt puisse se dérouler correctement avant que l'alimentation de secours ne soit épuisée. La durée de vie des cartes SD étant limitée, il peut être utile de prévoir un système de remplacement garantissant leur remplacement avant leur fin de vie.

Robuste file systèmes

Il existe différentes manières de protéger un Raspberry Pi contre les événements de corruption. Leur capacité à prévenir la corruption varie, chaque action réduisant le risque de corruption.

  • Réduire les écritures
    Réduire simplement le volume d'écriture de vos applications et du système d'exploitation Linux peut avoir un effet bénéfique. Si vous effectuez une journalisation importante, le risque d'écritures lors d'un événement de corruption augmente. La réduction de la journalisation dans votre application est du ressort de l'utilisateur final, mais elle peut également être réduite sous Linux. Ceci est particulièrement pertinent si vous utilisez du stockage flash (par exemple, eMMC, cartes SD), en raison de leur durée de vie en écriture limitée.
  • Modification des heures de validation
    Le temps de validation pour un file Le système est la durée pendant laquelle il met les données en cache avant de les copier entièrement sur le stockage. Augmenter ce temps améliore les performances en regroupant de nombreuses écritures, mais peut entraîner une perte de données en cas de corruption avant l'écriture. Réduire le temps de validation réduit le risque de perte de données due à une corruption, sans toutefois l'empêcher complètement.
    Pour modifier l'heure de validation pour l'EXT4 principal file système sur Raspberry Pi OS, vous devez éditer le \etc\fstab file qui définit comment file les systèmes sont montés au démarrage.
  • $sudo nano /etc/fstab

Ajoutez ce qui suit à l'entrée EXT4 pour la racine file système:

  • commit=

Ainsi, fstab pourrait ressembler à ceci : le temps de validation est fixé à trois secondes. S'il n'est pas défini spécifiquement, le temps de validation sera par défaut fixé à cinq secondes.

Raspberry-Pi-Rendre-un-système-plus-résilient-File-Système-

 

Temporaire file systèmes

Si une demande nécessite une intervention temporaire file stockage, c'est-à-dire les données utilisées uniquement pendant l'exécution de l'application et qui ne doivent pas être sauvegardées lors d'un arrêt, une bonne option pour empêcher les écritures physiques sur le stockage est d'utiliser un file système, tmpfs. Parce que ces file les systèmes sont basés sur la RAM (en fait, dans la mémoire virtuelle), toutes les données écrites dans un tmpfs ne sont jamais écrites sur le stockage physique et n'affectent donc pas la durée de vie du flash et ne peuvent pas être endommagées en cas d'événement de corruption.
La création d'un ou plusieurs emplacements tmpfs nécessite la modification du fichier /etc/fstab file, qui contrôle tous les file systèmes sous Raspberry Pi OS. L'exemple suivantample remplace les emplacements de stockage /tmp et /var/log par des emplacements temporaires file emplacements du système. Le deuxième example, qui remplace le dossier de journalisation standard, limite la taille globale du file système à 16 Mo.

  • tmpfs /tmp tmpfs par défaut,noatime 0 0
  • tmpfs /var/log tmpfs par défaut,noatime,size=16m 0 0

Il existe également un script tiers permettant de configurer la journalisation en RAM, disponible sur GitHub. Il permet également de transférer les journaux en RAM sur le disque à un intervalle prédéfini.

Racine en lecture seule file systèmes

La racine file système (rootfs) est le file système sur la partition de disque sur laquelle se trouve le répertoire racine, et c'est le file système sur lequel tous les autres file Les systèmes sont montés au démarrage du système. Sur le Raspberry Pi, il s'agit de /, et par défaut, il se trouve sur la carte SD, en tant que partition EXT4 entièrement en lecture/écriture. Il existe également un dossier de démarrage, monté sous /boot et en tant que partition FAT en lecture/écriture. Le fait de rendre le rootfs en lecture seule empêche tout accès en écriture, ce qui le rend beaucoup plus résistant aux corruptions. Cependant, sans autre action, cela signifie que rien ne peut y écrire. file Le système est donc désactivé, de sorte que l'enregistrement des données de votre application vers le système de fichiers racine est désactivé. Si vous devez stocker des données de votre application, mais souhaitez un système de fichiers racine en lecture seule, une technique courante consiste à ajouter une clé USB ou similaire destinée uniquement au stockage des données utilisateur.

NOTE
Si vous utilisez un swap file lors de l'utilisation d'un fichier en lecture seule file système, vous devrez déplacer le swap file vers une partition en lecture/écriture.

Recouvrir file système

Une superposition file système (overlayfs) combine deux file systèmes, une partie supérieure file système et un inférieur file système. Lorsqu'un nom existe dans les deux file systèmes, l'objet dans la partie supérieure file le système est visible tandis que l'objet dans la partie inférieure file Le système est soit masqué, soit, dans le cas des répertoires, fusionné avec l'objet supérieur. Le Raspberry Pi propose une option dans raspi-config pour activer un overlayfs. Cela rend le rootfs (inférieur) accessible en lecture seule et crée un objet supérieur basé sur la RAM. file système. Cela donne un résultat très similaire à celui du système en lecture seule. file Système, toutes les modifications utilisateur étant perdues au redémarrage. Vous pouvez activer un overlayfs via la ligne de commande raspi-config ou l'application de configuration Raspberry Pi depuis le menu Préférences.

Il existe également d'autres implémentations de overlayfs qui peuvent synchroniser les modifications requises du niveau supérieur vers le niveau inférieur. file système selon un calendrier prédéterminé. Par exempleample, vous pouvez copier le contenu du dossier personnel d'un utilisateur du haut vers le bas toutes les douze heures. Cela limite le processus d'écriture à un très court laps de temps, ce qui signifie que la corruption est beaucoup moins probable, mais signifie que si l'alimentation est coupée avant la synchronisation, toutes les données générées depuis la dernière sont perdues. pSLC sur les modules de calcul La mémoire eMMC utilisée sur les modules de calcul Raspberry Pi est MLC (Multi-Level Cell), où chaque cellule de mémoire représente 2 bits. pSLC, ou pseudo-Single Level Cell, est un type de technologie de mémoire flash NAND qui peut être activé dans les périphériques de stockage MLC compatibles, où chaque cellule ne représente qu'un bit. Elle est conçue pour offrir un équilibre entre les performances et l'endurance de la mémoire flash SLC et la rentabilité et la capacité supérieure de la mémoire flash MLC. pSLC a une endurance d'écriture supérieure à MLC car l'écriture de données sur les cellules moins fréquente réduit l'usure. Alors que MLC peut offrir environ 1 3,000 à 10,000 XNUMX cycles d'écriture, pSLC peut atteindre des chiffres nettement plus élevés, approchant les niveaux d'endurance de SLC. Cette endurance accrue se traduit par une durée de vie plus longue pour les appareils utilisant la technologie pSLC par rapport à ceux utilisant la technologie MLC standard.

La mémoire MLC est plus économique que la mémoire SLC, mais si la mémoire pSLC offre de meilleures performances et une meilleure endurance que la MLC pure, elle le fait au détriment de la capacité. Un périphérique MLC configuré pour la pSLC aura la moitié de la capacité (voire moins) d'un périphérique MLC standard, car chaque cellule ne stocke qu'un bit au lieu de deux ou plus.

Détails de mise en œuvre

pSLC est implémenté sur eMMC en tant que zone utilisateur améliorée (également appelée stockage amélioré). L'implémentation de cette zone utilisateur améliorée n'est pas définie dans la norme MMC, mais correspond généralement à pSLC.

  • La zone utilisateur améliorée est un concept, tandis que pSLC est une implémentation.
  • pSLC est un moyen de mettre en œuvre la zone utilisateur améliorée.
  • Au moment de la rédaction de cet article, l'eMMC utilisé sur les modules de calcul Raspberry Pi implémente la zone utilisateur améliorée à l'aide de pSLC.
  • Il n’est pas nécessaire de configurer l’ensemble de la zone utilisateur eMMC en tant que zone utilisateur améliorée.
  • La programmation d'une zone mémoire en zone utilisateur améliorée est une opération unique. Elle est donc irréversible.

L'allumer
Linux fournit un ensemble de commandes pour manipuler les partitions eMMC dans le paquet mmc-utils. Installez un système d'exploitation Linux standard sur le périphérique CM et installez les outils comme suit :

  • sudo apt install mmc-utils

Pour obtenir des informations sur l'eMMC (cette commande est redirigée vers less car il y a beaucoup d'informations à afficher) :

  • sudo mmc extcsd read /dev/mmcblk0 | moins

 AVERTISSEMENT
Les opérations suivantes sont uniques : elles peuvent être exécutées une fois et sont irréversibles. Il est également conseillé de les exécuter avant d'utiliser le module de calcul, car elles effaceront toutes les données. La capacité de l'eMMC sera réduite de moitié.

La commande permettant d'activer le pSLC est mmc enh_area_set, qui requiert plusieurs paramètres indiquant la zone mémoire sur laquelle le pSLC doit être activé. L'exemple suivantampLe fichier utilise toute la zone. Veuillez consulter l'aide de la commande mmc (man mmc) pour plus de détails sur l'utilisation d'un sous-ensemble de l'eMMC.

Raspberry-Pi-Rendre-un-système-plus-résilient-File-Système-

Après le redémarrage de l'appareil, vous DEVREZ réinstaller le système d'exploitation, car l'activation de pSLC effacera le contenu de l'eMMC.

Le logiciel Raspberry Pi CM Provisioner propose une option permettant de configurer pSLC pendant le processus de provisionnement. Cette option est disponible sur GitHub à l'adresse suivante : https://github.com/raspberrypi/cmprovision.

  • Hors appareil file démarrage des systèmes / du réseau
    Le Raspberry Pi est capable de démarrer via une connexion réseau, par exempleampl'utilisation du réseau File (NFS). Cela signifie qu'une fois que l'appareil a terminé sa premièretage boot, au lieu de charger son noyau et sa racine file système depuis la carte SD, il est chargé depuis un serveur réseau. Une fois lancé, tout file les opérations agissent sur le serveur et non sur la carte SD locale, qui ne joue aucun rôle supplémentaire dans la procédure.
  • Solutions cloud
    De nos jours, de nombreuses tâches bureautiques s'effectuent via un navigateur, toutes les données étant stockées en ligne dans le cloud. Stocker les données hors de la carte SD peut évidemment améliorer la fiabilité, au détriment d'une connexion internet permanente et des éventuels frais facturés par les fournisseurs de cloud. L'utilisateur peut utiliser une installation complète du système d'exploitation Raspberry Pi, avec un navigateur optimisé pour Raspberry Pi, pour accéder aux services cloud de fournisseurs tels que Google, Microsoft, Amazon, etc. Une autre solution consiste à utiliser un fournisseur de clients légers, qui remplace le système d'exploitation Raspberry Pi par un système d'exploitation/application exécuté à partir de ressources stockées sur un serveur central plutôt que sur la carte SD. Les clients légers fonctionnent en se connectant à distance à un environnement informatique basé sur un serveur où sont stockées la plupart des applications, des données sensibles et de la mémoire.

Conclusions

Lorsque les procédures d'arrêt correctes sont respectées, le stockage sur carte SD du Raspberry Pi est extrêmement fiable. Cela fonctionne parfaitement à la maison ou au bureau, où l'arrêt peut être contrôlé. Cependant, lors d'une utilisation industrielle ou dans des zones où l'alimentation électrique est instable, des précautions supplémentaires peuvent améliorer la fiabilité.

En bref, les options permettant d’améliorer la fiabilité peuvent être énumérées comme suit :

  • Utilisez une carte SD connue et fiable.
  • Réduisez les écritures en utilisant des temps de validation plus longs et en utilisant des file systèmes, utilisant un overlayfs, ou similaire.
  • Utilisez un stockage hors appareil tel que le démarrage réseau ou le stockage cloud.
  • Mettre en place un régime de remplacement des cartes SD avant leur fin de vie.
  • Utilisez un UPS.

Raspberry Pi est une marque déposée de Raspberry Pi Ltd
Raspberry Pi Ltd.

Colophon
© 2020-2023 Raspberry Pi Ltd (anciennement Raspberry Pi (Trading) Ltd.)
Cette documentation est sous licence Creative Commons Attribution - Pas de Modification 4.0 International (CC BY-ND).

  • date de construction : 2024/06/25
  • version de construction : githash : 3e4dad9-clean

Mentions légales
LES DONNÉES TECHNIQUES ET DE FIABILITÉ DES PRODUITS RASPBERRY PI (Y COMPRIS LES FICHES TECHNIQUES) TELLES QUE MODIFIÉES DE TEMPS À AUTRE (« RESSOURCES ») SONT FOURNIES PAR RASPBERRY PI LTD (« RPL ») « TELLES QUELLES » ET TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER À, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADÉQUATION À UN USAGE PARTICULIER SONT DÉCLINÉES. DANS LA MESURE MAXIMALE AUTORISÉE PAR LA LOI APPLICABLE, RPL NE SERA EN AUCUN CAS RESPONSABLE DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS S'Y LIMITER, L'ACQUISITION DE BIENS OU SERVICES DE SUBSTITUTION ; PERTE D'UTILISATION, DE DONNÉES , OU BÉNÉFICES ; OU INTERRUPTION D'ACTIVITÉ) QUELLE QU'EN SOIT LA CAUSE ET SUR TOUTE THÉORIE DE RESPONSABILITÉ, QU'ELLE SOIT CONTRACTUELLE, RESPONSABILITÉ STRICTE OU DÉLICTUELLE (Y COMPRIS LA NÉGLIGENCE OU AUTRE) RÉSULTANT DE QUELQUE MANIÈRE QUE CE SOIT DE L'UTILISATION DES RESSOURCES, MÊME SI AVISÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.

RPL se réserve le droit d'apporter des améliorations, des corrections ou toute autre modification aux RESSOURCES ou à tout produit qui y est décrit, à tout moment et sans préavis. Les RESSOURCES sont destinées à des utilisateurs expérimentés possédant un niveau de connaissances en conception approprié. Les utilisateurs sont seuls responsables de leur sélection et de leur utilisation des RESSOURCES et de toute application des produits qui y sont décrits. L'utilisateur s'engage à indemniser et à dégager RPL de toute responsabilité, de tout coût, de tout dommage ou de toute autre perte découlant de son utilisation des RESSOURCES. RPL autorise les utilisateurs à utiliser les RESSOURCES uniquement en conjonction avec les produits Raspberry Pi. Toute autre utilisation des RESSOURCES est interdite. Aucune licence n'est accordée sur un autre droit de propriété intellectuelle de RPL ou de tiers.

ACTIVITÉS À HAUT RISQUE. Les produits Raspberry Pi ne sont pas conçus, fabriqués ni destinés à être utilisés dans des environnements dangereux nécessitant des performances à sécurité intégrée, tels que l'exploitation d'installations nucléaires, de systèmes de navigation ou de communication aériens, le contrôle du trafic aérien, les systèmes d'armement ou les applications critiques pour la sécurité (y compris les systèmes de survie et autres dispositifs médicaux), dans lesquels une défaillance des produits pourrait entraîner directement la mort, des blessures corporelles ou de graves dommages physiques ou environnementaux (« Activités à Haut Risque »). RPL décline expressément toute garantie expresse ou implicite d'adéquation aux Activités à Haut Risque et décline toute responsabilité quant à l'utilisation ou à l'inclusion de produits Raspberry Pi dans ces Activités. Les produits Raspberry Pi sont fournis sous réserve des Conditions Générales de RPL. La mise à disposition des RESSOURCES par RPL n'étend ni ne modifie les Conditions Générales de RPL, y compris, mais sans s'y limiter, les exclusions de responsabilité et les garanties qui y sont exprimées.

Questions fréquemment posées

  • Q : Quels produits Raspberry Pi sont pris en charge par ce document ?
    R : Ce document s'applique à divers produits Raspberry Pi, notamment Pi 0 W, Pi 1 A/B, Pi 2 A/B, Pi 3, Pi 4, Pi 400, CM1, CM3, CM4, CM5 et Pico.
  • Q : Comment puis-je réduire les risques de corruption des données sur mon appareil Raspberry Pi ?
    R : Vous pouvez réduire la corruption des données en minimisant les opérations d'écriture, en particulier les activités de journalisation, et en ajustant les heures de validation pour le file système tel que décrit dans ce document.

Documents / Ressources

Raspberry Pi : un système plus résilient File Système [pdf] Guide de l'utilisateur
Pi 0, Pi 1, pour une planète plus résiliente File Système plus résilient File Système résilient File Système, File Système

Références

Laisser un commentaire

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués *