Comment étendre l'espace tmpfs sous Linux

Contenu

Bash Shell

Avez-vous déjà entendu parler de tmpfs sur Linux? C'est ce petit système de fichiers temporaire qui réside en mémoire et est installé par défaut sur les distributions Linux. Ultra-rapide mais régulièrement limité en taille. Pouvez-vous facilement grandir? Savoir plus!

Qu'est que c'est tmpfs?

Tout dans un ordinateur a une certaine vitesse de fonctionnement native. Cela commence par le processeur (l'Unité Centrale de Traitement) Sur ton ordinateur, qui a un ensemble de caches L1-Lx (Niveau 1 au niveau x), ils sont très petits (par exemple, 16 Ko) mais ultra rapide (et probablement ultrarapide). -cher).

Après les caches CPU, sont les principales banques de mémoire, qui sont encore beaucoup plus rapides (et octet pour octet plus cher) que le disque dur, etc. Comme tu peux le voir, c'est une question de coût par rapport à la taille par rapport à la vitesse. La règle générale est que le coût augmente à mesure que la vitesse augmente et que la taille diminue pour limiter les coûts, etc.

Si vous avez stocké toutes vos données dans les puces de mémoire principale de votre ordinateur, ce qui est techniquement très faisable et assez simple à faire, son travail littéralement mouche par rapport à l'utilisation d'un seul disque, puisque les puces mémoire sont beaucoup plus rapides que la plupart des disques durs.

Malgré cela, il y a des limitations techniques avec cela. Une fois que vous éteignez votre ordinateur, vos fichiers vont disparaître. Un échec d'application irrécupérable pourrait suffire pour que vous deviez redémarrer votre ordinateur et perdre vos fichiers. En même temps, vous ne pourrez plus jamais éteindre votre ordinateur, à moins qu'il n'ait des fonctionnalités avancées (ça n'existe pas à ma connaissance) pour conserver vos fichiers sur des puces mémoire, équivalent à un cache compatible BBU (Unité de batterie de secours) dans un contrôleur de raid.

Malgré cela, notez qu'il existe une fonctionnalité équivalente (mais pas identique) à celui-ci que vous utilisez peut-être déjà: lorsque vous suspendez votre système à la RAM (à l'aide de dormir ou autre terminologie équivalente utilisée par les systèmes d'exploitation), une certaine puissance sera fournie en permanence à vos puces mémoire pour maintenir vos données à jour.

Ensuite, lorsque vous redémarrez votre système, tu peux reprendre là où tu t'étais arrêté. Mais l'arrêt tout en conservant le contenu de la mémoire n'est généralement pas utilisé avec les ordinateurs. Potentiellement, pourrait être utilisé par les tablettes intelligentes, même si l'on pourrait soutenir que de tels états ne sont pas de vrais états, mais plutôt des états de faible puissance.

Après avoir précisé comment, en termes générales, stocker vos fichiers sur des puces mémoire n'est probablement pas une idée solide, il y a d'autres utilisations où cela pourrait être utile. Par exemple, lors des tests / contrôle de la qualité du programme, il est susceptible de démarrer et de fermer le programme en cours de test généralement.

Ces fichiers sont temporaires et de peu de valeur individuelle. (sauf si un bug est trouvé, à quel point les données peuvent être recopiées sur le disque principal) et, En tant que tel, pourrait être stocké sur vos puces mémoire. Ceci est ce que tmpfs est et fait: C'est un système de fichiers temporaire dans votre mémoire. Certains d'entre vous pourraient immédiatement s'y opposer et dire: “C’est pas vrai”, et ils auraient raison. continuer la lecture.

Ceux qui s'y sont opposés auraient pu immédiatement prétendre que le tmpfs il n'est pas garanti que l'espace soit en mémoire, et c'est vrai. Tu peux voir tmpfs comme un hybride entre un vrai disque RAM (un disque créé en mémoire volatile) et un véritable stockage sur disque permanent. Dans certains cas, le noyau linux échangera le contenu de tmpfs dans l'espace d'échange du système, ça pourrait être sur le disque. Cela se fait de manière transparente (sans avoir besoin d'interaction avec l'utilisateur).

