Après avoir vu le commentaire de Anonymous sur la question Comment le répertoire / tmp est-il nettoyé? , J’ai trouvé que ce serait une bonne idée de l’implémenter sur mon système, car j’ai 16 Go de RAM et je n’ai jamais utilisé tout cela.
Mes fichiers temporaires ne sont jamais écrits sur le disque. Ils sont écrits sur un disque RAM. J'ai mis
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
dans / etc / fstab.
Ma question est:
Puis-je définir une valeur maximale pour l'utilisation de la RAM pour /tmp
? Et dans ce cas, que se passerait-il si le montant maximum était dépassé, serait-il écrit dans le lecteur de disque dur?
J'ai lu une solution qui dit:
mkdir -p /tmp/ram sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/
Mais à mon sens, ce ne sera pas une solution permanente. Si j'ai besoin que ce soit permanent, il doit être ajouté au /etc/fstab
fichier de configuration.
Si c'est la bonne solution, comment puis-je transformer cette commande de montage en une ligne /etc/fstab
?
Réponses:
Tu as tout à fait raison. L'entrée correspondante dans fstab ressemblerait à ceci:
Notez s'il vous plaît:
Une fois
tmpfs
rempli, il se comportera comme tout disque dur physique en donnant une erreur «pas assez d’espace». Lors du redémarrage (et donc du vidage du cache), le problème peut être résolu lorsqu'une seule opération consomme plus d'espace au début que d'espace disponibletmpfs
. Dans ce cas, votre ordinateur commencera à permuter de la mémoire vive (RAM) vers le disque, ce qui ralentira considérablement votre système, étant donné que vous avez une partition de swap pour commencer, bien sûr.Compte tenu de cela, une taille de 512 Mo pourrait être beaucoup moins, de nos jours, car il existe beaucoup plus de bélier dans les machines modernes et il est devenu beaucoup moins cher. Comme vous avez déjà 16 Go de RAM, utiliser la valeur par défaut de la moitié de votre RAM
tmpfs
devrait largement suffire dans presque tous les scénarios. Pour utiliser la valeur par défaut, laissez simplement de côté l'size=512M
entrée dans votre/etc/fstab
fichier.Une autre note:
Vous pouvez aussi facilement monter d’autres dossiers système sur un disque mémoire, tels que
/var/cache
/var/games
/var/log/apt
(utiliser seulementdefaults,noatime
sansmode=
ounosuid
)Mais attention: les mêmes règles que ci-dessus s'appliquent, le manque d'espace peut causer des problèmes majeurs. Par exemple, imaginez que manquer d’espace pour / var / log / apt ne vous empêchera d’installer aucun programme! De plus, le chargement de
/var/log
dossiers dans le disque mémoire supprimera tous vos fichiers journaux lors du redémarrage, vous ne pourrez donc pas déboguer votre système si quelque chose d'inattendu se produit. Utilisez donc ces paramètres à vos risques et périls!Note de la rédaction: J'ai supprimé l' option
/run
intmpfs
mount car ce dossier et ses sous-dossiers sont déjà montéstmpfs
par défaut.la source
Sur les systèmes utilisant
systemd
, vous avez la possibilité d’utiliser un fichier unité systemd au lieu de fstab pour atteindre l’objectif detmpfs
montagetmp
. Sur mon système Ubuntu 16.04, j'ai exécuté:Le fichier
/usr/share/systemd/tmp.mount
ressemble à:En utilisant l'approche fstab de FuzzyQ, systemd convertit vos entrées fstab en unités de montage de manière dynamique. Je ne pense pas que l'une ou l'autre approche soit meilleure.
Afin de définir la limite maximale de mémoire vive demandée, il faudrait ajouter des éléments
size=512M
à laOptions
ligne, séparés par une virgule.la source
systemctl enable tmp.mount
après cp sinon systemctl échouera avec le message "Failed to start tmp.mount: Unit tmp.mount not found.
"systemctl edit tmp.mount
qui serait distro-neutre. Cela place vos modifications dans override.conf afin que vous ne modifiiez pas tmp.mount par défaut et que vous puissiez supprimer override.conf facilement pour revenir à la configuration par défaut.ln -s
plutôt quecp
dans la première étape.