Ramfs

De ArchwikiFR

A propos

Cela consiste à créer un disque virtuel dans la mémoire-vive. Il s'agit donc d'un système de fichier volatile.

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

Pourquoi en utiliser un ?

Étant stocké dans la mémoire-vive, les accès à ces fichiers seront beaucoup plus rapides que depuis un disque (physique). Cela permet d'améliorer la gestion de l'énergie, ou dans le cas de mémoire flash (SSD ou autre), d'augmenter la durée de vie du disque-dur.

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

Différents types

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

  1. ramdisk : est aujourd'hui obsolète.
  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 permet de spécifier une limite de taille et autorise le système à swapper en cas de besoin.

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

La façon classique

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

Si rien n'est précisé dans /etc/fstab, 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.

Attention : L'utilisation d'une taille supérieure à la quantité de mémoire-vive disponible sur votre système peut mener à un crash de ce dernier

Avec Systemd

Systemd monte différents dossiers en tant que tmpfs (/tmp, /run...), ces points de montage n'apparaissent pas dans votre fstab et sont gérés par le service tmpfiles.

Systemd lit les fichiers de configurations situés dans /etc/tmpfiles.d/ et /usr/lib/tmpfiles.d. En cas de conflit entre, ceux situés dans /etc/tmpfiles.d priment.

La syntaxe de tels fichiers est la suivante:

/etc/tmpfiles.d/exemple.conf
#    Path                  Mode User  Group  Age  Argument
d    /point/de/montage     -    -     -      10d  -
  • Les lignes qui débutent pas le symbole dièse sont considérés comme des commentaires et seront ignorés.
  • La première lettre (ici un d) correspond à l'action que doit réaliser Systemd.
    • d: pour créer un répertoire
    • r: pour supprimer un répertoire
    • ...
  • Path: est le dossier à utilisé comme point de montage.
  • Mode: précise les droits d'accès.
  • User et Group: indiquent à qui devra appartenir le point de montage
  • Age: S'il est précisé, ce champs va permettre à Systemd de nétoyer régulièrement le point de montage. Dans l'exemple précédent, 10d va faire que tous les dix jours(day), le contenu sera effacé.
  • Argument: ajoute certaines précisions en rapport à l'action à effectuer.

Pour plus d'information se reporter à:

man 8 systemd-tmpfiles

et

man 5 tmpfiles.d

Avantages et inconvénients de chacune des méthodes

La méthode classique présente l'avantage d'être simple, et de centraliser la configuration à l'intérieure d'un seul fichier.

Mais, supposons que vous souhaitiez utiliser un tmpfs pour travailler sur un gros fichier (comme une vidéo de plusieurs centaines de Méga-octets...).

Vous devrez d'abord copier le fichier dans le tmpfs, ensuite vous travaillerez sur ledit fichier, et il faudra enfin le replacer dans un répertoire normal avant d'éteindre la machine.

Systemd peut rendre se processus transparent, et vous permet de travailler dans un tmpfs comme s'il s'agissait d'un dossier classique. Moyennant quelques secondes lors du démarrage, Systemd peut automatiser le processus de montage/copie/sauvegarde.

Prenez le temps de lire les pages de manuel, précédemment citées si vous souhaitez ce genre d'utilisation.

Utilisation

On peut imaginer toutes sortes d'utilisations :

  • Le cache du navigateur, sous Firefox par exemple, peut être placé en /tmp/$USER à l'aide de la clé browser.cache.disk.parent_directory depuis about:config ou depuis 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.
  • ...