内容简介:【51CTO.com快译】rust-vmm有助于在Rust虚拟机监控器之间共享核心虚拟化组件。一年多以前,我们开始开发Firecracker,这是在KVM(基于内核的虚拟机)上运行的虚拟机监控器(VMM)。我们想创建一种迅速启动虚拟机的轻量级VMM,内存占用少,从而打造高密度云环境。
【51CTO.com快译】rust-vmm有助于在Rust虚拟机监控器之间共享核心虚拟化组件。
一年多以前,我们开始开发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
下面讨论的组件目前正在开发中。
图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打造未来的虚拟化架构》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 5G网络架构与无线网虚拟化
- 服务器虚拟化开源技术主流架构之争
- 采用虚拟化技术搭建基础架构云的优劣势分析
- 云基础架构统一安全防护,360虚拟化安全新品重磅来袭
- VPS虚拟化架构OpenVZ、KVM、Xen、Hyper-V的区别
- 虚拟化生态系统及实现从虚拟化走向云端
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Imperfect C++中文版
威尔逊 / 荣耀、刘未鹏 / 人民邮电出版社 / 2006-1 / 75.0
汇集实用的C++编程解决方案,C++虽然是一门非凡的语言,但并不完美。Matthew Wilson使用C++十年有余,其间发现C++存在一些固有的限制,需要一些颇具技术性的工作进行弥补。本书不仅指出了C++的缺失,更为你编写健壮、灵活、高效、可维护的代码提供了实用的技术和工具。Wilson向你展示了如何克服C++的复杂性,穿越C++庞大的范式阵列。夺回对代码的控制权,从而获得更理想的结果。一起来看看 《Imperfect C++中文版》 这本书的介绍吧!