Caste SD

RaspberryPi : comment éviter les corruptions de la carte SD.

Bonjour à tous !

A travers cet article, je vais essayer de vous lister les différentes méthodes pour éviter les corruptions de la carte SD de votre RaspberryPi. Pour cela, il y a différents choses à mettre en place. Suivez le guide 😉

Ne pas stocker la date et heure du dernier accès aux fichiers

Sous linux, la date de création, dernière modification et même de dernier accès aux fichiers peut être stocké. Pour stocker la date et heure de dernier accès aux fichiers, il faut écrire sur votre carte SD… ce qui n’est pas top avec votre RaspberryPi. On va du coup désactiver cette fonction.

On modifie cela directement dans le fichier fstab qui référence et gère l’ensemble des systèmes de fichier utilisés par votre RaspberryPi.

Pour éditer votre fichier fstab, utilisez la commande suivante :

Dans ce fichier, repérez les endroitx où sont spécifiés « atime » et remplacez cela par « noatime ».

Désactiver la partition « swap »

La partition « swap » est une mémoire virtuelle située sur le disque dur afin de soulager la mémoire physique en cas de surcharge de celle-ci. Dans mon cas (box domotique avec Domoticz), je ne sature quasiment jamais (ou dans des cas anormaux) la mémoire physique de mon RaspberryPi, du coup je n’ai pas besoin de mettre en place une partition de ce type. Autant, dans ce cas la désactiver.

Voici les étapes à suivre :

Tapez les lignes suivantes qui vont avoir pour effet de désactiver la partition « swap »

Voila c’est bon :) Pour vérifier que tout à bien fonctionné, tapez la commande (voir la page du  man) :

Vous aurez alors un résultat avec la « swap ». Redémarrez à l’aide de la commande suivante :

puis relancez la commande :

Normalement, vous devriez vous une partition swap à 0.

Déplacez vos fichiers de log

Afin de limiter les opérations d’écriture sur votre carte SD, vous pouvez par exemple rajouter une clef USB qui accueillera vos fichiers de log. Pour ma part, j’ai choisi de les écrire sur le disque dur de la freebox serveur. Pour ce faire, j’ai « monté » celui-ci sur mon RaspberryPi puis changé s des fichiers de log (pour moi le fichier de log de domoticz).

Si vous voulez utiliser votre freebox pour cela, allez jeter un coup d’oeil à ce post.

Lancer automatiquement une vérification du système de fichier au démarrage

Il arrive assez régulièrement d’avoir à lancer manuellement la commande « fsck » si votre RaspberryPi ne veut pas redémarrer correctement. Dans ce cas, je devais donc débrancher le RaspberryPi, le brancher en HDMI à la TV (et oui, je n’ai pas d’écran pour le RaspberryPi), brancher un clavier puis lancer manuellement la commande « fsck »… Bref pas top …

La première solution aurait de demander au RaspberryPi de lancer une vérification du système de fichier après de prochain reboot, dans ce cas il faut utiliser la commande (voir la page du man) :

La machine s’éteint alors et lorsque vous rebranchez l’alimentation, le check se fait automatiquement… Bref, il ne faut pas l’oublier sinon vous êtes alors bon pour vous brancher à votre TV … retrouver un clavier … bref, une belle galère :p

Du coup, en cherchant sur le net, j’ai trouvé une petite commande qui permet de lancer automatiquement un check à chaque démarrage et depuis je n’ai plus eu ce souci.

Voici la commande :

Si tout ce passe bien, la commande doit vous retourner 1 ce qui veut dire que la vérification du système de fichier de votre RaspberryPi au démarrage est maintenant activé.

Voila :)

Passer votre système de fichier en mode read-only (non testé)

La meilleure façon de ne pas corrompre votre carte SD est de monter votre partition « root » en read-only. Etant donné que je suis encore entrain de bidouiller un peu trop les fichiers… je n’ai pas encore mis en place cette solution mais bon :) elle existe et la solution pour la mettre en place se trouve dans les liens suivants :

Faire booter son RaspberryPi sur un disque dur externe (non testé)

Bon allé hop, une dernière petite trouvaille sur l’excellent blog framboise314 :

Je n’ai pas vraiment eu le temps de regarder ça dans le détail mais c’est a mon avis la prochaine étape pour moi 😉

 

