Cómo ampliar el espacio tmpfs en Linux

Contenidos

Bash Shell

¿Alguna vez has oído hablar de tmpfs en Linux? Es ese pequeño sistema de archivos temporal que reside en la memoria y se instala de forma predeterminada en las distribuciones de Linux. Ultrarrápido pero regularmente de tamaño limitado. ¿Se puede cultivar fácilmente? ¡Saber más!

Que es tmpfs?

Todo dentro de una computadora cuenta con una cierta velocidad de operación nativa. Comienza con la CPU (la Unidad Central de Procesamiento) en su computadora, que tiene un conjunto de cachés L1-Lx (Nivel 1 a Nivel x), que son muy pequeños (a modo de ejemplo, 16 Kb) pero ultrarrápidos (y probablemente ultrarrápidos). -costoso).

Después de las memorias caché de la CPU, están los principales bancos de memoria, que siguen siendo mucho más rápidos (y byte por byte más caros) que el disco duro, etc. Como puede ver, se trata de costo versus tamaño versus velocidad. La regla general es que el costo aumenta a medida que aumenta la velocidad y que el tamaño se reducirá para limitar el costo, etc.

Si almacenara todos sus datos dentro de los chips de memoria principal de su computadora, lo cual es técnicamente muy factible y bastante sencillo de hacer, su trabajo literalmente mosca en comparación con cuando utiliza solo disco, puesto que los chips de memoria son mucho más rápidos que la mayoría de las unidades de disco duro.

A pesar de esto, existen algunas limitaciones técnicas con esto. Una vez que apague su computadora, sus archivos desaparecerán. Una falla irrecuperable de la aplicación podría ser suficiente para que tenga que reiniciar su computadora y perder sus archivos. Al mismo tiempo, nunca más podría apagar su computadora, a menos que tuviera alguna característica avanzada (que no existe hasta donde yo sé) para mantener sus archivos en los chips de memoria, equivalente a un caché compatible con BBU (Unidad de respaldo de batería) en un controlador de incursión.

A pesar de esto, tenga en cuenta que hay una característica equivalente (pero no idéntica) a esta que ya puede estar usando: cuando suspende su sistema a la RAM (usando dormir u otra terminología equivalente empleada por los sistemas operativos), se proporcionará continuamente algo de energía a sus chips de memoria para mantener sus datos actuales.

Posteriormente, cuando reanude su sistema, podrá continuar donde lo dejó. Pero cerrar mientras se mantiene el contenido de la memoria de forma general no se utiliza con computadoras. Potencialmente, podría ser utilizado por tabletas inteligentes, aún cuando se podría argumentar que tales estados no son verdaderos estados de apagado, sino más bien estados de bajo consumo de energía.

Habiendo aclarado cómo, en términos generales, es probable que no sea una idea sólida guardar sus archivos en chips de memoria, existen otros usos en los que podría resultar útil. A modo de ejemplo, al realizar pruebas / control de calidad de programas, es probable que inicie y cierre el programa bajo prueba usualmente.

Dichos archivos son temporales y de poco valor individual (a menos que se encuentre un error, momento en el que los datos se pueden copiar de nuevo al disco principal) y, como tales, podrían almacenarse en sus chips de memoria. Esto es lo que tmpfs es y hace: Es un sistema de archivos temporal dentro de su memoria. Algunos de ustedes podrían objetar inmediatamente y decir: «Eso no es cierto», y estarían en lo cierto. continua leyendo.

Aquellos que hubieran objetado podrían haber hecho inmediatamente la afirmación de que el tmpfs no se garantiza que el espacio esté en la memoria, y esto es cierto. Puedes ver tmpfs como un híbrido entre un verdadero disco RAM (un disco creado en memoria volátil) y el almacenamiento en disco permanente real. En ciertos casos, el kernel de Linux intercambiará el contenido de tmpfs en el espacio de intercambio del sistema, que podría estar en el disco. Esto se hace de forma transparente (sin que sea necesaria la interacción del usuario).

