第一个原型:Unikernels作为Linux演进的一个阶段

7月初,来自红帽和波士顿大学的一组工程师发布了一份白皮书,该白皮书提议将单片Linux内核更改为单内核体系结构。 我们决定了解材料,并讨论IT社区对此提案的反应。


照片-Eamonn Maguire-不飞溅

Unikernels作为替代


已知Linux使用单片内核 。 它管理进程,网络功能,外围设备和文件系统访问。 但是,正如红帽和波士顿大学文章的作者所写( 第1页 )一样,这种结构也有其缺点。 特别是,高性能应用程序被迫使用DPDKSPDK之类的框架来绕过内核不受阻碍地访问I / O设备。

云中出现了某些困难。 为了提高安全性,企业应用程序部署在单独的虚拟机上。 每个VM均受成熟操作系统的控制。 结果,服务器的计算资源没有以最佳方式花费。

另一种方法可以改善这种情况-Unikernels。 以下想法是将应用程序与操作系统的必要库链接,并将它们编译为一个二进制文件。 之后,此“二进制文件”可用于引导系统。 这种方法可以使OS的功能专门化以满足特定应用程序的需求。

这样的系统的资源被更有效地利用。 与单核核心体系结构相比,单核还具有更高的性能。 原因是简化了IO路径,因为所有数据和文件都放在一个地址空间中。 它还消除了在用户空间和内核空间之间切换上下文的需求。

来自波士顿大学和Red Hat的工程师团队开发了基于unikernels的Linux原型。 该操作系统称为Unikernel Linux(UKL)。

工程师做了什么


根据开发人员( 第3页 )的说法,他们仅更改了11项,并向Linux内核v5.0.5和glibc添加了20行新代码。 “经典”内核仍可运行-用户可以选择组装方法(是否使用UKL)。

作者创建了一个小的UKL库,在其中放置了特殊的“存根”以掩盖未使用的系统调用。 他们还修改了内核链接程序,以定义新的段类型,例如ELF二进制文件中的TLS(线程本地存储)。 构建过程也进行了修改,现在将应用程序代码,glibc和UKL库组合到一个二进制文件中。

工程师正在解决许多缺点。 例如,他们计划在管理内存分配以简化系统时从内核空间移走TLS内存,并放弃vmalloc。

意见


红帽开发人员 UKL可以作为启动直接与硬件(绕过内核)一起工作的进程的完整替代方案。 原始文章的作者( 第2页 )指出,在unikernels下,memcached缓存服务的运行速度比在Linux下快200%。

总体而言,IT界也对原始文章的作者的积极回应 。 Hacker News的居民指出,Unikernel的体系结构将大大提高软件环境的安全性。 万一黑客入侵了应用程序,黑客将只能访问其二进制文件。


照片-Jack Young -Unsplash

Hacker News的一位居民甚至提出了一个激进的解决方案-将unikernel下的Linux内核从头重写为Rust。 据他介绍,该语言将解决与内存安全性相关的大量错误。 另一位用户称此主意不错,但建议等待几年时间让语言开发人员处理库的不稳定性。 尽管一位发烧友已经在Rust中编写了他的操作系统。 可以在GitHub上找到源。

其他实施


UKL不是基于Unikernels的操作系统的唯一实现。 例如,来自弗吉尼亚理工大学,高通公司和德国亚琛的莱茵威斯特法伦技术大学的工程师团队正在开发类似的解决方案。 他们的轻量级内核称为HermiTux 。 根据作者的说法,它使您可以在管理程序顶部快速启动应用程序-下载时间不超过0.1秒。 测试环境中的内存消耗为9 MB,比传统的Linux内核少十倍。

提及在OCaml上开发的MirageOS OS也很有意义。 该内核可以在Xen,KVM,BHyve和VMM(OpenBSD)虚拟机管理程序之上运行,也可以在移动平台上运行。 该系统支持数十个OCaml库,用于执行网络操作(DNS,SSH,OpenFlow,HTTP,XMPP),使用存储和并行数据处理。 可以说MirageOS是第一个成功的unikernels项目之一。 有趣的是,他的博客网站也被实现为Unikernel。

许多组织已经在生产环境中使用了这些操作系统,例如, 剑桥大学IBM,爱立信和Docker 。 很快会有新的操作系统加入这些操作系统-Unikernel Linux。



我们在公司博客中写的内容:

Source: https://habr.com/ru/post/zh-CN462357/


All Articles