这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

clone

clone

1 - 介绍

unixshells clone 项目介绍

https://github.com/unixshells/clone

Minimal VMM for multi-tenant dev shells and serverless

一款轻量级的 Linux 虚拟机管理器,专为多租户 shell 托管和高密度虚拟机工作负载而构建。仅用 2.5 万行 Rust 代码,单个二进制文件,基于 KVM。

Clone 会先启动一个模板虚拟机,然后通过影子克隆(Shadow Clone)页面映射创建多个隔离的副本。空闲的虚拟机会自动回收。一台运行 100 个 shell 的主机,其内存使用量与运行 10 个 shell 的主机相当。

为什么使用 Clone

问题在于: 传统的共享 shell 托管方式允许每个用户登录到同一个内核。资源占用极低——闲置用户几乎不消耗任何资源。但到了 2026 年,在共享内核上运行多租户环境已不再安全。容器逃逸已成为常态,内核漏洞每月都会出现。在共享内核上运行不受信任的用户根本没有安全的方法。

虚拟机可以解决安全问题——KVM 提供了硬件强制隔离边界。但虚拟机启动速度慢,而且每个虚拟机都会占用自己的内存。像运行 100 个 shell 用户那样运行 100 个虚拟机成本极其高昂。我们考察了所有现有的虚拟机管理程序(VMM)——QEMU、Firecracker、Cloud Hypervisor——但它们都无法在提供虚拟机级别隔离的同时,实现共享 shell 级别的资源效率。

于是我们开发了 Clone。

Clone 的答案: 从热模板创建影子克隆(Shadow Clone)。先启动一个虚拟机,加载所有组件,然后创建快照,之后以小小于 20 毫秒的速度创建多个副本。所有副本共享相同的物理内存页,直到写入数据为止——只有脏页才会占用内存。100 个 fork 的虚拟机的内存使用量相当于 10 个虚拟机。这样既能获得共享 shell 主机的资源配置优势,又能享受 KVM 硬件隔离带来的全面安全性。

三层内存管理(超分 + KSM + balloon/内存气球)、用于主机目录共享的 virtio-fs、预复制实时迁移和 VFIO 设备直通——所有这些都集成在一个比大多数配置文件都小的二进制文件中。