GNU/Linux >> Tutoriales Linux >  >> Linux

Nueva función de contenedor:monturas superpuestas volátiles

Las versiones recientes de Podman, Buildah y CRI-O han comenzado a aprovechar una nueva característica del kernel, los montajes superpuestos volátiles. Esta función le permite montar un sistema de archivos de superposición con una bandera que le indica que no se sincronice con el disco.

Si necesita un recordatorio sobre el uso y los beneficios de las monturas superpuestas, consulte mi artículo del verano pasado.

¿Qué es la sincronización y por qué es importante?

En Linux, cuando escribe en un archivo o directorio, el kernel no escribe instantáneamente los datos en el disco. En cambio, almacena un montón de escrituras y luego guarda periódicamente los datos en el disco para aumentar el rendimiento. Esto se llama sincronización . El problema con esto es que un proceso piensa los datos se guardaron cuando se completa la escritura, pero en realidad no se guarda hasta que el kernel sincroniza esos datos. Esto significa que si escribió datos y el kernel falla, existe la posibilidad de que los datos nunca se hayan guardado.

Debido a esto, muchos sistemas de archivos se sincronizan regularmente y las herramientas pueden solicitar que la sincronización se realice con frecuencia. Cuando ocurre una sincronización, el kernel deja de procesar los datos con un bloqueo y sincroniza todos los datos en el disco. Por supuesto, esto provoca un peor rendimiento. Si tiene un proceso que provoca sincronizaciones con frecuencia, el rendimiento de su trabajo puede verse realmente afectado. Ciertas herramientas como RPM solicitan una sincronización después de que cada archivo se escribe en el disco, lo que hace que se eliminen todas las páginas sucias de ese archivo, y es una sobrecarga considerable.

[ ¿Empezando con los contenedores? Consulta este curso gratuito. Implementación de aplicaciones en contenedores:una descripción técnica general. ]

Es posible que no sea necesario sincronizar los contenedores

En el mundo de los contenedores, tenemos muchos casos de uso en los que no nos importa si los datos se guardan. Si el kernel fallara, no usaríamos los datos escritos de todos modos.

Al hacer un buildah bud o podman build , la imagen del contenedor se escribe en un punto de montaje superpuesto, a menudo usando DNF o YUM. Si el núcleo falla en medio de la creación de una imagen, el contenido escrito en la capa de superposición sería inútil y el usuario debe limpiarlo. Todo lo que no se pudo escribir simplemente se eliminaría. Sin embargo, cuando se completa la compilación, la capa de superposición se convierte en un paquete de imágenes que luego se puede sincronizar con el disco.

Otro caso de uso para montajes superpuestos volátiles es ejecutar Podman con --rm bandera. El --rm flag le dice a Podman que destruya el contenedor y el punto de montaje superpuesto cuando el contenedor se complete. Un bloqueo del contenedor dejaría contenido para el que el usuario ya indicó que no tiene uso, por lo que no hay razón para preocuparse por si una escritura fue exitosa.

En el mundo de Kubernetes, CRI-O es el motor de contenedores. Kubernetes casi siempre está configurado para eliminar todos los contenedores en el momento del arranque. Básicamente, quiere comenzar con un estado limpio. Esto significa que si el núcleo falla mientras se escriben datos en el montaje superpuesto, estos datos se destruirán tan pronto como se inicie el sistema. También es seguro usar tales configuraciones con contenedores con estado porque los datos generalmente se escriben en volúmenes externos que no se verán afectados por el indicador "volátil" en tiempo de ejecución.

Agregar una opción volátil

El ingeniero del equipo de contenedores, Giuseppe Scrivano, notó estos casos de uso y pensó que podríamos mejorar el rendimiento agregando una opción volátil al sistema de archivos de superposición del kernel de Linux e implementó este comportamiento. Como resultado, las versiones más nuevas de Buildah, Podman y CRI-O utilizarán de forma predeterminada el indicador volátil en estos casos de uso y, con suerte, obtendrán un mejor rendimiento.

Tenga en cuenta que los volúmenes montados en el contenedor seguirán teniendo el comportamiento de sincronización predeterminado de los sistemas de archivos típicos, por lo que no debe preocuparse por la pérdida de datos escritos en el almacenamiento permanente.

El siguiente gráfico muestra cómo se reduce la cantidad de IOPS de escritura en un contenedor que ejecuta yum install -y texlive en una máquina con 16 GB de RAM. Además, cuando el contenedor se ejecuta con la bandera volátil activada, la hora de su reloj de pared también se ve afectada y termina más rápido.

Las páginas sucias finalmente se escribirán en el almacenamiento una vez que expire la relación sucia o el tiempo de espera del inodo, ya que esta configuración no se ve afectada por el indicador de montaje volátil.

Resumir

Con la tecnología de contenedores, empujamos constantemente los límites de lo que el sistema Linux puede manejar y experimentamos con nuevos casos de uso. Agregar una opción volátil al sistema de archivos de superposición del kernel ayuda a aumentar el rendimiento, lo que permite que los contenedores continúen evolucionando y brinden mayores beneficios.

[ Descarga gratuita:hoja de referencia de comandos avanzados de Linux. ]


Linux
  1. Vincular montajes en Linux

  2. Migración de nube a nube

  3. ¿Cómo puedo usar DD para migrar datos de una unidad antigua a una nueva?

  4. directorio de juegos?

  5. ¿Cómo usar la nueva función de datos en línea ext4? (almacenando datos directamente en el inodo)

Cómo almacenar datos de contenedores de Docker en volúmenes de Docker

Novedades de KDE Plasma 5.25

¿Vale la pena instalar el nuevo Ubuntu 18.10?

Confirmar datos en un contenedor mysql

Verificación de la integridad de los datos

El disco Owncloud se estrelló, los datos están seguros, cómo configurar un nuevo servidor