109 votes

Comment utiliser le stockage en RAM pour le répertoire /tmp et comment définir une quantité maximale d'utilisation de RAM pour celui-ci ?

Après avoir vu le commentaire par Anonyme sur la question Comment le répertoire /tmp est-il nettoyé ? J'ai trouvé que ce serait une excellente idée à mettre en œuvre sur mon système, puisque j'ai 16 Go de RAM et que je ne les ai jamais tous utilisés.

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 la suivante :

Puis-je définir une valeur maximale pour l'utilisation de la RAM pour /tmp ? Et dans ce cas, que se passerait-il si la quantité maximale était dépassée, cela écrirait-il dans le disque dur ?

J'ai lu une solution qui dit :

mkdir -p /tmp/ram
sudo mount -t tmpfs -o size=512M tmpfs /tmp/ram/

Mais d'après ce que j'ai compris, ce ne sera pas une solution permanente. Si j'ai besoin qu'elle soit permanente, il faut l'ajouter au /etc/fstab le fichier de configuration.

Si c'est la bonne solution, comment puis-je transformer cette commande mount en une ligne dans le fichier /etc/fstab ?

97voto

FuzzyQ Points 2248

Vous avez tout à fait raison. L'entrée fstab correspondante ressemblerait à ceci :

tmpfs /tmp tmpfs defaults,noatime,nosuid,nodev,noexec,mode=1777,size=512M 0 0

Veuillez noter :

Como tmpfs est rempli, il se comportera comme n'importe quel disque dur physique en donnant une erreur "pas assez d'espace". Bien que le redémarrage (et donc le vidage du cache) puisse résoudre ce problème, vous pouvez rencontrer des difficultés lorsqu'une seule opération consomme plus d'espace au départ qu'il n'y en a sur le disque dur. tmpfs . Dans ce cas, votre ordinateur commencera à échanger de la mémoire vive vers le disque, ce qui fera s'arrêter votre système, à condition que vous ayez une partition d'échange pour commencer, bien sûr.

Dans ce contexte, une taille de 512 Mo est peut-être trop faible de nos jours, car les machines modernes disposent de beaucoup plus de mémoire vive et sont devenues beaucoup moins chères. Étant donné que vous disposez déjà de 16 Go de mémoire vive, la valeur par défaut de la moitié de votre mémoire vive pour le paramètre tmpfs devrait largement suffire pour la plupart des scénarios. Pour utiliser la valeur par défaut, il suffit d'omettre l'élément size=512M dans votre /etc/fstab fichier.

Une autre note :

Vous pouvez tout aussi bien monter d'autres dossiers système dans ramdisk, tels que

/var/cache

/var/games

/var/log/apt (à utiliser uniquement defaults,noatime ohne mode= o nosuid )

Mais attention : les mêmes règles s'appliquent que ci-dessus, le manque d'espace peut causer de gros problèmes. Par exemple, imaginez que si vous manquez d'espace pour /var/log/apt, vous ne pourrez plus installer aucun programme ! De plus, le chargement de /var/log dans le ramdisk supprimera tous vos fichiers journaux au 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 éditoriale : J'ai retiré le /run において tmpfs puisque ce dossier et ses sous-dossiers sont déjà montés dans la base de données de l'entreprise. tmpfs par défaut.

52voto

Rick Ramstetter Points 771

Sur les systèmes utilisant systemd vous avez la possibilité d'utiliser un fichier d'unité systemd à la place de fstab pour atteindre l'objectif d'utilisation de tmpfs à monter tmp . Sur mon système Ubuntu 16.04, j'ai exécuté :

sudo cp /usr/share/systemd/tmp.mount /etc/systemd/system/tmp.mount
sudo systemctl enable tmp.mount
sudo systemctl start tmp.mount

Le dossier /usr/share/systemd/tmp.mount ressemble :

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
[Unit]
Description=Temporary Directory
Documentation=man:hier(7)
Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
ConditionPathIsSymbolicLink=!/tmp
DefaultDependencies=no
Conflicts=umount.target
Before=local-fs.target umount.target
After=swap.target

[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime

[Install]
WantedBy=local-fs.target

En utilisant l'approche fstab de FuzzyQ, systemd traduit dynamiquement vos entrées fstab en unités de montage. Je ne pense pas que l'une ou l'autre approche soit meilleure.

Afin de fixer la limite maximale de la RAM comme demandé, il faudrait ajouter size=512M au Options ligne, séparés par une virgule.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X