ZeroVM - 轻量级虚拟化平台


Apache
Linux
C/C++

软件简介

ZeroVM是第一个专门为云设计的虚拟机管理程序。当前架构的云是支离破碎的,因为它依赖于一个已经逐步消失的世界(客户端/服务器模型世界)里的虚拟机管理程序来进行设计。因此,我们构建了ZeroVM。

ZeroVM 是一个开源轻量级虚拟化平台,基于 Google Native Client 项目,提供如下优势:

  • 速度 : 现在最快的虚拟机服务器至少需要2分钟来创建,而 ZeroVM 只需不超过 5 毫秒
  • 隔离 : ZeroVM 是首个隔离每个用户每个应用的虚拟机管理系统,而老的平台需要在多个用户间分享一个虚拟机,让应用开发更加复杂
  • 高效 : ZeroVM 只虚拟化做实际工作的部分

ZeroVM 与传统虚拟机平台的差别:

  • C & UNIX 进程抽象: 与硬件抽象不同,ZeroVM 使用 UNIX 风格的进程,进程间通讯使用管道 (与 KVM / XEN / VMWare 不同).
  • 每次请求创建一个一次性虚拟机: 在 ZeroVM 中,每个实例不会在请求间重用,每个进来的请求都会创建一个全新的虚拟机
  • 轻松的嵌入式: ZeroVM 是一个虚拟机,可执行文件只有 ~75KB. 可轻松嵌入到已有的存储系统
  • 高性能: ZeroVM 只需微不足道的 CPU、内存和 IO 消耗
  • 充分利用底层硬件: Vectorization and manual optimization of inner loops (unlike JVM).
  • 真正安全的隔离: ZeroVM has no need for additional inner sandboxes (unlike LXC/OpenVZ) or outer sandbox (unlike JVM). ZeroVM derives its security from the proven Chrome NaCl.
  • 确定性: Unlike other hypervisors, ZeroVM uniquely is deterministic, and hence offers true portability, productive development, automatic failover and transparent VM migration.
  • 事务性: ACID transactionality on VM level, which is unique to ZeroVM.
  • 网络中立: Pipes can be backed, transparently, by any transport: inproc, IPC, RDMA, InfiniBand, TCP/IP, etc.. This is unique to ZeroVM.
  • 易于集群: No network virtualization is needed. Cluster routing is also deterministic, automatically recoverable and transparently movable. This is not available in other platforms like KVM, XEN or VMWare.
  • Host-OS 中立: ZeroVM decouples VM abstraction from host OS abstraction so it can run on many unmodified OSes in the mode of an ordinary application. ZeroVM doesn’t expose host syscalls, but rather re-implements them as a part of the untrusted component of ZeroVM. This is unlike Chroot/LXC/OpenVZ.
  • 语言中立: C/C++/Assembly and hence anything else is also supported. For example, Python, Ruby, PHP, Perl can all be executed in ZeroVM with their native interpreter compiled to ZeroVM ISA.
  • 便携: We are working on a portable version, in which LLVM bitcode will be dynamically compiled inside a VM to either ARM or Intel. Meanwhile the developer is required to re-compile (just like with any other C/C++ app) (unlike everything but JVM). Please note that dynamic languages work as-is when using their native interpreter.
  • 弹性: ZeroVM makes it practical to spawn virtual clusters for both long and short duration. For example 1000 ZeroVMs can be provisioned for just 10 seconds each across an entire cluster.
  • 一致性: All VMs have a completely identical execution environment every time they are substantiated: identical instruction set, identical amount of memory, identical IO, etc. Hence any ZeroVM executable binary runs on any ZeroVM host, always, and each takes exactly same path due to determinism.
  • 可嵌套: ZeroVM can be nested with non-accumulating overhead and reliably models hierarchical trust domains like IaaS<PaaS<SaaS<Extentions.
  • 可聚合: ZeroVM can aggregate many physical servers and represent them as a single virtual system. Moreover, ZeroVM can represent any number of virtual systems backed by any number of physical servers. This is unlike everything but ScaleMP and Ravello.