Si desea obtener más información acerca de cómo configurar un disco RAM, consulte nuestra guía Cómo crear una unidad RAM en Linux.

Su actual tmpfs Tamaño

Ahora que tenemos tmpfs espacio mejor definido, echemos un vistazo al tamaño actual de su tmpfs espacio. Podrías pensar en el tmpfs sistema como una unidad virtual, temporal y volátil. Puede ver el espacio en uso usando df -h (uso del espacio en disco del sistema de archivos (df) en formato legible por humanos, gracias a la -h opción):

df -h | grep -Ei 'shm|size'

Verificando el uso actual de tmpfs usando df -h

Aquí usamos df -h (explicado arriba) combinado con una pipa (|) para enviar la salida resultante del df -h a un grep, que utiliza un extendido (-E) formato de expresión regular de una manera que no distingue entre mayúsculas y minúsculas (-i o simplemente I cuando se combina con otra alternativa) para elegir el título superior (que incluye la palabra Size) y cualquier línea que incluya el texto shm.

El motivo por la que grep shm es que casi siempre, como además podemos ver en la salida aquí, el espacio tmpfs se asigna al directorio del sistema de archivos /dev/shm. Si el comando anterior no genera ningún resultado, simplemente ejecute df -h y revise los resultados totales para buscar tmpfs espacio, si lo hay.

Tenga en cuenta que, de forma predeterminada, el sistema operativo además asignará / establecerá algunos espacios tmpfs, que podrían, a modo de ejemplo, mapearse / montarse en el /sys/fs/cgroup, /run y /run/lock directorios. No intente editarlos.

Con respecto a /dev/shm y otros directorios, tenga en cuenta que ver estas carpetas en la estructura de directorios del sistema operativo [tree] no significa que los archivos estén verdaderamente / físicamente almacenados en el disco en algunos /dev/shm ¡directorio!

Simplemente significa que, de acuerdo y en línea con la forma estándar de Linux de poder montar unidades (o para este caso, tmpfs) en cualquier directorio en la jerarquía del sistema de archivos, si hubiera archivos en dicho directorio antes del montaje , simplemente no serían visibles hasta que se cayera el punto de montaje.

En este sistema en particular, el tmpfs el espacio es de 32 GB y casi todo no se utiliza. Lo poco que está en uso (166 MB) es la tabla de meta / índice del directorio en sí, que es invisible para los usuarios, pero está en su lugar para poder almacenar archivos en la estructura del sistema de archivos. El tamaño de la tmpfs es, de forma predeterminada, la mitad de la memoria del sistema para determinados sistemas operativos.

Este es un bastante grande tmpfs y solo estaría técnicamente justificado, hasta cierto punto, en un sistema con, a modo de ejemplo, 40 GB o más de memoria física, aún cuando, dependiendo de las circunstancias, un caso de uso particular podría justificar otras configuraciones. En general, recomiendo mantener el tmpfs espacio menos que, digamos, el 70-80% de la memoria, y ese porcentaje sería significativamente menor si la RAM (Memoria de acceso aleatorio, otra manera abreviada o forma de referirse a la memoria del sistema) era pequeña para comenzar.

El motivo de esto es que desea dejar suficiente espacio de memoria disponible para ejecutar otros programas, sistemas operativos y servicios de software.

A modo de ejemplo, no querría adjudicar el 80% de la memoria si su sistema tuviera 2GB de memoria, puesto que esto probablemente dejaría muy poco para que otras cosas funcionen correctamente o en absoluto. Si, por el contrario, cuenta con una gran cantidad de 256 GB de memoria, inclusive el 90% de eso (230,4 GB) dejaría unos buenos 25 GB disponibles, que, según el caso de uso, podrían (o no) ser suficientes.

En resumen, le recomiendo que siempre ajuste el tamaño de tmpfs dependiendo de 1) cuánto espacio verdaderamente necesita en tmpfs, 2) cuánta memoria hay en su sistema y 3) cuánta memoria real están usando otras aplicaciones al mismo tiempo de tmpfs (incluyendo sus operaciones, servicios, etc.). La experiencia con todas estas cosas ayuda aquí.