Pour plus d'informations sur la configuration d'un disque RAM, voir notre guide Comment créer un lecteur RAM sous Linux.

Votre courant tmpfs Taille

Maintenant que nous avons tmpfs espace mieux défini, Jetons un coup d'œil à la taille actuelle de votre tmpfs espacer. Pourrais-tu penser à lui tmpfs système en tant que lecteur virtuel, temporaire et volatile. Vous pouvez voir l'espace utilisé en utilisant df -h (utilisation de l'espace disque du système de fichiers (df) dans un format lisible par l'homme, Grace à -h option):

df -h | grep -Ei 'shm|Taille'

Vérification de l'utilisation actuelle de tmpfs à l'aide de df -h

Ici on utilise df -h (expliqué ci-dessus) combiné avec un tuyau (|) envoyer la sortie résultant de la df -h encore grep, en utilisant une extension (-E) formater l'expression régulière de manière insensible à la casse (-i ou simplement je lorsqu'il est combiné avec une autre alternative) choisir le premier titre (qui comprend le mot Size) et toute ligne contenant le texte shm.

La raison pour laquelle grep shm est-ce presque toujours, comme nous pouvons également le voir dans la sortie ici, l'espace tmpfs est alloué au répertoire du système de fichiers /dev/shm. Si la commande ci-dessus ne produit aucune sortie, juste courir df -h et passez en revue le total des résultats pour rechercher tmpfs espacer, Oui, il y a.

Notez que, par défaut, le système d'exploitation attribuera également / définira des espaces tmpfs, ça pourrait, par exemple, carte / monter le /sys/fs/cgroup, /run et /run/lock répertoires. N'essayez pas de les modifier.

En ce qui concerne /dev/shm et autres répertoires, note pour voir ces dossiers dans la structure de répertoire du système d'exploitation [arbre] ne signifie pas que les fichiers sont vraiment / physiquement stocké sur disque dans certains /dev/shm annuaire!

Cela signifie simplement que, selon et conformément à la manière standard de Linux de pouvoir monter des disques (o pour ce cas, tmpfs) dans n'importe quel répertoire de la hiérarchie du système de fichiers, s'il y avait des fichiers dans ce répertoire avant le montage , ils ne seraient tout simplement pas visibles jusqu'à ce que le point de montage soit abandonné.

Dans ce système particulier, les tmpfs l'espace est de 32 Go et presque tout n'est pas utilisé. Quel peu est utilisé (166 Mo) est la table des buts / index du répertoire lui-même, qui est invisible pour les utilisateurs, mais il est en place pour pouvoir stocker des fichiers dans la structure du système de fichiers. La taille du tmpfs il est, par défaut, la moitié de la mémoire système pour certains systèmes d'exploitation.

C'est un assez gros tmpfs et ce ne serait que techniquement justifié, jusqu'à un certain point, dans un système avec, par exemple, 40 Go ou plus de mémoire physique, même si, selon les circonstances, un cas d'utilisation particulier pourrait justifier d'autres configurations. En général, Je recommande de garder le tmpfs espace inférieur à, Disons, les 70-80% de la mémoire, et ce pourcentage serait nettement inférieur si la RAM (Mémoire vive, autre manière abrégée ou manière de se référer à la mémoire système) j'étais petit pour commencer.

La raison en est que vous souhaitez libérer suffisamment d'espace mémoire pour exécuter d'autres programmes., systèmes d'exploitation et services logiciels.

Par exemple, Je ne voudrais pas attribuer le 80% de mémoire si votre système avait 2 Go de mémoire, car cela laisserait probablement très peu pour que d'autres choses fonctionnent correctement ou pas du tout. Et, au contraire, a beaucoup de 256 Go de mémoire, incluant le 90% de ce (230,4 FR) j'en laisserais des bons 25 Go disponible, Quoi, selon le cas d'utilisation, pourrait (ou non) être assez.

En résumé, Je vous recommande de toujours ajuster la taille de tmpfs ça depend de 1) de combien d'espace avez-vous vraiment besoin dans tmpfs, 2) combien de mémoire est sur votre système et 3) combien de mémoire réelle les autres applications utilisent en même temps à partir de tmpfs (y compris vos opérations, prestations de service, etc.). L'expérience avec toutes ces choses aide ici.

