Tmpfs, anteriormente conocido como shmfs, es un sistema de archivos temporal y se refiere a un sistema de archivos que se encuentra en la memoria y/o en las particiones de intercambio. Tmpfs no almacena los datos del archivo en un almacenamiento normal no volátil. En cambio, el kernel de UNIX administra la memoria virtual, que es donde viven los archivos Tmpfs. La razón principal por la que se creó Tmpfs fue mejorar el rendimiento al permitir que los archivos temporales se escriban y lean sin usar el disco o la E/S de la red.
¿De qué hablaremos?
En este artículo, veremos una descripción general del sistema de archivos Tmpfs en Linux.
Ventajas de usar el sistema Tmpfs
El anterior sistema de archivos de memoria de acceso aleatorio (ramfs) en Linux ha sido reemplazado por el nuevo sistema de archivos temporales (Tmpfs). Esto se debe a que el antiguo RAMFS no abordó las situaciones correctamente cuando el sistema se quedó sin RAM.
Montar directorios como Tmpfs tiene varios beneficios como:
1. Para acelerar el acceso a los archivos que contienen.
2. Para asegurarse de que cada vez que se reinicia el sistema, el contenido de los directorios se elimine automáticamente.
3. Tmpfs aumenta la tasa de manipulación de archivos mientras conserva la semántica de un archivo UNIX.
4. Tmpfs no necesita espacio en disco fijo o dedicado para archivos y no tiene efectos adversos en el rendimiento.
En lugar de utilizar la memoria física dedicada como un «disco RAM», Tmpfs almacena los datos del archivo en la memoria caché de la página de un sistema operativo. Hace que sea más fácil leer y escribir los archivos, permite que el sistema de archivos crezca y se reduzca sobre la marcha sin usar espacio en el disco y no daña el rendimiento general del sistema.
Temporizadores de montaje
Utilice el comando de montaje y elija «tmp» como el tipo de sistema de archivos para crear un sistema de archivos de tipo Tmpfs. Dado que Tmpfs siempre utiliza la memoria como recurso del sistema de archivos, el parámetro de recurso para montar (por ejemplo, dispositivo sin formato) no se tiene en cuenta. Dado que Tmpfs siempre usa la memoria como recurso del sistema de archivos, el parámetro de recurso para el montaje (como el dispositivo sin formato) no se tiene en cuenta.
Actualmente, Tmpfs no tiene opciones de montaje. Muchas opciones de montaje regulares no son relevantes para el contexto de Tmpfs. Por ejemplo, hacer que un montaje Tmpfs sea de «solo lectura» no tiene ningún sentido, ya que no contienen ningún dato cuando se montan por primera vez. Tmpfs es compatible con todos los tipos de archivos, que también incluyen enlaces simbólicos, bloques y archivos de dispositivos especiales de caracteres: semántica de archivos UNIX. Aunque puede haber muchos sistemas de archivos basados en Tmpfs montados en un sistema, todos ellos tienen que compartir el mismo grupo de recursos.
Dado que el contenido de un sistema de archivos basado en memoria se borra después de una operación de reinicio o desmontaje del sistema, y debido a que estos archivos tienen una vida muy corta, /tmp es la ubicación más adecuada para ellos (conocido como Tmpfs). Esto indica que /usr/tmp no es una ubicación adecuada para montar un sistema de archivos Tmpfs porque su contenido se conserva entre reinicios.
Tamaño de Tmpfs
La cantidad de espacio libre que puede utilizar Tmpfs es directamente proporcional a la cantidad de espacio de intercambio no utilizado. El tamaño de un sistema de archivos Tmpfs se expande para adaptarse a los archivos que se le agregan, pero los usuarios que usan Tmpfs con regularidad deben ser conscientes de que este crecimiento conlleva algunos costos inherentes. Tmpfs comparte sus recursos con los segmentos de datos y pilas de los programas que se están ejecutando.
Si los sistemas de archivos Tmpfs están cerca de su capacidad máxima permitida, es posible que la ejecución de programas muy grandes se vea afectada. Tmpfs puede asignar todo el espacio de intercambio del sistema, con la excepción de 4 MB. Esto es suficiente para asegurarse de que la mayoría de los programas se puedan ejecutar. No obstante, es posible que ciertos programas no puedan ejecutarse si los sistemas de archivos Tmpfs están cerca de su capacidad máxima. Los usuarios que planean ejecutar programas grandes y usan mucho Tmpfs deben buscar formas de aumentar el espacio de intercambio disponible en el sistema.
Usos de Tmpfs
Los usos de Tmpfs incluyen:
1. Siempre hay un montaje interno en el núcleo que no se puede ver. La memoria compartida SYSV y las asignaciones anónimas compartidas utilizan Tmpfs. El montaje de Tmpfs es independiente de CONFIG_TMPFS. La parte visible para el usuario de Tmpfs no se creará si CONFIG_TMPFS no está configurado. Sin embargo, los mecanismos internos existen en todo momento.
2. La memoria compartida POSIX (shm_open, shm_unlink) requiere que tmpfs se monte en /dev/shm para las versiones glibc 2.2 y superiores. Esto puede resolverse incluyendo la siguiente línea en el archivo /etc/fstab:
Si es necesario, cree el directorio donde desea montar el archivo Tmpfs.
La memoria compartida que utiliza SYSV no necesita el montaje Tmpfs. Esto se hace con el montaje interno. Para usar la memoria compartida SYSV en las versiones del kernel 2.3, se tenía que montar shm fs (el predecesor de Tmpfs).
3. Es realmente útil para algunos usuarios montarlo en ubicaciones como /tmp y /var/tmp y tener un disco de intercambio considerable. Además, los montajes en bucle de archivos Tmpfs ahora son funcionales. Por lo tanto, la mayoría de mkinitrd de distribuciones deberían operar con un Tmpfs.
4. Y hay demasiados para enumerarlos.
Opciones de montaje para Tmpfs
Exploremos algunas de las opciones de montaje con Tmpfs:
tamaño: Esto especifica la cantidad máxima de bytes que se pueden usar para una instancia de Tmpfs. De forma predeterminada, solo se puede usar la mitad de la RAM física sin espacio de intercambio.
Si las instancias de Tmpfs se hacen más grandes de lo necesario, la máquina se atasca en un interbloqueo porque el controlador OOM no podrá liberar esa memoria.
nr blocks: Es lo mismo que la opción de tamaño. Sin embargo, está en bloques de PAGE_CACHE_SIZE.
nr inodes : es el límite superior de inodes para esta instancia. El valor predeterminado es la mitad del número de páginas de RAM físicas o el número de páginas de RAM de memoria baja (en un sistema con memoria alta), lo que sea menor.
Conclusión
Normalmente, los archivos Tmpfs se eliminan al reiniciar el sistema. Pero si desea conservarlos, puede utilizar los archivos systemd-tmp. Le recomendamos que lea las páginas del manual si desea obtener más información sobre Tmpfs.