tmpfs (Español)

From ArchWiki

Estado de la traducción: esta traducción de Tmpfs fue revisada el 2021-02-12. Si existen cambios puede actualizarla o avisar al equipo de traducción.

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.

Sugerencia: Los archivos temporales en los directorios tmpfs se pueden volver a crear en el arranque utilizando systemd-tmpfiles.

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 esa carpeta está destinada 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 una carpeta 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

Nota: El consumo real de memoria/intercambio depende de cuánto se utilice, ya que las particiones tmpfs no consumen memoria hasta que realmente se necesita.

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,noatime /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 la carpeta /tmp automáticamente al reiniciar, considere utilizar tmpfiles.d(5):

/etc/tmpfiles.d/tmp.conf
# véase tmpfiles.d(5)
# activar siempre la limpieza de la carpeta /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.

Advertencia: ¡Cambiar este comportamiento puede generar problemas de seguridad!

Véase también