Ramfs

De ArchwikiFR

A propos

Cela consiste à simuler un système de fichiers en mémoire, donc volatile.

Attention : tout ce que contient ce disque sera perdu si le système plante ou lors de l'arrêt, il est donc important de prévoir la sauvegarde du contenu si vous voulez le garder.

Pourquoi en utiliser un ?

Du fait que c'est stocké en RAM, les accès sont beaucoup plus rapides. De plus, utiliser la RAM plutôt que le disque (mécanique) peut améliorer la gestion d'énergie, ou dans le cas de mémoire flash (SSD ou autre), augmenter la durée de vie.

Étant donné la quantité de RAM disponible dans les configurations actuelles, on peut sans limiter les performances en utiliser des centaines de Mo pour ça.

Différents types

Il existe 3 manières d'utiliser un système de fichiers en RAM :

  1. ramdisk : l'implémentation la plus vieille, elle nécessite une configuration au niveau du noyau, limite la taille disponible (à 16 Mo par défaut) et nécessite le chargement du module brd. Elle était utilisée pour l'image initrd avant le noyau 2.6.
  2. ramfs : utilisé actuellement pour les images générées par mkinitcpio, elle n'est pas limitée en taille sans pour autant pouvoir en spécifier une et comporte donc un risque de saturation de mémoire si elle est mal utilisée.
  3. tmpfs : dernière implémentation en date, basée sur ramfs. On peut spécifier une limite de taille, et le système permet de swapper en cas de besoin de RAM.

Création d'un système de fichiers tmpfs

Cela se fait de la même façon qu'avec n'importe quelle partition, en spécifiant none comme périphérique et tmpfs comme type de fichier :

mount -t tmpfs none /chemin/de/montage

Pour /etc/fstab :

none /chemin/de/montage tmpfs defaults 0 0

Les permissions par défaut du point de montage seront 1777 ("rwxrwxrwxt"), comme celles de /tmp, on peut les modifier avec mount ou chmod :

mount -t tmpfs none /chemin/de/montage -o mode=755
# ou
chmod 755 /chemin/de/montage

L'autre option intéressante est size qui peut prendre une valeur représentant la taille de la partition. On peut rajouter k,m,g ou % pour spécifier la taille en kilo, méga, giga ou en pourcentage par rapport à la taille totale de la RAM. Si l'on omet l'option size, la taille est celle de /dev/shm qui est par défaut 50% de la RAM.

Exemple d'utilisation

L'utilisation la plus courante consiste à monter le /tmp en tmpfs en le spécifiant dans le /etc/fstab :

none /tmp tmpfs defaults 0 0


Mais on peut imaginer toutes sortes d'utilisations :

  • Le cache du navigateur, sous Firefox par exemple, on peut le mettre sous /tmp/$USER à l'aide de la clé browser.cache.disk.parent_directory depuis about:config ou dans le prefs.js de votre profile.
  • Un répertoire pour la compilation.
  • Les journaux de log. Ceci implique quand même une augmentation du temps de démarrage et d'arrêt pour charger et sauvegarder le contenu du répertoire sur le disque.
  • ...