tmpfs(5)

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

DESCRIPTION
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).

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

size=octets
    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%.

nr_blocks=blocs
    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 %.

nr_inodes=inœuds
    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 %.

mode=mode
    Définir les permissions initiales du répertoire racine.

gid=gid (depuis Linux 2.5.7)
    Définir l’ID de groupe initial du répertoire racine.

uid=uid (depuis Linux 2.5.7)
    Définir l’ID utilisateur du répertoire racine.

huge=option_large (depuis Linux 4.7.0)
    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 :

    never
        Ne pas allouer de pages larges. C’est la valeur par défaut.

    always
        Essayer d’allouer des pages larges chaque fois qu’une nouvelle page est nécessaire.

    within_size
        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).

    advise
        Allocation de pages larges seulement si cela est préconisé par fadvise(2) ou madvise(2).

    deny
        Utilisation en cas d’urgence pour forcer tous les montages sans l'option large.

    force
        Obligation de l’option large pour tous les montages (utile pour des tests).

mpol=option_polm (depuis Linux 2.6.15)
    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 :

    default
        Utilisation de la politique d’allocation du processus (consulter set_mempolicy(2)).

    prefer:nœud
        De préférence, allocation de la mémoire à partir du nœud indiqué.

    bind:liste_nœuds
        Allocation de la mémoire à partir des nœuds de liste_nœuds.

    interleave
        Allocation à partir de chaque nœud à tour de rôle.

    interleave:liste_nœuds
        Allocation à partir de chaque nœud dans liste_nœuds à tour de rôle.

    local
        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.

VERSIONS
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.

NOTES
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.

VOIR AUSSI
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.

TRADUCTION
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.