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.[1][2]
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
`
# df -k
Filesystem kbytes used avail capacity Mounted on
swap 601592 0 601592 0% /tmp/test
Linux
tmpfs está soportado en Linux desde la versión 2.4 en adelante. [3]
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,[4] 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,[5] un sistema de archivos basado en memoria implementado aplicando el sistema de archivos FFS a una región de memoria virtual.
tmpfs[6], 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;[7] 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.[8] DragonFly BSD trasladó la implementación de NetBSD, y está disponible desde la versión 2.5.1.
Referencias
- Peter Snyder (marzo de 1990). «tmpfs: A Virtual Memory File System» (PDF). Archivado desde el original el 26 de febrero de 2007. Consultado el 7 de mayo de 2007.
- Hal L. Stern. «SunOS 4.1 Performance Tuning» (GZipped PostScript). Archivado desde el original el 1 de mayo de 2012. Consultado el 7 de mayo de 2007.
- Daniel Robbins (1 de septiembre de 2001). «Advanced filesystem implementor's guide». Consultado el 7 de mayo de 2007. – Artículo que describe la implementación de Linux
- Computer Incident Advisory Capability, U.S. Department of Energy (17 de agosto de 1995). «F-27: Incorrect Permissions on /tmp». Archivado desde el original el 10 de diciembre de 2008. Consultado el 17 de noviembre de 2008. – Ejemplo de vulnerabilidad de seguridad de /tmp
- «NetBSD mount_mfs(8) man page». 8 de diciembre de 2007. Consultado el 12 de marzo de 2011.
- «Configuración del fiesystem tmpfs en Linux». puerto53.com. Consultado el 22 de agosto de 2022.
- Julio M. Merino Vidal (24 de febrero de 2006). «NetBSD-SoC: Efficient memory file-system». Consultado el 7 de mayo de 2007.
- Derek Morr (2 de diciembre de 2008). «FreeBSD tmpfs manpage». Consultado el 2 de diciembre de 2008.
Enlaces externos
- Documentation/filesystems/tmpfs.txt (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última). documentation in Linux source tree
- tmpfs(7FS) Solaris 10 man page
- mount_tmpfs(8) NetBSD man page