Extension tmpfs dans votre système

Maintenant que nous connaissons la taille du flux tmpfs volume et quelle taille lui donner à l'avenir en utilisant certaines des considérations fournies dans le dernier paragraphe ci-dessus, on peut jeter un oeil pour agrandir (ou réduire) notre tmpfs espacer.

Le faire est assez simple. Tout ce que nous ferons, c'est, Au lieu que le système d'exploitation configure automatiquement le /dev/shm espace tmpfs pour nous, le mettre en place statiquement dans le /etc/fstab déposer, qui contrôle les mappages de lecteur au démarrage. Nous ajoutons simplement:

# <système de fichiers> <point de montage> <taper> <options options>                                       <Dépotoir> <passer>
tmpfs /dev/shm tmpfs par défaut,rw,nodev,Pas d'échec,pas d'heure,nosuid,taille = 2G   0      0

Al /etc/fstab Record. Ne copiez pas le premier commentaire (# préfixe), puisqu’il sera déjà là. En même temps, changer la 2G (2FR) selon vos besoins calculés / estimation de la taille tmpfs. il peut ne pas être utile de déterminer cette taille proche ou supérieure à la taille de la mémoire disponible, comme nous l'avons expliqué précédemment.

Les marques d’en-tête dans le /etc/fstab expliquer la signification des champs, et vous pouvez trouver plus d’informations dans le fstab Comment empêcher l'impression recto verso d'être la valeur par défaut sur macOS, qui peut être obtenu en tapant man fstab. Simplement, nous demandons au système d'exploitation de monter un tmpfs Système de fichiers (l'emplacement du système est en mémoire, donc au lieu de spécifier un périphérique, nous indiquons tmpfs.) et le genre tmpfs, monté sur /dev/shm.

Nous établissons également une série d'alternatives. Vous voudrez probablement quitter le defaults,rw,nodev,nofail au minimum (utiliser les valeurs par défaut, accès en lecture / l'écriture, aucun périphérique physique présent et n'arrêtez pas de démarrer le système d'exploitation si ce montage échoue de quelque manière que ce soit).

Vous pouvez également choisir de laisser les alternatives d'optimisation noatime,nosuid Si vous le souhaitez (ce qui est idéal pour tester / paramètres de contrôle qualité, car il le fera plus rapidement tout en gardant moins d'informations sur les fichiers dans l'espace tmpfs), ou tu peux les supprimer (et ses virgules correspondantes). En même temps, laisser (et changer / spécifier la taille) les size=xG paramètre. En résumé, nous avons une norme 0 0 pour dump and pass (arbitre man fstab pour plus d'informations sur ces deux options).

Une fois le changement effectué, il suffit de redémarrer votre système et de lancer df -h pour vérifier que vous /dev/shm L'espace tmpfs a maintenant la nouvelle taille que vous avez configurée. Si quelque chose ne va pas, Vérifiez simplement dmesg (tapé à l'invite de commande) et recherchez les messages d'erreur rouges (vous devrez probablement faire défiler) pour savoir ce qui s'est mal passé. Même quand quelque chose ne va pas, le système aurait dû démarrer correctement de toute façon, tant que vous n'avez pas supprimé le nofail option.

Pour les utilisateurs d'Ubuntu, Ça existe, malgré cela, un faisable erreur sans échec prêter attention. Il y avait une alternative pas d'attente option [au lieu], même s'il n'est pas clair s'il peut toujours être utilisé et, d'être comme ça, dans quelles versions d'Ubuntu et de ses dérivés [seul]. Comme alternative finale au test, tant que SystemD est utilisé, vous pourriez envisager d'utiliser x-systemd.device-timeout = 10 temps d'attente, où 10 est le nombre de secondes que l'on est prêt à attendre tout au long du démarrage.

Fin

Dans ce billet, nous analysons en profondeur tmpfs dimensionnement, en tenant compte du cas d'utilisation et d'autres facteurs.

Nous expliquons également tmpfs en détail, compris comment trouver la taille actuelle de la machine tmpfs Système de fichiers, et en bref regardé comment redimensionner les tmpfs.

Profitez de l'utilisation de tmpfs!

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.