Primer prototipo: Unikernels como etapa en la evolución de Linux

A principios de julio, un grupo de ingenieros de Red Hat y la Universidad de Boston publicaron un documento técnico que proponía cambiar el núcleo monolítico de Linux a la arquitectura de unikernels. Decidimos entender el material y discutir la reacción de la comunidad de TI a esta propuesta.


Foto - Eamonn Maguire - Unsplash

Unikernels como alternativa


Se sabe que Linux usa un núcleo monolítico . Gestiona procesos, funciones de red, periféricos y acceso al sistema de archivos. Sin embargo, como escriben los autores del artículo de Red Hat y la Universidad de Boston ( p. 1 ), dicha estructura tiene sus inconvenientes. En particular, las aplicaciones de alto rendimiento se ven obligadas a usar marcos como DPDK y SPDK para obtener acceso sin trabas a los dispositivos de E / S sin pasar por el núcleo.

Ciertas dificultades surgen en la nube. Para mayor seguridad, las aplicaciones empresariales se implementan en máquinas virtuales separadas. Cada VM está bajo el control de un sistema operativo completo. Como resultado, los recursos informáticos de los servidores no se gastan de la manera más óptima.

Un enfoque alternativo puede mejorar la situación: unikernels. La siguiente idea es vincular la aplicación con las bibliotecas necesarias del sistema operativo y compilarlas en un archivo binario. Después de eso, este "binario" se puede utilizar para iniciar el sistema. Este enfoque permite especializar la funcionalidad del sistema operativo para las necesidades de una aplicación en particular.

Los recursos de dicho sistema se gastan de manera más eficiente. Los Unikernels también tienen un mayor rendimiento que la arquitectura central monolítica. La razón es la simplificación de las rutas de E / S, ya que todos los datos y archivos se colocan en un solo espacio de direcciones. También elimina la necesidad de cambiar el contexto entre el espacio del usuario y el espacio del kernel.

Un equipo de ingenieros de la Universidad de Boston y Red Hat desarrolló un prototipo de Linux basado en unikernels. El sistema operativo se llama Unikernel Linux (UKL).

¿Qué hicieron los ingenieros?


Según los desarrolladores ( p. 3 ), solo cambiaron once y agregaron veinte nuevas líneas de código al kernel de Linux v5.0.5 y glibc . El núcleo "clásico" se ha mantenido operativo: el usuario puede elegir el método de ensamblaje (UKL o no).

Los autores crearon una pequeña biblioteca UKL en la que colocaron "apéndices" especiales que enmascaran las llamadas del sistema no utilizadas. También modificaron el enlazador de kernel para definir un nuevo tipo de segmentos, por ejemplo, TLS (almacenamiento local de subprocesos) de binarios ELF. También se modificó el proceso de compilación, que ahora combina el código de la aplicación, glibc y la biblioteca UKL en un archivo binario.

Los ingenieros están trabajando en una serie de deficiencias. Por ejemplo, planean mover la memoria TLS del espacio del kernel y abandonar vmalloc al administrar la asignación de memoria para simplificar el sistema.

Opiniones


Los desarrolladores de Red Hat dicen que UKL puede ser una alternativa completa para iniciar procesos que funcionan directamente con hardware (sin pasar por el núcleo). Los autores del artículo original afirman ( p. 2 ) que el servicio de caché de memoria caché en unikernels funciona un 200% más rápido que en Linux.

En general, la comunidad de TI también respondió positivamente a la iniciativa de los autores del artículo original. Los residentes de Hacker News señalaron que la arquitectura de unikernels aumentará significativamente la seguridad del entorno de software. En caso de hackear la aplicación, el hacker solo tendrá acceso a su binario.


Fotos - Jack Young - Unsplash

Uno de los residentes de Hacker News incluso propuso una solución radical: reescribir el kernel de Linux bajo unikernel desde cero hasta Rust. Según él, el lenguaje resolverá el problema con una gran cantidad de errores relacionados con la seguridad de la memoria. Otro usuario calificó la idea como buena, pero sugirió esperar unos años a que los desarrolladores del lenguaje se ocuparan de las inestabilidades de la biblioteca. Aunque un entusiasta ya está escribiendo su sistema operativo en Rust. Las fuentes se pueden encontrar en GitHub .

Otras implementaciones


UKL no es la única implementación del sistema operativo basado en unikernels. Por ejemplo, un equipo de ingenieros de la Universidad Politécnica de Virginia, Qualcomm y la Universidad Técnica Rin-Westfalia de Aquisgrán en Alemania está desarrollando una solución similar. Su núcleo ligero se llama HermiTux . Le permite iniciar rápidamente aplicaciones en la parte superior del hipervisor; según los autores, el tiempo de descarga no supera los 0.1 segundos. El consumo de memoria en el entorno de prueba es de 9 MB, que es diez veces menos que el kernel clásico de Linux.

También tiene sentido mencionar el sistema operativo MirageOS desarrollado en OCaml. El kernel puede ejecutarse sobre hipervisores Xen, KVM, BHyve y VMM (OpenBSD), así como en plataformas móviles. El sistema admite varias docenas de bibliotecas OCaml para realizar operaciones de red (DNS, SSH, OpenFlow, HTTP, XMPP), trabajando con almacenamientos y procesamiento paralelo de datos. Podemos decir que MirageOS es uno de los primeros proyectos exitosos de unikernels. Curiosamente, su sitio de blog también se implementa como unikernel.

Estas organizaciones ya utilizan estos sistemas operativos en entornos de producción, por ejemplo, la Universidad de Cambridge , IBM, Ericsson y Docker . Es probable que pronto se incorpore uno nuevo a estos sistemas operativos: Unikernel Linux.



Sobre qué escribimos en un blog corporativo:

Source: https://habr.com/ru/post/462357/


All Articles