Sauvegarder et préserver la carte MicroSD du Raspberry Pi

Écrit par fdgeek
12 minutes
Sauvegarder et préserver la carte MicroSD du Raspberry Pi

Comme je l'ai évoqué dans le billet précédent, le principal point noir concernant l'utilisation d'un Raspberry Pi se situe au niveau de l'usage intensif de la carte Micro SD.

Ce phénomène s'explique très bien dans la mesure où le type de mémoire flash utilisée dans les cartes SD et Micro SD n'est pas initialement prévu  pour faire tourner un système d'exploitation mais pour servir normalement de support de stockage. (comme une clé USB).

Le nombre de cycles d'écritures subis quotidiennement par la carte provoquera inéluctablement la destruction des cellules mémoires au fil du temps. C'est pourquoi la première des choses à prendre en considération c'est la qualité de la carte Micro SD et sa rapidité en lecture / écriture. Heureusement on trouve de nos jours des très bonnes cartes dans des marques reconnues avec un très bon rapport : capacité / qualité /prix / garantie.

Orientez donc votre choix sur des cartes de type Micro SDHC ou SDXC de classe 10 et restez sur des valeurs sûres avec des marques comme (Kingston, Lexar, SanDisk, Samsung, PNY...) qui proposent  des garanties allant de 10 ans à une "garantie à vie". Inutile d'aller investir dans des cartes de très hauts gamme (ex: cartes ultra performantes dédiées à la photographie et à la vidéo professionnelle ) qui ne présentent à mon avis aucun intérêt avec un Raspberry Pi.

Surtout, fuyez comme la peste les cartes NoName (sans marque).

Des cartes comme les SanDisk Ultra ou les Samsung Evo+ d'une capacité de 32Go sont déjà de très bons choix et peuvent se trouver à moins de 10€.

Mais quoi qu'il en soit, attendez-vous à ce qu'un jour ou l'autre la micro carte finisse par rendre l'âme.

En attendant, et pour repousser au maximum le jour du crash, si vous utilisez votre Raspberry Pi en intensif (ex : usage 24h/24h en solution serveur, domotique, station météo, seedbox ou autre) vous pouvez, si votre système est basé sur une distribution Linux Debian limiter l'écriture des nombreux fichiers .log en déplaçant temporairement ces derniers dans un disque virtuel en mémoire RAM grâce au script : Log2Ram.

En effet, sous Linux, les fichiers de journalisation augmentent parallèlement au nombre de services installés. (Ex : fail2ban, Apache, Nginx, PHP, SSH....). De plus leur archivage et leur actualisation varie d'un programme à l'autre (de façon horaire, journalière, quotidienne, mensuelle etc...).

Avec Log2Ram, tous ces journaux sont temporairement stockés en mémoire RAM puis écrits 1 seule fois par jour et uniquement à l'extinction ou au redémarrage de la machine.

Voyons donc l'installation de log2Ram en pratique :

  • Ouvrez une session distante en SSH (ex: avec Putty) sur votre Raspberry Pi.
# Il faut d'abord cloner le script de Log2Ram depuis GitHub :

sudo git clone https://github.com/azlux/log2ram.git

# Il se peut que vous soyez obligé d'installer Git avant :

sudo apt-get install git-core

# Positionnez-vous ensuite dans le répertoire crée :

cd log2ram

# donnez les droits d'exécution au script d'installation :

sudo chmod +x install.sh

# Puis lancez l'installation de Log2Ram :

sudo ./install.sh

Ceci fait, redémarrez votre Raspberry Pi et vérifiez que Log2Ram est bien installé en contrôlant la présence du répertoire /var/log sur le point de montage /Log2Ram (Disque virtuel en mémoire vive).

# redémarrage du RPI :

sudo reboot

# contrôle des disques virtuels en RAM :

sudo df -h

Maintenant que Log2Ram est installé, vous pouvez le configurer en fonction de vos besoins en éditant le fichier /etc/log2ram.conf

En fonction de la taille des journaux de votre système il vous sera peut nécessaire de d'ajuster la taille du disque virtuel en modifiant le paramètre "size" définit à 40 Mo par défaut.

# édition du fichier de configuration de Log2Ram :

sudo nano /etc/log2ram.conf

Enfin, si les fichiers .log ne vous sont pas indispensables à l'heure près, vous pouvez encore pousser l'économie d'écriture sur la carte micro SD en déplaçant le fichier log2ram du répertoire "hourly" (écriture des logs horaire) au répertoire "daily" (écriture des logs journalière).

# écriture journalière des logs :

sudo mv /etc/cron.hourly/log2ram /etc/cron.daily/log2ram

