Le Raspberry Pi utilise une carte flash en guise de disque dur. A force d'écritures ce support s'use à petit feu.
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
6 commentaires
Hello !
Article intéressant pour moi, parce que justement j'essaie d'installer Ubuntu 15.04 sur un RPi2, et je cherche en vain un moyen de l'installer sur une clé USB, en gardant juste le bootfs sur la carte SD, comme ça se fait avec Raspbian et autres.
Avec ton article je me dis que, faute de mieux, je peux envoyer la RAMDisk sur l'USB, ce sera déjà ça de gagné. Vais essayer ce weekend.
Merci 😉
@DV: je t'invite à lire cet excellent billet en complément chez framboise314 http://www.framboise314.fr/booter-le-raspberry-pi-sur-un-disque-dur-usb/
Sur quelle commande doit-on mettre des tabulations à la place des espaces ?
Merci !!!
@Loulou52474: sur la ligne précédent la phrase