Ampliación tmpfs en su sistema

Ahora que conocemos el tamaño de la corriente tmpfs volumen y qué tamaño darle en el futuro usando algunas de las consideraciones proporcionadas en el último párrafo anterior, podemos echar un vistazo a ampliar (o reducir) nuestro tmpfs espacio.

Hacerlo es bastante sencillo. Todo lo que haremos es, en lugar de que el sistema operativo configure automáticamente el /dev/shm tmpfs espacio para nosotros, defínalo estáticamente en su lugar en el /etc/fstab archivo, que controla las asignaciones de unidades al inicio. Simplemente agregamos:

# <file system> <mount point> <type> <options>                                       <dump> <pass>
tmpfs           /dev/shm      tmpfs  defaults,rw,nodev,nofail,noatime,nosuid,size=2G   0      0

al /etc/fstab expediente. No copie el primer comentario (# prefijo), puesto que ya estará allí. Al mismo tiempo, cambie el 2G (2GB) según su requisito calculado / estimado para el tamaño de tmpfs. Es probable que no sea útil determinar esto cerca o por encima del tamaño de la memoria disponible, como explicamos previamente.

Las marcas de encabezado en el /etc/fstab archivo explicar el significado de los campos, y puede hallar más información en el fstab manual, que se puede obtener escribiendo man fstab. Simplemente, le pedimos al sistema operativo que monte un tmpfs sistema de archivos (la ubicación del sistema está en la memoria, por lo que en lugar de especificar un dispositivo, indicamos tmpfs.) y la del tipo tmpfs, montado en /dev/shm.

Además establecemos una serie de alternativas. Probablemente querrás dejar el defaults,rw,nodev,nofail mínimamente (use los valores predeterminados, acceso de lectura / escritura, ningún dispositivo físico presente y no deje de iniciar el sistema operativo si este montaje falla de alguna manera).

Además puede elegir por dejar las alternativas de optimización noatime,nosuid si lo desea (que es ideal para pruebas / configuraciones de control de calidad, puesto que lo hará más rápido mientras mantiene menos información sobre los archivos en el espacio tmpfs), o puede eliminarlos (y sus comas coincidentes). Al mismo tiempo, deje (y cambie / especifique el tamaño) el size=xG parámetro. En resumen, tenemos un estándar 0 0 por dump and pass (árbitro man fstab para obtener más información sobre estas dos opciones).

Una vez realizado el cambio, simplemente reinicie su sistema y ejecute df -h para verificar que tu /dev/shm El espacio tmpfs ahora tiene el nuevo tamaño que configuró. Si algo salió mal, simplemente verifique dmesg (escrito en el símbolo del sistema) y escanee hacia arriba en busca de mensajes de error rojos (es probable que tenga que desplazarse) para averiguar qué salió mal. Aún cuando algo salió mal, el sistema debería haber comenzado bien de todos modos, siempre que no haya eliminado el nofail opción.

Para los usuarios de Ubuntu, existe, a pesar de esto, una factible error nofail prestar atención. Solía ​​haber una alternativa nobootwait opción [instead], aún cuando no es claro si aún se puede utilizar y, de ser así, en qué versiones de Ubuntu y sus derivados [only]. Como alternativa final a la prueba, siempre que se esté usando SystemD, se podría considerar el uso de x-systemd.device-timeout = 10 tiempo de espera, donde 10 es el número de segundos que uno está dispuesto a esperar a lo largo del inicio.

Terminando

En este post, analizamos en profundidad tmpfs dimensionamiento, teniendo en cuenta el caso de uso y otros factores.

Además explicamos tmpfs en detalle, descubrió cómo hallar el tamaño actual de la máquina tmpfs sistema de archivos, y en resumen miró cómo cambiar el tamaño de tmpfs.

¡Disfruta usando tmpfs!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.