Voilà, dorénavant, les fichiers logs seront écrits sur la carte 1 fois par jour et seulement à l'extinction de la machine. En cas de plantage, les logs du moment seront perdus (Vidage de la RAM).

Maintenant que nous avons pas mal restreint le nombre d'écritures sur la carte micro SD, vient le temps de la sauvegarde. Sachant que la carte est vouée à s'autodétruire un jour ou l'autre, la meilleure des solutions de sauvegarde reste à mon avis d'avoir sous la main une copie conforme de celle-ci (une image ou un clone) afin de pourvoir remettre la machine en service en moins de 5 minutes.

Deux solutions s’offrent à vous :

  • L'utilisation d'un utilitaire dédié tel que Win32DiskImager qui permet de créer une image complète de sa carte SD pour la dupliquer plus tard sur une autre carte.
  • Utiliser l'excellent script RPI-Clone qui vous permet lui aussi de créer une copie de votre carte SD mais prend également en charge la synchronisation des sauvegardes.

Même si Win32DiskImager est excellent dans son domaine, il possède quelques limites :

Il fonctionne sous Windows et vous êtes obligés d'arrêter votre Raspberry Pi pour copier la carte. De plus, vous ne pouvez pas copier une carte  vers une carte de capacité inférieure. (Cette solution n'est donc pas idéale si votre Raspberry est un serveur devant tourner en permanence).

Avec RPI-Clone par contre, la copie peut se faire "à la volée" machine allumée, vers une carte de taille différente et surtout, une fois le clone initial crée, RPI-Clone est capable de fonctionner en synchronisation de fichiers, c'est à dire que seuls les fichiers récemment ajoutés ou modifiés seront intégrés à la sauvegarde. Celle-ci ne prendra alors que quelques secondes à quelques minutes pour s'effectuer.

Voyons donc dans le détail l'installation et le fonctionnement de RPI-Clone :

Au préalable, vous aurez besoin d'un lecteur de carte micro SD USB ou d'un adaptateur USB connecté au Raspberry Pi.

# On récupère d'abbord le script à partir de git :

sudo git clone https://github.com/billw2/rpi-clone.git

# Puis on le copie vers le répertoire /sbin de l'utilisateur :

cd rpi-clone
sudo cp rpi-clone rpi-clone-setup /usr/local/sbin

Exécution de RPI-Clone :

Avant d'utiliser RPI-Clone, il est vivement conseillé de stopper des services sensibles, comme par exemple Apache, Nginx, Mysql... notamment si vous hébergez un site web dynamique (avec base de données).

# exemple :

sudo service Nginx stop

Si votre site est statique, aucun risque de corrompre la base de données au moment de la sauvegarde, vous pouvez foncer sans vous préoccuper des services en fonctionnement.

Vérifiez bien que votre support de sauvegarde est détecté. Il doit apparaître sous la forme d'un disque /Sda, la carte micro SD du Raspberry Pi apparaissant sous la forme /dev/mmcblk0.

# contrôle de la détection du support de sauvegarde :

sudo fdisk -l

Pour une sauvegarde initiale, la commande RPI-Clone doit être lancée avec le paramètre -f. Ainsi, les partitions sur la carte de sauvegarde seront automatiquement crées et ajustées en fonction de sa taille.

# Exécution initiale de RPI-Clone :

sudo rpi-clone sda -f

Une fois lancé, le script va vous demander de répondre à certaines questions (Y/N) et il vous suffit de patienter jusqu'à ce que le clonage de la carte système soit terminé et que le script vous propose de quitter en démontant le support de sauvegarde. Cette opération initiale peut être plus ou moins longue en fonction de l'espace occupé par votre système.

Maintenant que vous êtes en possession d'une copie conforme de votre carte micro SD, vous pouvez à tout moment vous en servir pour remplacer celle en fonctionnement. Je précise, qu'il ne faut jamais remplacer la carte micro SD à chaud, c'est à dire que le Raspberry Pi doit être éteint (débranché).

Dorénavant, il ne vous est plus nécessaire de préciser le paramètre -f pour sauvegarder votre système. La simple commande rpi-clone sda suffit. Les curieux peuvent ajouter le paramètre -v (verbose mode) afin de voir quels sont les fichiers qui sont rajoutés à la sauvegarde qui sera bien plus rapide.

# sauvegarde synchonisée en mode verbose :

sudo rpi-clone sda -v

Et voilà, avec RPI-Clone, vous possédez une copie identique de votre système, sur une carte  prête à prendre le relais en cas de panne et que vous pouvez actualiser quand bon vous semble ( sauvegarde journalière, hebdomadaire, mensuelle....).