tmpfs (Français)

From ArchWiki

État de la traduction: Cet article est la version francophone de Tmpfs. Date de la dernière traduction: 2022-04-30. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

tmpfs est un système de fichiers temporaire qui réside en mémoire et/ou sur une ou plusieurs partitions d'échange. Monter des répertoires en tant que tmpfs peut être un moyen efficace d'accélérer les accès à leurs fichiers ou de s'assurer que leur contenu est automatiquement effacé au redémarrage.

Astuce: Les fichiers temporaires dans les répertoires tmpfs peuvent être recréés au démarrage en utilisant systemd-tmpfiles.

Utilisation

Les répertoires où tmpfs(5) est couramment utilisé sont /tmp, /var/lock et /var/run. Ne l'utilisez pas sur /var/tmp, car ce répertoire est destiné aux fichiers temporaires qui sont préservés lors des redémarrages.

Arch utilise un répertoire tmpfs /run, avec /var/run et /var/lock existant simplement comme liens symboliques pour la compatibilité. Il est également utilisé pour /tmp par la configuration par défaut de systemd et ne nécessite pas d'entrée dans fstab sauf si une configuration spécifique est nécessaire.

glibc 2.2 et supérieur s'attend à ce que tmpfs soit monté sur /dev/shm pour POSIX shared memory. Le montage de tmpfs sur /dev/shm est géré automatiquement par systemd et une configuration manuelle dans fstab n'est pas nécessaire.

En général, les tâches et les programmes qui exécutent des opérations de lecture/écriture fréquentes peuvent bénéficier de l'utilisation d'un répertoire tmpfs. Certaines applications peuvent même bénéficier d'un gain substantiel en déchargeant une partie (ou la totalité) de leurs données sur la mémoire partagée. Par exemple, la relocalisation du profil de Firefox en RAM montre une amélioration significative des performances.

Exemples

Note: La consommation réelle de mémoire/swap dépend de la quantité utilisée, car les partitions tmpfs ne consomment pas de mémoire avant d'en avoir réellement besoin.

Par défaut, la taille maximale d'une partition tmpfs est fixée à la moitié de la RAM disponible, mais il est possible de modifier cette valeur. Pour définir explicitement une taille maximale, dans cet exemple pour remplacer le montage /tmp par défaut, utilisez l'option de montage size :

/etc/fstab
tmpfs /tmp tmpfs rw,nodev,nosuid,size=2G 0 0

Pour spécifier un montage plus sécurisé, spécifiez l'option de montage suivante :

/etc/fstab
tmpfs /www/cache tmpfs rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=user,gid=group,mode=1700 0 0

Consultez la page de manuel tmpfs(5) et Security#File systems pour plus d'informations.

Redémarrez pour que les changements prennent effet. Notez que même s'il peut être tentant d'exécuter simplement mount -a pour que les changements prennent effet immédiatement, cela rendra inaccessibles tous les fichiers résidant actuellement dans ces répertoires (ceci est particulièrement problématique pour l'exécution de programmes avec des fichiers de verrouillage, par exemple). Cependant, si tous ces répertoires sont vides, il devrait être sûr d'exécuter mount -a au lieu de redémarrer (ou de les monter individuellement).

Après avoir appliqué les changements, vérifiez qu'ils ont pris effet en regardant dans /proc/mounts et en utilisant findmnt :

$ findmnt /tmp
SOURCE CIBLE OPTIONS FSTYPE
/tmp tmpfs tmpfs rw,nosuid,nodev,relatime

Les tmpfs peuvent également être temporairement redimensionnés sans avoir besoin de redémarrer, par exemple lorsqu'un gros travail de compilation doit être exécuté prochainement. Dans ce cas, exécutez :

# mount -o remount,size=4G,noatime /tmp

Désactiver le montage automatique

Sous systemd, /tmp est automatiquement monté en tant que tmpfs, si ce n'est pas déjà un point de montage dédié (soit tmpfs, soit sur le disque) dans /etc/fstab. Pour désactiver le montage automatique, masquez l'unité tmp.mount.

Les fichiers ne seront plus stockés dans un tmpfs, mais sur le périphérique de type bloc à la place. Le contenu de /tmp sera maintenant préservé entre les redémarrages, ce qui peut ne pas être le comportement souhaité. Pour retrouver le comportement précédent et nettoyer le répertoire /tmp automatiquement au redémarrage, pensez à utiliser tmpfiles.d(5) :

/etc/tmpfiles.d/tmp.conf
# consultez tmpfiles.d(5)
# toujours activer le nettoyage du répertoire /tmp
D ! /tmp 1777 root root 0

# supprimer les fichiers de /var/tmp vieux de plus de 10 jours
D /var/tmp 1777 root root 10d

# les points de montage des espaces de noms (PrivateTmp=yes) sont exclus de la suppression
x /tmp/systemd-private-*
x /var/tmp/systemd-private-*
X /tmp/systemd-private-*/tmp
X /var/tmp/systemd-private-*/tmp

Dépannage

L'ouverture de liens symboliques dans tmpfs en tant que root échoue

Si /tmp utilise tmpfs, changez le répertoire actuel en /tmp, puis créez un fichier et un lien symbolique vers ce fichier dans le même répertoire /tmp. Il faut s'attendre à des erreurs de permission refusée lors de la tentative de lecture du lien symbolique car /tmp a le bit collant activé.

Ce comportement peut être contrôlé via /proc/sys/fs/protected_symlinks ou simplement via sysctl : sysctl -w fs.protected_symlinks=0. Consultez Sysctl#Configuration pour rendre cela permanent.

Attention: Modifier ce comportement peut entraîner des problèmes de sécurité!

Voir aussi