tmpfs (Français)
Cela consiste à créer un disque virtuel dans la mémoire-vive. Il s'agit donc d'un système de fichier volatile.
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 :
- ramdisk : est aujourd'hui obsolète.
- 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.
- 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.
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 aux pages systemd-tmpfiles(8) et tmpfiles.d(5).
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
depuisabout:config
ou depuis leprefs.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.
- ...