Comment agrandir l’espace tmpfs sous Linux –
Avez-vous déjà entendu parler de tmpfs sous Linux? C’est ce petit système de fichiers temporaire résidant dans la mémoire et installé par défaut sur les distributions Linux. Ultra-rapide mais généralement de taille limitée. Peut-on le cultiver facilement? En savoir plus!
Sommaire
Qu’est-ce que tmpfs?
Tout ce qui se trouve à l’intérieur d’un ordinateur a une certaine vitesse de fonctionnement native. Cela commence par le CPU (l’unité centrale de traitement) de votre ordinateur, qui dispose d’un ensemble de caches L1-Lx (niveau 1 à niveau x), qui sont très petits (par exemple, 16 Ko) mais ultra-rapides (et probablement ultra -cher).
Après la mise en cache du processeur, il y a les banques de mémoire principales, qui sont encore beaucoup plus rapides (et octet par octet plus chères) que le disque dur et ainsi de suite. Comme vous pouvez le voir, il s’agit du 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 le coût, etc.
Si vous stockiez toutes vos données dans les puces de mémoire principale de votre ordinateur, ce qui est techniquement ultra-possible et plutôt facile à faire, votre travail serait littéralement mouche par rapport à l’utilisation du disque seul, car les puces de mémoire sont beaucoup plus rapides que la plupart des disques durs.
Il y a cependant quelques limitations techniques à cela. Une fois que vous avez éteint votre ordinateur, vos fichiers auront disparu. Un plantage irrécupérable de l’application pourrait suffire à vous obliger à redémarrer votre ordinateur et à perdre vos fichiers. De plus, vous ne pourriez plus jamais éteindre votre ordinateur, à moins qu’il n’ait une fonctionnalité avancée (qui n’existe pas pour autant que je sache) pour conserver vos fichiers dans les puces de mémoire, similaire à un cache pris en charge par BBU (Battery Backup Unit). sur un contrôleur de raid.
Notez qu’il existe cependant une fonctionnalité similaire (mais non identique) à celle-ci que vous utilisez peut-être déjà: lorsque vous suspendez votre système en RAM (en utilisant dormir ou toute autre terminologie employée par les systèmes d’exploitation), une certaine puissance sera continuellement fournie à vos puces mémoire pour conserver leurs données actuelles.
Ensuite, lorsque vous redémarrez votre système, vous pourrez continuer là où vous vous étiez 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. Il pourrait potentiellement être utilisé par des tablettes intelligentes, bien que l’on puisse affirmer que de tels états ne sont pas de véritables états d’arrêt, mais plutôt des états de faible puissance.
Après avoir clarifié comment, d’une manière générale, ce n’est probablement pas une idée solide de sauvegarder vos fichiers sur des puces mémoire, il y a d’autres utilisations où cela pourrait être utile. Par exemple, lorsque vous effectuez des tests / assurance qualité par rapport à des programmes, vous allez probablement démarrer et arrêter le programme testé plusieurs fois.
Ces fichiers sont temporaires et de peu de valeur individuelle (sauf si un bogue est trouvé, à quel point les données peuvent être recopiées sur le disque principal), et en tant que tels, peuvent être stockés dans vos puces mémoire. C’est quoi tmpfs
est et fait: C’est un système de fichiers temporaire dans votre mémoire. Certains d’entre vous pourraient immédiatement objecter et dire: «Ce n’est pas vrai», et vous auriez raison. Continuer à lire.
Ceux qui s’y seraient opposés auraient pu immédiatement affirmer que le tmpfs l’espace n’est pas garanti dans la 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 stockage sur disque permanent réel. Dans certains cas, le noyau Linux échangera le contenu tmpfs dans l’espace d’échange système, qui pourrait se trouver sur le disque. Cela se fait de manière transparente (sans intervention de l’utilisateur).
Si vous souhaitez en savoir plus sur la configuration d’un disque RAM, consultez 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
espace. Vous pourriez penser au tmpfs
système comme un lecteur virtuel, temporaire et volatil. Vous pouvez voir l’espace utilisé en utilisant df -h
(utilisation de l’espace disque du système de fichiers (df
) au format lisible par l’homme, grâce au -h
option):
df -h | grep -Ei 'shm|size'
Ici, nous utilisons df -h
(expliqué ci-dessus) combiné avec un tuyau (|
) pour envoyer la sortie résultante du df -h
à un grep
, qui utilise une extension (-E
) format regex sans tenir compte de la casse (-i
ou simplement je lorsqu’il est combiné avec une autre option) pour sélectionner le titre supérieur (qui comprend le mot Size
) et toute ligne contenant le texte shm
.
La raison pour laquelle nous grep shm
est que presque toujours, comme nous pouvons également le voir dans la sortie ici, l’espace tmpfs est mappé au répertoire du système de fichiers /dev/shm
. Si la commande ci-dessus ne génère aucune sortie, exécutez simplement df -h
et examinez le total des résultats à rechercher tmpfs
espace, le cas échéant.
Notez que par défaut, le système d’exploitation allouera / définira également des espaces tmpfs, qui pourraient, par exemple, être mappés / montés sur le /sys/fs/cgroup
, /run
et /run/lock
répertoires. N’essayez pas de les modifier.
En ce qui concerne la /dev/shm
et d’autres répertoires, veuillez noter que voir ces dossiers dans la structure des répertoires du système d’exploitation [tree] ne signifie pas que les fichiers sont réellement / physiquement stockés sur le disque dans certains /dev/shm
annuaire!
Cela signifie simplement que, selon et conformément à la manière standard de Linux de pouvoir monter des lecteurs (ou dans ce cas, tmpfs) sur n’importe quel répertoire de la hiérarchie du système de fichiers, s’il y avait des fichiers dans un tel répertoire avant le montage , ils ne seraient tout simplement pas visibles tant que le point de montage ne serait pas supprimé.
Sur ce système particulier, le tmpfs
l’espace est de 32 Go, et presque tout cela est inutilisé. Le peu qui est utilisé (166 Mo) est la table de méta / index des répertoires elle-même, qui est invisible pour les utilisateurs, mais en place pour pouvoir stocker des fichiers dans la structure du système de fichiers. La taille du tmpfs
est, par défaut, la moitié de la mémoire système pour des systèmes d’exploitation donnés.
C’est un assez grand tmpfs
et ne serait techniquement justifié, dans une certaine mesure, que sur un système avec, par exemple, 40 Go ou plus de mémoire physique, bien que, selon les circonstances, un cas d’utilisation particulier puisse justifier d’autres configurations. En général, je recommande de garder le tmpfs
moins d’espace que, disons, 70-80% de la mémoire, et ce pourcentage serait nettement inférieur si la RAM (Mémoire vive, un autre raccourci ou une façon de faire référence à la mémoire de votre système) était petit pour commencer.
La raison en est que vous souhaitez laisser suffisamment d’espace mémoire disponible pour exécuter d’autres programmes, systèmes d’exploitation et services logiciels.
Par exemple, vous ne voudriez pas allouer 80% de mémoire si votre système avait 2 Go de mémoire, car cela laisserait probablement beaucoup trop peu pour que d’autres choses fonctionnent correctement ou pas du tout. Si, d’un autre côté, vous avez 256 Go de mémoire, même 90% de celle-ci (230,4 Go) laisserait un joli 25 Go disponible, ce qui, selon le cas d’utilisation, pourrait (ou non) être suffisant.
En résumé, je vous recommande de toujours régler la taille de tmpfs
en fonction 1) de la quantité d’espace dont vous avez vraiment besoin dans tmpfs, 2) de la quantité de mémoire dans votre système, et 3) de la quantité de mémoire réelle que d’autres applications utilisent en plus de tmpfs (y compris votre fonctionnement, vos services, etc.). L’expérience de toutes ces choses est utile ici.
Agrandissement tmpfs sur votre système
Maintenant que nous connaissons la taille du courant tmpfs
volume et quelle taille lui donner à l’avenir en utilisant certaines des considérations fournies dans le dernier paragraphe ci-dessus, nous pouvons envisager d’agrandir (ou de réduire) notre tmpfs
espace.
Le faire est assez simple. Tout ce que nous avons à faire est, plutôt que de laisser le système d’exploitation configurer automatiquement le /dev/shm
tmpfs pour nous, définissez-le statiquement à la place dans le /etc/fstab
fichier, qui contrôle les mappages de lecteurs au démarrage. On ajoute simplement:
# <file system> <mount point> <type> <options> <dump> <pass> tmpfs /dev/shm tmpfs defaults,rw,nodev,nofail,noatime,nosuid,size=2G 0 0
au /etc/fstab
déposer. Ne copiez pas le premier remarqué (#
préfixée), car elle sera déjà là. Modifiez également le 2G
(2 Go) à votre exigence calculée / estimée pour la taille tmpfs. Il n’est probablement pas utile de définir ce paramètre proche ou supérieur à la taille de la mémoire disponible, comme nous l’avons expliqué précédemment.
Les marquages d’en-tête dans le /etc/fstab
clarifier la signification des champs, et vous pouvez trouver plus d’informations dans le fstab
manuel, qui peut être obtenu en tapant man fstab
. Fondamentalement, 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 plutôt que de spécifier un périphérique, nous indiquons tmpfs
.) et celle du type tmpfs
, monté à /dev/shm
.
Nous avons également défini un certain nombre d’options. Vous voudrez probablement quitter le defaults,rw,nodev,nofail
au minimum (utilisez les valeurs par défaut, accès en lecture / écriture, aucun périphérique physique présent et ne manquez pas de démarrer le système d’exploitation si ce montage échoue d’une manière ou d’une autre.).
Vous pouvez également choisir de laisser les options d’optimisation noatime,nosuid
si vous le souhaitez (ce qui est idéal pour tester les configurations / QA, car cela le rendra plus rapide tout en gardant moins d’informations sur les fichiers sur l’espace tmpfs), ou vous pouvez les supprimer (et leurs virgules correspondantes). Aussi, laissez (et modifiez / spécifiez la taille) le size=xG
paramètre. Enfin, nous avons une version plutôt standard 0 0
pour dump and pass
(réf man fstab
pour plus d’informations sur ces deux options).
Une fois le changement effectué, redémarrez simplement votre système et exécutez df -h
pour vérifier que votre /dev/shm
L’espace tmpfs a maintenant la nouvelle taille que vous lui avez définie. Si quelque chose ne va pas, vérifiez simplement dmesg
(tapé à votre invite de commande) et scannez vers le haut pour tous les messages d’erreur rouges (vous devrez probablement faire défiler.) pour savoir ce qui ne va pas. Même si quelque chose s’est mal passé, le système aurait dû démarrer correctement de toute façon, à condition que vous n’ayez pas supprimé le nofail
option.
Pour les utilisateurs d’Ubuntu, il existe cependant un bogue nofail possible dont il faut être conscient. Il y avait une autre option nobootwait [instead], bien qu’il ne soit pas clair si cela est toujours utilisable et si oui, sur quelles versions d’Ubuntu et de ses dérivés [only]. Comme alternative finale au test, à condition que SystemD soit utilisé, on pourrait envisager d’utiliser x-systemd.device-timeout = 10 timeout, où 10 est le nombre de secondes que l’on est prêt à attendre au démarrage.
Emballer
Dans cet article, nous avons examiné de manière approfondie tmpfs
dimensionnement, en gardant à l’esprit le cas d’utilisation et d’autres facteurs.
Nous avons également expliqué tmpfs
en détail, découvert comment trouver la taille actuelle de la machine tmpfs
système de fichiers, et enfin regardé comment redimensionner tmpfs.
Profitez de l’utilisation de tmpfs!