tmpfs(5) File Formats Manual tmpfs(5)

tmpfs – Système de fichiers en mémoire virtuelle

La fonctionnalité tmpfs permet de créer des systèmes de fichiers dont le contenu réside en mémoire virtuelle. Puisque les fichiers de tels systèmes de fichiers résident classiquement en mémoire vive, l’accès aux fichiers est extrêmement rapide.

Le système de fichiers est automatiquement créé lors du montage d’un système de fichiers de type tmpfs à l’aide d’une commande telle que :


$ sudo mount -t tmpfs -o size=10M tmpfs /mnt/tmpfs_perso

Un système de fichiers tmpfs possède les propriétés suivantes :

  • le système de fichiers peut utiliser l’espace d’échange (swap) lorsque la charge sur la mémoire physique l’exige ;
  • le système de fichiers utilise autant de mémoire physique et d’espace d’échange que nécessaire pour stocker le contenu actuel du système de fichiers ;
  • lors d’une opération de remontage (mount -o remount), la taille du système de fichiers peut être changée (sans perdre le contenu existant du système de fichiers).

Si un système de fichiers tmpfs est démonté, son contenu est abandonné (perdu).

Le système de fichiers tmpfs gère les options de montage suivantes :

Limite supérieure de la taille du système de fichiers. La taille est indiquée en octets et arrondie aux pages entières.
La taille peut avoir comme suffixe k, m ou g pour Ki (kibi : kilo binaire), Mi (mébi : méga binaire), Gi (gibi : giga binaire).
La taille peut aussi avoir un suffixe % pour limiter une instance à un pourcentage de la mémoire RAM physique.
La valeur par défaut si ni size ni nr_blocks ne sont indiqués est size=50%.
La même chose que size, mais en blocs de PAGE_CACHE_SIZE.
Les blocs peuvent être indiqués avec les suffixes k, m ou g comme pour size, mais pas avec un suffixe %.
Le nombre maximal d’inœuds pour cette instance. La valeur par défaut est la moitié du nombre d’inœuds des pages de RAM physiques ou (sur une machine avec mémoire haute) le nombre de pages en mémoire basse de RAM, en adoptant la valeur la plus basse des deux.
Les inœuds peuvent être indiqués avec les suffixes k, m ou g comme pour size, mais pas avec un suffixe %.
Définir les permissions initiales du répertoire racine.
Définir l’ID de groupe initial du répertoire racine.
Définir l’ID utilisateur du répertoire racine.
Définir la politique d’allocation en mémoire de pages larges pour tous les fichiers de l’instance (si CONFIG_TRANSPARENT_HUGEPAGE est activé).
La valeur de option_large est une des suivantes :
Ne pas allouer de pages larges. C’est la valeur par défaut.
Essayer d’allouer des pages larges chaque fois qu’une nouvelle page est nécessaire.
Allocation d’une page large uniquement si elle ne dépasse pas la taille de fichier (i_size). Respecter aussi les préconisations de fadvise(2) et madvise(2).
Allocation de pages larges seulement si cela est préconisé par fadvise(2) ou madvise(2).
Utilisation en cas d’urgence pour forcer tous les montages sans l'option large.
Obligation de l’option large pour tous les montages (utile pour des tests).
Définir la politique d’allocation de mémoire NUMA pour tous les fichiers de l’instance (si CONFIG_NUMA est activé).
La valeur de option_polm est une des suivantes :
Utilisation de la politique d’allocation du processus (consulter set_mempolicy(2)).
De préférence, allocation de la mémoire à partir du nœud indiqué.
Allocation de la mémoire à partir des nœuds de liste_nœuds.
Allocation à partir de chaque nœud à tour de rôle.
Allocation à partir de chaque nœud dans liste_nœuds à tour de rôle.
De préférence, allocation de la mémoire à partir du nœud local.
Ci-dessus, liste_nœuds est une liste de nombres décimaux et d’intervalles, séparés par des virgules, qui précisent les nœuds NUMA. Un intervalle est une paire de nombres décimaux séparés par des tirets, et qui correspondent aux numéros des nœuds le plus petit et le plus grand de l’intervalle. Par exemple, polm=bind:0-3,5,7,9-15.

La fonctionnalité tmpfs a été ajoutée dans Linux 2.4, en tant que successeur de l’ancienne fonctionnalité ramfs qui ne fournissait pas de vérifications de limite ou ne permettait pas l’utilisation d’espace d’échange.

Pour que les outils et les applications en espace utilisateur puissent créer des systèmes de fichiers tmpfs, le noyau doit être configuré avec l’option CONFIG_TMPFS.

Le système de fichiers tmpfs prend en charge les attributs étendus (consulter xattr(7)), mais les attributs étendus d’utilisateur ne sont pas permis.

Un système de fichiers interne en mémoire partagée est utilisé pour la mémoire partagée de System V (shmget(2)) et pour des mappages partagés anonymes (mmap(2) avec les drapeaux MAP_SHARED et MAP_ANONYMOUS). Ce système de fichiers est disponible que le noyau ait été configuré avec l’option CONFIG_TMPFS ou non.

Un système de fichiers tmpfs monté sur /dev/shm est utilisé pour l’implémentation de la mémoire partagée POSIX (shm_overview(7)) et des sémaphores POSIX (sem_overview(7)).

La quantité de mémoire utilisée par tous les systèmes de fichiers tmpfs est indiquée dans le champ Shmem de /proc/meminfo et dans le champ shared affiché par free(1).

La fonctionnalité tmpfs était précédemment appelée shmfs.

df(1), du(1), memfd_create(2), mmap(2), set_mempolicy(2), shm_open(3), mount(8)

Les fichiers des sources du noyau Documentation/filesystems/tmpfs.txt et Documentation/admin-guide/mm/transhuge.rst.

La traduction française de cette page de manuel a été créée par Alain Portal <aportal@univ-montp2.fr>, Christophe Blaess https://www.blaess.fr/christophe/, Danny <dannybrain@noos.fr>, David Prévot <david@tilapin.org>, Denis Barbier <barbier@debian.org>, Florentin Duneau <fduneau@gmail.com>, François Micaux, François Wendling <frwendling@free.fr>, Frédéric Delanoy <delanoy_f@yahoo.com>, Gérard Delafond <gerard@delafond.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Julien Cristau <jcristau@debian.org>, Nicolas François <nicolas.francois@centraliens.net>, Philippe Batailler, Romain Doumenc <rd6137@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, Thomas Huriaux <thomas.huriaux@gmail.com>, Thomas Vincent <tvincent@debian.org> et Éric Piel <eric.piel@tremplin-utc.net>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.

28 juillet 2023 Pages du manuel de Linux 6.05.01