Tmpfs
# Tmpfs

El sistema de archivos tmpfs es el nombre que recibe un sistema de almacenamiento en muchos sistemas operativos de tipo Unix, como memoria volátil. Es similar a los discos RAM, que aparecen como discos virtuales, y pueden contener sistemas de archivos.

tmpfs normalmente también usa espacio de intercambio en situaciones en las que hay poca memoria volátil disponible.

Como los datos están principalmente en memoria volátil, las velocidades para realizar operaciones en tmpfs son generalmente mucho mayores en comparación con un sistema de archivos en otros dispositivos de almacenamiento como discos rígidos.

Por usar memoria volátil, los datos en tmpfs no persisten después de reiniciar el sistema.

Muchas distribuciones de Unix tienen habilitado y usan tmpfs montado por defecto en /tmp o para memoria compartida.

## Implementaciones

### SunOS / Solaris

SunOS 4 incluye la que es probablemente la primera implementación de tmpfs; apareció en SunOS 4.0 a finales de 1987 junto a una nueva administración ortogonal del espacio de memoria que permitía que cualquier objeto sea mapeado en memoria.

A partir de Solaris 2.1 (publicado en noviembre de 1994), /tmp usa por defecto tmpfs. La salida de `df`, sin embargo, resulta un tanto diferente en tanto que no muestra "tmpfs", sino "swap", aun habiendo sido montado con `mount -F tmpfs tmpfs /tmp/test`

### Linux

tmpfs está soportado en Linux desde la versión 2.4 en adelante.

Antes era conocido como shmfs. Está basado en el código de ramfs usado en el inicio del sistema y también usa la caché de páginas, pero a diferencia de ramfs soporta por ejemplo intercambiar páginas con poco uso en el espacio de intercambio, limitar el tamaño del sistema de archivos y limitar la cantidad máxima de inodes para evitar que el sistema se quede sin memoria. Estos valores tienen efecto desde el montaje y pueden modificarse remontando el sistema de archivos.

Un uso de tmpfs por ejemplo es "mount -t tmpfs -o size=1G,nr_inodes=10k,mode=0700 tmpfs /space" el cual permite hasta 1 GiB en la memoria RAM/swap con 10240 inodos y es accesible solo por el dueño del directorio /space.

Es preciso notar que si tmpfs es usado por /tmp entonces se debe colocar el sticky bit por cuestiones de seguridad, y "mode=1777" deberá ser usado normalmente, en lugar de "mode=0777" o "mode=777".

/var/run y /var/lock también pueden ser sistemas de archivos tmpfs.

### BSD

4.2BSD introdujo MFS, un sistema de archivos basado en memoria implementado aplicando el sistema de archivos FFS a una región de memoria virtual.

tmpfs, un sistema de archivos implementado usando estructuras de datos convencionales en memoria para mejorar el rendimiento de MFS, fue integrado al código oficial de NetBSD el 10 de septiembre de 2005; está disponible desde la versión 4.0. FreeBSD trasladó la implementación de NetBSD, y está disponible desde la versión 7.0 en adelante. DragonFly BSD trasladó la implementación de NetBSD, y está disponible desde la versión 2.5.1.

