Ramdisk, tmpfs et /dev/shm
Un ramdisk est un disque virtuel qui utilise une partie de la mémoire centrale de l’ordinateur si on en croit Wikipedia.
Par définition, les données stockées en RAM sont volatiles et donc un disque virtuel créé dans la RAM ne perdurera que tant que l’alimentation est présente ou tant qu’on ne démonte pas le disque. En contrepartie, l’avantage est une vitesse d’accès aux données très rapide et sans commune mesure avec ce que l’on peut avoir avec un disque dur.
tmpfs (anciennement ramfs) est le nom du système de fichier temporaire de Linux. Il est implémenté directement dans le noyau depuis la version 2.6 de celui-ci.
/dev/shm est l’implémentation d’un système de fichier temporaire de type tmpfs. Il est monté comme un disque dur mais les données sont écrites en RAM. Le nom shm vient de SHared Memory car souvent utilisé pour l’échange de données entre process.
Si vous ouvrez un terminal et que vous y tapez mount, vous devriez y trouver une ligne du genre de celle-ci:
$ mount ... tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) ...
Notez que sous Ubuntu, /dev/shm est un lien vers /run/shm.
Pour créer votre ramdisk, il suffit de faire quelque chose comme ceci:
$ mkdir /ramdisk $ chmod 777 /ramdisk $ sudo mount -t tmpfs -o size=512M tmpfs /ramdisk
Ceci crée un répertoire appelé ramdisk. On donne à ce répertoire la possibilité d’être utilisé par tous avec la commande chmod et pour terminer, on monte un système de fichiers tmpfs dans ce répertoire.
C’est tout.
Vous pouvez maintenant vous servir de ce répertoire ramdisk pour y stocker ce que vous voulez comme un répertoire normal avec la différence que les données stockées dedans sont écrites dans la mémoire au lieu du disque dur.
Usages
On a vu plus haut qu’un ramdisk permettait de gagner en vitesse d’écriture et de lecture par rapport au disque dur. On aura donc intérêt à utiliser un ramdisk lorsqu’une application doit lire et/ou écrire de nombreux fichiers temporaires. C’est typiquement le cas des compilations de code source mais il y a un cas beaucoup plus courant pour la plupart d’entre nous; les navigateurs comme Chromium ou Firefox utilise un répertoire cache dans lequel de nombreux fichiers temporaires sont lus et écrits lors de nos surfs sur Internet.
Par exemple, si vous voulez que le répertoire cache de Firefox se trouve sur /dev/shm/firefox, lancez Firefox, tapez dans la barre d’adresse about:config, modifiez les clefs suivantes pour qu’elles aient la bonne valeur:
browser.cache.disk.enable true browser.cache.memory.enable false
Et ajoutez la clef suivante si elle n’existe pas:
browser.cache.disk.parent_directory /dev/shm/firefox
Lorsque vous relancerez Firefox, il utilisera le cache en RAM que vous lui avez indiqué.
Vous avez maintenant en main toutes les informations nécessaires pour utiliser au mieux un disque virtuel en RAM. Faites-en bon usage.
Posted: février 18th, 2012 under Arch Linux, Debian, Ubuntu.
Comments: none
Tweet