Mover / tmp a RAM

16

Estoy tratando de pasar /tmpa la RAM y obedecer las buenas prácticas:

  • /var/tmpNO se debe colocar tmpfs, ya que debe sobrevivir a los reinicios

  • No monte /tmpcomo autónomo tmpfs, sino que dependen de /dev/shmo/run/shm

Sin embargo, las cosas han cambiado entre 2.6 y 3.2 núcleos:

Cambios en la configuración y valores predeterminados de los sistemas de archivos tmpfs

En el kernel 3.2, use RAMTMP=yesin /etc/default/tmpfs.

Mi pregunta es: ¿cómo puedo lograr este objetivo con núcleos más antiguos?

Mi elección es ni modificar / etc / fstab ni esto:

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

¿Hay algo así como RAMTMPpara los núcleos 2.6?

Massimo
fuente
1
tmpfsconsiderada perjudicial . Comida para el pensamiento.
sr_
8
@sr_ Lo siento, estoy totalmente en desacuerdo con el artículo vinculado. /tmppuede y debe usarse para archivos temporales, de eso se trata. /tmpno se supone que sobreviva a un reinicio (uso /var/tmppara eso) y ¿quién redacta un correo electrónico con la mitad del tamaño de RAM + intercambio (sin guardarlo)?
Marco
@Marco seguro, solo estaba lanzando algo que pensé relacionado.
sr_

Respuestas:

19

Usted no tiene que hacer todo eso, sólo se puede montar /tmpcomo tmpfsmediante el uso de una línea como la siguiente en /etc/fstab:

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

También puede hacerlo en vivo (pero tenga en cuenta las cosas que se encuentran actualmente en /tmpsu sistema de archivos actual, no se podrá acceder excepto a través del inodo y los descriptores de archivos actualmente abiertos, por lo que realmente debe hacer esto modificando /etc/fstaby reiniciando):

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

Tenga en cuenta que se tmpfspuede intercambiar. Si quieres un sistema de archivos verdaderamente solo RAM, úsalo ramfs.

Chris Down
fuente
Chris, mi punto es "mejores prácticas". Los desarrolladores ponen soporte nativo para montar / tmp sobre ... / shm; Leí que es mejor reutilizar los mismos tmpfs.
Massimo
3
@ Massimo Mi opinión es que la mejor práctica es no atar la montura. Agrega complejidad innecesaria.
Chris Down
55
@ Massimo ¿Dónde encuentras estas 'mejores prácticas'? La única razón por la que puedo ver contra el montaje /tmpcomo tmpfs es porque ahora tiene 2 sistemas de archivos tmpfs potenciales que pueden llenarse y usar más memoria ( /tmpy /dev/shm). Pero si realmente le preocupa llenar 2 monturas tmpfs, puede disminuir el tamaño máximo de la montura tmpfs.
Patrick
@ChrisDown ¿Qué tiene de malo el montaje de unión? También tener un solo tmpfs podría simplificar las cosas, ¿verdad?
CMCDragonkai
2
Las monturas @CMCDragonkai Bind son cualquier cosa menos simples internamente, vienen con algunas advertencias poco intuitivas que probablemente no pretendes (una particularmente publicitada es el drama que rodea el montaje para monturas de solo lectura). Solo usa dos tmpfsmonturas en su lugar.
Chris Down
17

/etc/default/tmpfses para sysvinit, para systemd(valor predeterminado de Debian desde jessie) solo necesita hacer:

systemctl enable tmp.mount

y en Debian Stretch

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

ver el registro de cambios en https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=787542#74

Lluís
fuente
¡Gracias! Esta es la forma correcta de mover / tmp a tmpfs en Jessie.
Yasiru G
¡Muchas gracias! en gentoo no entendí por qué mi / tmp está montado tmpfs. el script systemd tmp.mount lo hace.
ufk
4

Sé que esto es bastante antiguo, pero en la configuración de distribuciones de tipo Debian Establecer RAMTMP, RAMRUN y RAMLOCK en / etc / default / tmpfs (/ etc / default / rcS o antes de wheezy) hace el mismo trabajo.

luison
fuente