Voili voilou :) vous savez tout sur les petites astuces que j’ai pu mettre en place pour augmenter ma durée de vie de la carte SD de mon RaspberryPi :)Perso, je n’ai pas eu de soucis depuis fin décembre alors qu’avant, j’avais entre 1 et 2 corruption par mois.

Comme d’hab, si vous avez des questions, remarques, ou encore précisions à apporter, n’hésitez pas à laisser un commentaire !

 

29 réflexions au sujet de « RaspberryPi : comment éviter les corruptions de la carte SD. »

  1. Denis CHEVRIER

    désolé, mais je n’arrive pas à démonter le volume NAS (j’en ai même 2 maintenant !) :

    pi@raspberrypi /media/nas $ df -hT
    Sys. fich. Type Taille Util. Dispo Uti% Monté sur
    rootfs rootfs 7,2G 1,4G 5,5G 20% /
    /dev/root ext4 7,2G 1,4G 5,5G 20% /
    devtmpfs devtmpfs 238M 0 238M 0% /dev
    tmpfs tmpfs 49M 236K 49M 1% /run
    tmpfs tmpfs 5,0M 0 5,0M 0% /run/lock
    tmpfs tmpfs 97M 0 97M 0% /run/shm
    /dev/mmcblk0p1 vfat 56M 20M 37M 35% /boot
    //192.168.0.30/public cifs 455G 326G 129G 72% /media/nas
    //192.168.0.30/public cifs 455G 326G 129G 72% /media/nas
    pi@raspberrypi /media/nas $ umount /192.168.0.30/public
    umount: /192.168.0.30/public is not mounted (according to mtab)

    Je crois que je vais arrêter là pour ce soir.
    Je te suis très reconnaissant d’aider un néophyte en Debian

    Bonne soirée et à demain soir pour continuer si tu le peux…

    Bye

    Denis

    Répondre
    1. Bast' Auteur de l’article

      Pour démonter, je crois que tu as oublié un / ce qui doit donner umount //192.168.0.30/public (et je pense qu’il te faudra encore un sudo :p)
      Si tu veux me contacter directement par mail, passe par le formulaire de contact :)

      Bonne fin de soirée

      Bast’

      Répondre
      1. Denis CHEVRIER

        Bonjour, ça y est tout fonctionne en manuel, j’arrive enfin à écrire sur le NAS depuis le PI.
        Il me reste maintenant à vérifier le fonctionnement avec la cron table pour le test du PI et avec fstab pour monter le NAS sur le PI !
        Question :
        Est-ce que le répertoire du PI (/media/nas pour mon cas perso) est une image du volume NAS (/public dans mon exemple), est-ce un peu comme un alias ? J’ai du mal a comprendre le fonctionnement, car j’ai l’impression d’écrire à la fois sur le PI et sur le NAS !
        D’avance merci pour tes explications.
        Bonne journée

        Denis

        Répondre
        1. Bast' Auteur de l’article

          Et ben voila ! Comme quoi la nuit porte vraiment conseil !
          Pour répondre à ta question, quand ton volume est monté, tu écris sur ton NAS, sinon sur le Pi. Pour comprendre un peu mieux je t’invite à lire cette page de wikipédia sur les points de montage.

          A très bientôt !

          Bast’

          Répondre
      2. Denis CHEVRIER

        Salut Bast’, me revoilà… merci pour ton lien, je comprends maintenant un peu mieux le fonctionnement des points de montage mais j’ai encore un problème avec l’automatisation du montage…
        Je m’explique, lorsque j’envoie la commande ci-dessous en ssh, c’est ok le lien est bien présent :
        pi@raspberrypi ~ $ sudo mount -t cifs -o username=admin,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 //192.168.0.30/public /media/nas
        Password:
        pi@raspberrypi ~ $ df -h
        Sys. fich. Taille Util. Dispo Uti% Monté sur
        rootfs 7,2G 1,4G 5,5G 20% /
        /dev/root 7,2G 1,4G 5,5G 20% /
        devtmpfs 238M 0 238M 0% /dev
        tmpfs 49M 236K 49M 1% /run
        tmpfs 5,0M 0 5,0M 0% /run/lock
        tmpfs 97M 0 97M 0% /run/shm
        /dev/mmcblk0p1 56M 20M 37M 35% /boot
        //192.168.0.30/public 455G 326G 129G 72% /media/nas

        Par contre lorsque je veux l’automatiser avec le fichier fstab, rien ne fonctionne ! j’ai essayé les différents formats ci-dessous, associés ou pas avec un fichier crédential comprenant login et pass :

        #//192.168.0.30/public40dur /media/nas cifs _netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777,credentials=/home/pi/.smbcred 0 0
        #sudo mount -t cifs -o username=admin,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 //192.168.0.30/public /media/nas
        //192.168.0.30/public40dur /media/nas cifs _netdev,users,auto,users,credentials=/home/pi/.smbcred 0 0

        D’avance merci, me dire si tu préfères que je continue via le fil ou par mail ?

        Bonne soirée

        Denis

        Répondre
      3. Denis CHEVRIER

        Bonjour à tous et un spécial thanks à Bast’s pour sa patience et sa gentillesse. Mon installation fonctionne enfin comme je le souhaitais au départ. Bast’s a décortiqué mes problèmes et trouvé une solution pour chaque soucis. En résumé :
        1) problème de montage de mon NAS sur le PI :
        La ligne de commande dans le fichier fstab pour automatiser le montage au démarrage du PI est :
        //192.168.0.30/public /media/nas cifs _netdev,user,auto,users,credentials=/home/pi/smbcred 0 0
        J’avais fait plusieurs erreurs de syntaxe…

        2) problème de lecture du fichier credential :
        Il y avait un « point » devant le nom du fichier qui du coup donnait un nom erroné !

        3) problème de permission sur le fichier destination :
        j’ai fait un chown -R pi /media/nas

        Après reboot du PI tout fonctionne correctement.

        Bonne journée et encore merci

        Denis

        Répondre
  2. Denis CHEVRIER

    Je viens de faire la manip et je suis confronté à l’erreur suivante :

    pi@raspberrypi /media/nas $ ./verif_domoticz.sh >> /media/nas/etat_domoticz.log
    -bash: /media/nas/etat_domoticz.log: Permission non accordée

    Merci de me donner ton point de vue.

    Bonne soirée

    Denis

    Répondre
    1. Bast' Auteur de l’article

      Tu arrives à écrire dans ton dossier /media/nas ?
      D’après ton avant dernier commentaire, je pense qu’il faut que l’utilisateur soit « admin » pour pouvoir écrire dans ton répertoire /media/nas alors que la (d’après ce que je vois) tu es loggé en « pi ».

      Tiens moi au courant !

      Bast’

      Répondre
      1. Denis CHEVRIER

        Bonsoir, non dans mon avant dernier message tu peux voir que dans la ligne de commande le login est « Admin » !
        Y a-t-il une commande afin de s’en assurer ?

        D’avance merci

        Denis

        Répondre
        1. Bast' Auteur de l’article

          Tu peux vérifier en faisant un ls -la sur le répertoire cible, n’hésites pas à m’envoyer le retour de la commande :)
          Par contre … dans ton commentaire il est bien écrit : pi@raspberrypi …. tu es donc loggé en « pi ».

          A bientôt !!!

          Bast’

          Répondre
          1. Denis CHEVRIER

            Voici ce que j’obtiens :
            pi@raspberrypi /media/nas $ ls -la
            total 8
            drwxr-xr-x 2 root root 4096 mai 26 10:21 .
            drwxr-xr-x 3 root root 4096 mai 26 10:21 ..

            Effectivement, je suis logué en PI sur le raspberry, mais en admin sur le NAS dans la commande du Mount !

            A+

            Répondre
            1. Bast' Auteur de l’article

              Tu répertoire appartient à root, si tu essaie d’écrire en root tu n’aura pas de problème.
              Pour résoudre le problème tu peux essayer de changer le propriétaire de ton répertoire avec chown nom_utilisateur nom_repertoire

              Tiens moi au courant ! et bon courage !

              Bast’

              Répondre
              1. Denis CHEVRIER

                hello, le résultat :

                pi@raspberrypi /media/nas $ chown pi /media/nas
                chown: changement de propriétaire pour « /media/nas »: Opération non permise
                ?

                Répondre
                  1. Denis CHEVRIER

                    ok fait :
                    pi@raspberrypi /media/nas $ sudo chown pi /media/nas
                    Je n’ai plus de message d’erreur, par contre toujours rien dans le fichier de log sur le NAS !

                    pi@raspberrypi ~/domoticz/scripts/sh $ ./verif_domoticz.sh
                    mardi 26 mai 2015, 22:06:56 (UTC+0200) >> Domoticz lancé
                    pi@raspberrypi ~/domoticz/scripts/sh $ ./verif_domoticz.sh >> /media/nas/etat_domoticz.log
                    pi@raspberrypi ~/domoticz/scripts/sh $

                    Je viens de regarder le fichier log du répertoire /media/nas sur le PI et là le fichier est incrémenté correctement avec l’état de Domoticz, par contre rien sur le volume Public du NAS

                    comprends pas ? je pensais que ce qu’on a fait permettait d’écrire les log sur le NAS et non sur le PI !

                    Répondre
                    1. Bast' Auteur de l’article

                      Effectivement ca devrait être le cas.
                      Tu vois bien ton NAS correctement monté quand tu utilises la commande df -h ?

                      Bast’

                    2. Denis CHEVRIER

                      Comme je ne comprends pas ce que je fait, je te livre tel quel le résultat :

                      pi@raspberrypi /media/nas $ df -h
                      Sys. fich. Taille Util. Dispo Uti% Monté sur
                      rootfs 7,2G 1,4G 5,5G 20% /
                      /dev/root 7,2G 1,4G 5,5G 20% /
                      devtmpfs 238M 0 238M 0% /dev
                      tmpfs 49M 236K 49M 1% /run
                      tmpfs 5,0M 0 5,0M 0% /run/lock
                      tmpfs 97M 0 97M 0% /run/shm
                      /dev/mmcblk0p1 56M 20M 37M 35% /boot

                      ?

                    3. Bast' Auteur de l’article

                      D’apres ce que je vois ton NAS n’est pas monté … :(
                      Reessaye de le monter avec la commande mount (précédée de sudo) en spécifiant l’ensemble des paramètres ou la commande mount -a si tu as modifié ton ficher fstab (toujours avec sudo).
                      Et sinon, pour comprendre ce que tu fais tu as la commande man suivi de la commande dont tu veux connaître le manuel (man df par exemple).

                      Tiens moi au courant !

                      Bast’

                    4. Denis CHEVRIER

                      ça y est le volume est monté !

                      pi@raspberrypi /media/nas $ df -h
                      Sys. fich. Taille Util. Dispo Uti% Monté sur
                      rootfs 7,2G 1,4G 5,5G 20% /
                      /dev/root 7,2G 1,4G 5,5G 20% /
                      devtmpfs 238M 0 238M 0% /dev
                      tmpfs 49M 236K 49M 1% /run
                      tmpfs 5,0M 0 5,0M 0% /run/lock
                      tmpfs 97M 0 97M 0% /run/shm
                      /dev/mmcblk0p1 56M 20M 37M 35% /boot
                      //192.168.0.30/public 455G 326G 129G 72% /media/nas

                      Par contre, je suis dégouté, lorsque je veux réécrire dans le fichier log, j’ai à nouveau un problème de permission malgré le « sudo chown pi /media/nas » !

                      pi@raspberrypi /media/nas $ ./verif_domoticz.sh >> /media/nas/etat_domoticz.log
                      -bash: /media/nas/etat_domoticz.log: Permission non accordée

                      ?

                    5. Bast' Auteur de l’article

                      Tu peux vérifier les permissions (avec la commande ls -la) et me donner le résultat de la commande df -hT (option T pour avoir le type de système de fichier) stp ?

                      Bast’

                    6. Denis CHEVRIER

                      Et voilà :
                      pi@raspberrypi /media/nas $ ls -la

                      total 12
                      drwxr-xr-x 2 pi root 4096 mai 26 22:00 .
                      drwxr-xr-x 3 root root 4096 mai 26 10:21 ..
                      -rw-r–r– 1 pi pi 174 mai 26 22:06 etat_domoticz.log

                      pi@raspberrypi /media/nas $ df -hT

                      Sys. fich. Type Taille Util. Dispo Uti% Monté sur
                      rootfs rootfs 7,2G 1,4G 5,5G 20% /
                      /dev/root ext4 7,2G 1,4G 5,5G 20% /
                      devtmpfs devtmpfs 238M 0 238M 0% /dev
                      tmpfs tmpfs 49M 236K 49M 1% /run
                      tmpfs tmpfs 5,0M 0 5,0M 0% /run/lock
                      tmpfs tmpfs 97M 0 97M 0% /run/shm
                      /dev/mmcblk0p1 vfat 56M 20M 37M 35% /boot
                      //192.168.0.30/public cifs 455G 326G 129G 72% /media/nas

                      Merci pour ta patience…

                    7. Bast' Auteur de l’article

                      EUh et la ca marche pas d’écrire avec l’utilisateur pi sur ton NAS ? Si non … essaie de mettre « nounix » dans ta chaîne de montage après le rw. Ce qui devrait donner : rw,nounix,iocharset=utf8
                      Ensuite démonte ton volume (umount) et remonte le (mount) :)
                      Tiens moi au courant !

                      Bast’

  3. Denis CHEVRIER

    Salut Bast’, je viens juste de voir ton message après avoir fait qqs recherches sur l’utilisation du fichier fstab.
    Je suis enfin arrivé à monter le volume avec la commande :
    sudo mount -t cifs -o username=admin,rw,iocharset=utf8,file_mode=0777,dir_mode=0777 //192.168.0.30/public /media/nas

    Pour vérifié la présence du répertoire Public de mon NAS depuis le Rasberry :
    pi@raspberrypi ~ $ sudo dir /media/nas
    sav-domoticz

    Voilà, ce soir je vais reprendre le tuto de vérification de fonctionnement de Domoticz et écrire les log sur le volume NAS en question et te tiendrai au courant.

    Encore merci pour ton aide très précieuse

    Bonne soirée

    Denis

    Répondre
  4. Denis CHEVRIER

    Bonjour et merci pour tes astuces que je viens de mettre en place (j’ai en effet dû reconstruire un nouvelle carte SD ce we car je ne pouvais plus booter…). Je souhaiterai stocker les log sur mon NAS, peux-tu m’indiquer la marche à suivre stp ?
    Merci pour ta réponse

    Bonne journée

    Denis

    Répondre
      1. Denis CHEVRIER

        Salut Bast’ et merci pour tes réponses toujours rapide.
        J’ai suivi le tuto pour la freebox mais je n’y arrive pas ! le volume du n’as ne monte pas (erreur au mount) !
        J’ai modifié le fichier fstab, mais comment fait le PI pour se connecter au NAS puisqu’il n’y a pas de login ?

        Mon fichier :
        //192.168.0.30/public40dur /media/nas _netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 0

        Je fais surement des erreurs, merci pour ta patience

        Bonne journée

        Denis

        Répondre
        1. Bast' Auteur de l’article

          Salut Denis !

          D’après ce que je vois, il manque le cifs dans le fstab ce qui devrait donner
          //192.168.0.30/public40dur /media/nas cifs _netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 0

          Peux tu essayer avec ça stp et si ca ne marche pas me copier coller la commande que tu tapes ainsi que le retour de la commande ?

          A bientôt !

          Bast’

          Répondre
          1. Denis CHEVRIER

            Bonjour, en fait le vifs y était bien présent, c’est moi qui ai loupé le copier/coller !

            Quand je tape la commande à la main dans ssh, voici ce qui apparait :

            pi@raspberrypi ~ $ //192.168.0.30/public40dur /media/nas cifs _netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 0
            -bash: //192.168.0.30/public040dur: Aucun fichier ou dossier de ce type

            Merci pour ton aide
            A+

            Répondre
            1. Bast' Auteur de l’article

              Hum … est-ce que tu peux regarder si tu as les paquets cifs-utils et samba en utilisant la commande : dpkg -s cifs-utils smbclient
              Si rien n’est installé, je t’invite a les installer à l’aide de la commande : agt-get install smbclient cifs-utils

              Ensuite réessaye de monter ton disque :)

              Tiens moi au courant !

              Bast’

              Répondre

Répondre à Denis CHEVRIER Annuler la réponse.

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">