(modifié le 8 avril 2018 à 17:47)

Le Raspberry Pi utilise une carte flash en guise de disque dur. A force d'écritures ce support s'use à petit feu.

ramdisk-rpi

J'ai opté pour la création d'un ramdisk sur mon Raspberry Pi, c'est un disque virtuel aussi connu en tant que RAM drive. Cela permet de soulager les accès en écriture de la microSD de mon RPi B+. Bien sûr cette astuce fonctionne avec tous les modèles de RPi avec un OS GNU/Linux (Raspbian chez moi).

La taille du RamDisk

Faire un ramdisk c'est réserver de la mémoire vive pour y stocker des fichiers, comme on le ferait avec un disque dur, une clé usb, une carte sd, etc. J'utilise cette méthode pour créer une image capturée avec la RaspiCam. Avec un cron qui génère cette image régulièrement il est préférable de basculer l'image en ramdisk.

Un Raspberry Pi n'a que très peu de RAM à disposition, surtout si vous utilisez la partie graphique. Il faut donc créer un ramdisk de taille raisonnable et en tenant compte de la mémoire libre disponible. Seul le Raspberry Pi 2 dispose de 1G de RAM, 512 M pour le modèle B et B+ et 256 M pour le modèle A+.

Attention à ne pas créer un ramdisk trop volumineux car si votre Raspberry Pi n'a plus assez de mémoire vive pour fonctionner il va swaper et c'est la carte microSD qui va souffrir. Hors c'est justement ce que l'on veut éviter au départ.

Pour connaître la mémoire vive disponible :
free -h
En dessous de "free" apparaît la mémoire vive disponible en Mo. Dans mon cas j'ai 111 Mo de libre.

Pour savoir à quoi correspond "-/+ buffers/cache" je vous invite à lire ce billet chez IT-Connect.

Création

Je désire créer un ramdisk de 10 mo.

Voici le résultat d'un df :
$ df -h
Sys. fich. Taille Util. Dispo Uti% Monté sur
/dev/root 1,8G 1,4G 298M 83% /
devtmpfs 182M 0 182M 0% /dev
tmpfs 38M 268K 37M 1% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 75M 0 75M 0% /run/shm
/dev/mmcblk0p1 56M 20M 37M 36% /boot

Il faut créer un dossier qui servira de point de montage, à la racine pour mon cas :
sudo mkdir /ramdisk

Ouvrir le fichier /etc/fstab :
sudo nano /etc/fstab

Et ajouter ceci (size=x : taille du ramdisk) :
tmpfs /ramdisk tmpfs nodev,nosuid,size=10M 0 0

Attention : n'utilisez pas des espaces mais des tabulations, sinon le Rapsberry Pi risque de rémarrer en mode recovery.

Engistrer et fermer.

Pour une prise en compte immédiate :
sudo mount -a
Vérifions maintenant à nouveau avec df :
$ df -h
Sys. fich. Taille Util. Dispo Uti% Monté sur
/dev/root 1,8G 1,4G 298M 83% /
devtmpfs 182M 0 182M 0% /dev
tmpfs 38M 268K 37M 1% /run
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 75M 0 75M 0% /run/shm
/dev/mmcblk0p1 56M 20M 37M 36% /boot
tmpfs 10,0M 0 10,0M 0% /ramdisk

Nous avons bien notre ramdisk sur la dernière ligne (vous pouvez aussi passer un script stocké dans /etc/rc.local).

Création à la mano

Besoin d'un ramdisk temporaire :
mount -t tmpfs -o size=10m tmpfs /ramdisk

Dans ce cas il ne montera pas au boot.

Conclusion

Si vous avez un NAS sur votre réseau vous pouvez aussi utiliser celui-ci pour écrire du contenu à travers un montage NFS ou SMB. De même que si vous avez une vieille clé USB inutile, autant l'user plutôt que ce soit la carte (micro)sd qui s'en prenne plein la tête.

Attention à ne rien stocker d'important dans ce ramdisk car à chaque perte de courant et redémarrage son contenu sera vidé, ne l'utilisez uniquement comme un tampon (espace temporaire).

Pour déplacer le point de montage tmp en ramdisk suivez ce tutoriel. Vous pouvez aussi utiliser tmpfs qui sait un mieux gérer qu'un simple ramdisk. Et si vous voulez recopier le contenu du Ramdisk une fois par jour sur la carte microSD suivez ce tutoriel.

 

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter