Déplacer / tmp vers la RAM

16

J'essaie de passer /tmpà la RAM et d'obéir aux bonnes pratiques:

  • /var/tmpne doit PAS être placé tmpfs, car il doit survivre aux redémarrages

  • ne pas monter en /tmptant que stand-alone tmpfs, mais compter sur /dev/shmou/run/shm

Cependant, les choses ont changé entre les noyaux 2.6 et 3.2:

Modifications de la configuration et des valeurs par défaut des systèmes de fichiers tmpfs

Sur le noyau 3.2, utilisez RAMTMP=yesdans /etc/default/tmpfs.

Ma question est: comment puis-je atteindre cet objectif avec des noyaux plus anciens?

Mon choix est de ne pas modifier / etc / fstab ni ceci:

mkdir /dev/shm/tmp
chmod 1777 /dev/shm/tmp
mount --bind /dev/shm/tmp /tmp

Existe-t-il quelque chose comme RAMTMPpour les noyaux 2.6?

Massimo
la source
1
tmpfsconsidéré comme nocif . Nourriture pour la pensée.
sr_
8
@sr_ Désolé, je suis fortement en désaccord avec l'article lié. /tmppeut et doit être utilisé pour les fichiers temporaires, c'est tout l'intérêt. /tmpn'est pas censé survivre à un redémarrage (utiliser /var/tmppour cela) et qui compose un e-mail moitié moins RAM + swap (sans l'enregistrer)?
Marco
@Marco bien sûr, je jetais juste quelque chose que je pensais lié.
sr_

Réponses:

19

Vous n'êtes pas obligé de faire tout cela, vous pouvez simplement monter /tmpcomme tmpfsen utilisant une ligne comme celle-ci dans /etc/fstab:

tmpfs /tmp tmpfs mode=1777,nosuid,nodev 0 0

Vous pouvez également le faire en direct (mais gardez à l'esprit que les éléments qui se trouvent actuellement /tmpsur votre système de fichiers actuel ne seront pas accessibles sauf via l'inode et les descripteurs de fichiers actuellement ouverts, vous devriez donc vraiment le faire en modifiant /etc/fstabet en redémarrant):

mount -o mode=1777,nosuid,nodev -t tmpfs tmpfs /tmp

Notez qu'un tmpfspeut échanger. Si vous voulez un système de fichiers véritablement RAM uniquement, utilisez ramfs.

Chris Down
la source
Chris, mon point est "les meilleures pratiques". Les développeurs ont mis en place un support natif pour monter / tmp sur ... / shm; J'ai lu qu'il vaut mieux réutiliser les mêmes tmpfs.
Massimo
3
@Massimo Mon avis est que la meilleure pratique n'est pas de lier le montage. Cela ajoute une complexité inutile.
Chris Down
5
@Massimo Où trouvez-vous ces «meilleures pratiques»? La seule raison pour laquelle je ne vois pas le montage en /tmptant que tmpfs est que vous avez maintenant 2 systèmes de fichiers tmpfs potentiels qui peuvent remplir et utiliser plus de mémoire ( /tmpet /dev/shm). Mais si vous êtes vraiment préoccupé par le remplissage de 2 montures tmpfs, vous pouvez réduire la taille maximale de la monture tmpfs.
Patrick
@ChrisDown qu'est-ce qui ne va pas avec bind mount? Avoir également un seul tmpfs pourrait rendre les choses plus simples non?
CMCDragonkai
2
@CMCDragonkai Les montures Bind sont tout sauf simples en interne, elles sont accompagnées de quelques mises en garde non intuitives que vous n'avez probablement pas l'intention (une particulièrement médiatisée étant le drame entourant le remontage pour les montures en lecture seule). Utilisez simplement deux tmpfsmontures à la place.
Chris Down du
17

/etc/default/tmpfsest pour sysvinit, pour systemd(Debian par défaut depuis jessie) il suffit de faire:

systemctl enable tmp.mount

et sur Debian Stretch

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

voir le changelog sur https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74

Lluís
la source
Merci! C'est la bonne façon de déplacer / tmp vers tmpfs dans Jessie.
Yasiru G
Merci beaucoup! sur gentoo je n'ai pas compris pourquoi mon / tmp est monté sur tmpfs. le script systemd tmp.mount le fait.
ufk
4

Je sais que c'est assez ancien, mais dans les distributions de type Debian, le réglage Set RAMTMP, RAMRUN et RAMLOCK dans / etc / default / tmpfs (/ etc / default / rcS ou avant Wheezy) fait le même travail.

luison
la source