用rust-vmm打造未来的虚拟化架构

栏目: 编程语言 · Rust · 发布时间: 5年前

内容简介:【51CTO.com快译】rust-vmm有助于在Rust虚拟机监控器之间共享核心虚拟化组件。一年多以前,我们开始开发Firecracker,这是在KVM(基于内核的虚拟机)上运行的虚拟机监控器(VMM)。我们想创建一种迅速启动虚拟机的轻量级VMM,内存占用少,从而打造高密度云环境。

【51CTO.com快译】rust-vmm有助于在Rust虚拟机监控器之间共享核心虚拟化组件。

用rust-vmm打造未来的虚拟化架构

一年多以前,我们开始开发Firecracker,这是在KVM(基于内核的虚拟机)上运行的虚拟机监控器(VMM)。我们想创建一种迅速启动虚拟机的轻量级VMM,内存占用少,从而打造高密度云环境。

我们开始通过分支Chrome OS VMM(CrosVM)来开发Firecracker,但由于我们针对不同的客户使用场景,没过多久就有了分歧。CrosVM在ChromeOS中提供 Linux 应用程序隔离,而Firecracker用于大规模运行多租户工作负载。尽管我们现在走不同的道路,仍然拥有通用的虚拟化组件,比如基于KVM输入/输出控件(ioctls)的包装器、最小的内核加载器以及使用Virtio设备模型。

考虑到这一点,我们开始考虑共享通用代码的最佳方法。拥有共享的代码库可以提升这两个项目的安全和质量标准。目前,修复安全漏洞需要重复的工作:将更改从一个项目移植到另一个项目,经历不同的审核流程来合并更改。开源Firecracker后,我们接到了添加功能的请求,包括GPU支持和启动bzImage文件。一些请求与Firecracker的目标不一致,却是原本合情合理的使用场合,只是没有找到适合实施的地方。

rust-vmm项目

rust-vmm项目于2018年12月问世,当时亚马逊、谷歌、英特尔和Red Hat的员工开始讨论共享虚拟化软件包的最佳方式。在此过程中,更多的贡献者加入了这项计划。我们仍然处于这个过程的开始阶段,只有一个组件发布到了Crates.io(Rust的软件包注册中心),另外几个组件(比如Virtio设备、Linux内核加载器和KVM ioctls包装器)正在开发中。两个用Rust编写的VMM正在积极开发中,构建其他专用VMM日益受到关注,rust-vmm是作为共享核心虚拟化组件的主机而诞生的。

rust-vmm的目标是使社区能够创建自定义VMM,仅针对使用场合导入所需的构建模块。我们决定将rust-vmm组织成一个多存储库项目,每个存储库对应一个独立的虚拟化组件。每个单独的构建模块都在Crates.io上发布。

使用rust-vmm创建自定义VMM

下面讨论的组件目前正在开发中。

用rust-vmm打造未来的虚拟化架构

图1. 自定义rust-vmm组件

图右侧的每个框都是对应于一个软件包(在Rust中名为crate)的GitHub存储库。一个crate的功能可以进一步分成多个模块,比如virtio-devices。不妨看看这些组件及一些潜在的使用场合。

  • KVM接口:在KVM上创建VMM需要可以从Rust调用KVM功能的接口。kvm-bindings crate代表面向KVM内核头的Rust外部功能接口(FFI)。因为头只包含结构和定义,我们还有基于KVM ioctls(kvm-ioctls)的包装器,我们用它们来打开dev/kvm、创建虚拟机和创建vCPU等。
  • Virtio设备和速率限制:Virtio拥有一套前后端架构。目前在rust-vmm中,前端实现在virtio-devices crate中,后端位于vhost软件包中。Vhost支持用户空间驱动程序和内核空间驱动程序,但用户也可以将virtio-devices插入到自定义后端。virtio-bindings是使用Virtio Linux头生成的Virtio设备的绑定。virtio-devices crate中的所有设备都使用条件编译,作为模块独立导出。一些设备(比如block、net和vsock)在每秒I/O和带宽方面支持速率限制。这可以通过使用rate-limiter crate中提供的功能来实现。
  • kernel-loader负责将ELF内核映像的内容加载到访客内存中。

比如说,假设我们想要构建一个自定义VMM,让用户可以创建和配置在KVM上运行的单个虚拟机。作为配置的一部分,用户能够指定内核映像文件、根文件系统、vCPU数量和内存大小。可以使用kvm-ioctls crate来实现虚拟机资源的创建和配置。可以使用kernel-loader将内核映像加载到访客内存中,并且可以使用virtio-devices block模块来指定根文件系统。我们的VMM所需的最后一点是编写VMM Glue,这个代码负责将rust-vmm组件与VMM用户接口集成起来,允许用户创建和管理虚拟机。

原文标题:Building the virtualization stack of the future with rust-vmm,作者:Andreea Florescu

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】


以上所述就是小编给大家介绍的《用rust-vmm打造未来的虚拟化架构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

A=B

A=B

Marko Petkovsek、Herbert S. Wilf、Doron Zeilberger / AK Peters, Ltd. / 1996-01 / USD 49.00

At some point, this book describes methods of solving the problem raised by Donald E. Knuth in the classical book "The Art of Computer Programming, Volume 1: Fundamental Algorithms". The main purpo......一起来看看 《A=B》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具