tmpfs (Español)
tmpfs es un sistema de archivos temporal que reside en la memoria y/o partición(es) de intercambio. Montar directorios como tmpfs puede ser una forma eficaz de acelerar el acceso a sus archivos o de asegurarse de que su contenido se borre automáticamente al reiniciar.
Utilización
Algunos directorios en los que se utilice comúnmente tmpfs(5) son /tmp, /var/lock y /var/run. No lo utilice en /var/tmp, porque ese directorio está destinado a archivos temporales que se conservan durante los reinicios.
Arch utiliza un directorio tmpfs /run
, con /var/run
y /var/lock
simplemente existiendo como enlaces simbólicos por compatibilidad. También se utiliza para /tmp
por la configuración predeterminada de systemd y no requiere una entrada en fstab a menos que se necesite una configuración específica.
glibc 2.2 y posterior espera que tmpfs se monte en /dev/shm
para memoria compartida POSIX. El montaje de tmpfs en /dev/shm
es gestionado automáticamente por systemd y la configuración manual en fstab no es necesaria.
Generalmente, las tareas y los programas que ejecutan operaciones frecuentes de lectura/escritura pueden beneficiarse del uso de un directorio tmpfs. Algunas aplicaciones pueden incluso recibir una ganancia sustancial al descargar algunos (o todos) sus datos en la memoria compartida. Por ejemplo, reubicar el perfil de Firefox en la RAM muestra una mejora significativa en el rendimiento.
Ejemplos
De forma predeterminada, una partición tmpfs tiene su tamaño máximo establecido en la mitad de la RAM disponible, sin embargo, es posible cambiar este valor.
Para establecer explícitamente un tamaño máximo, en este ejemplo para cambiarlo en /tmp
, utilice la opción de montaje size
:
/etc/fstab
tmpfs /tmp tmpfs rw,nodev,nosuid,size=2G 0 0
Para especificar un montaje más seguro, especifique la siguiente opción de montaje:
/etc/fstab
tmpfs /www/cache tmpfs rw,size=1G,nr_inodes=5k,noexec,nodev,nosuid,uid=usuario,gid=grupo,mode=1700 0 0
Véase la página de manual tmpfs(5) y Security (Español)#Sistema de archivos para más información.
Reinicie para que los cambios surtan efecto. Tenga en cuenta que aunque pueda ser tentador ejecutar mount -a
para que los cambios sean efectivos inmediatamente, esto hará que los archivos que actualmente residen en estos directorios sean inaccesibles (esto es especialmente problemático para ejecutar programas con archivos de bloqueo, por ejemplo). Sin embargo, si todos están vacíos, debería ser seguro ejecutar mount -a
en lugar de reiniciar (o montarlos individualmente).
Después de aplicar los cambios, verifique que surtieron efecto mirando /proc/mounts
y utilizando findmnt
:
$ findmnt /tmp
TARGET SOURCE FSTYPE OPTIONS /tmp tmpfs tmpfs rw,nosuid,nodev,relatime
tmpfs también puede cambiar de tamaño temporalmente sin la necesidad de reiniciar, por ejemplo, cuando necesite ejecutarse rápidamente un trabajo de compilación grande. En este caso, ejecute:
# mount -o remount,size=4G /tmp
Desactivar el montaje automático
En systemd, /tmp
se monta automáticamente como un tmpfs, si no es ya un punto de montaje dedicado (ya sea tmpfs o en disco) en /etc/fstab
. Para desactivar el montaje automático, enmascare la unidad systemd tmp.mount
.
Los archivos ya no se almacenarán en un tmpfs, sino en el dispositivo de bloque. El contenido de /tmp
ahora se conservará entre reinicios, lo que podría no ser el comportamiento deseado. Para recuperar el comportamiento anterior y limpiar el directorio /tmp
automáticamente al reiniciar, considere utilizar tmpfiles.d(5):
/etc/tmpfiles.d/tmp.conf
# véase tmpfiles.d(5) # activar siempre la limpieza del directorio /tmp D! /tmp 1777 root root 0 # eliminar los archivos en /var/tmp con más de 10 días D /var/tmp 1777 root root 10d # los puntos de montaje del espacio de nombres (PrivateTmp=yes) se excluyen de la eliminación x /tmp/systemd-private-* x /var/tmp/systemd-private-* X /tmp/systemd-private-*/tmp X /var/tmp/systemd-private-*/tmp
Solución de problemas
Abrir enlaces simbólicos en tmpfs cuando falla la raíz
Considerando que /tmp
está utilizando tmpfs, cambie el directorio actual a /tmp
, luego cree un archivo y un enlace simbólico a ese archivo en el mismo directorio /tmp
. Es de esperar que se produzcan errores de permiso denegado al intentar leer el enlace simbólico debido a que /tmp
tiene el "bit pegajoso" activado.
Este comportamiento se puede controlar mediante /proc/sys/fs/protected_symlinks
o simplemente mediante sysctl: sysctl -w fs.protected_symlinks=0
. Véase Sysctl#Configuration para hacerlo permanente.