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

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

译文
作者:布加迪编译 2019-03-21 08:59:35

云计算

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

创新互联专注于企业成都全网营销、网站重做改版、宜城网站定制设计、自适应品牌网站建设、H5高端网站建设成都做商城网站、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为宜城等各大城市提供网站开发制作服务。

【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用户接口集成起来,允许用户创建和管理虚拟机。

网站题目:用rust-vmm打造未来的虚拟化架构
分享路径:http://www.mswzjz.com/qtweb/news18/197918.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联