大家好,我是何三,独立开发者
<20ms 克隆一个正在运行的虚拟机,2个4GB VM只用1GB内存,比Firecracker快10倍。这就是Clone——一个用Rust写的轻量级VMM,正在颠覆多租户shell托管和FaaS平台的成本结构。
传统共享shell托管有个致命问题:所有用户共享同一个内核。容器逃逸每月都有新漏洞,2026年了,没人敢让不信任的用户共享内核。VM能解决安全问题,但每个VM都要独占内存,跑100个shell用户就得100个VM,成本直接爆炸。
我们试过所有现有VMM——QEMU、Firecracker、Cloud Hypervisor,没一个能在VM级隔离下,做到共享shell级别的资源效率。
所以有了Clone。
Shadow Clone技术,核心就一句话:启动一个模板VM,热好所有二进制文件,然后像Linux fork进程一样,用Copy-on-Write(CoW)的方式fork出隔离副本。所有fork共享相同的物理内存页,直到它们写入——只有脏页才消耗额外内存。
数据说话:2个fork出来的4GB Ubuntu VM,只用了1GB主机内存(传统方案需要8GB)。3个Alpine VM,总共13MB RSS(模板本身127MB)。10个512MB的空闲VM,只用~200MB内存,而不是5GB。

我看了下demo视频,从模板fork到网络就绪,确实在160ms左右,这速度在VMM领域还是很不错的

为什么需要这种级别的效率?
场景一:Unix Shell托管
unixshells.com(项目背后的公司)用Clone作为shell托管的VMM。传统共享shell不安全,容器逃逸是家常便饭。但给每个用户一个完整VM,内存成本又受不了。
Clone的解决方案: 1. 启动一个4GB Ubuntu模板,预装200多个开发工具 2. 热好所有二进制文件,创建快照 3. 用户登录时,fork一个副本——~160ms 4. 每个用户获得完整KVM硬件隔离,但内存像共享一样高效
# 模板准备
sudo ./shell-template/build.sh
sudo ./shell-template/warm.sh
# 给用户fork shell
clone fork --template /templates/shell-base --net
场景二:FaaS平台
Serverless函数冷启动是个老大难问题。AWS Lambda用Firecracker,冷启动也要5-10ms(还得用定制内核)。Clone用Alpine模板,<20ms就能fork一个运行环境。
关键是,运行时已经预热好了。Python解释器、ML库、Node.js进程,全在内存里等着。fork出来就能执行,不用重新加载。
场景三:CI/CD Runner
共享基础镜像+每个构建独立的可写覆盖层。强隔离,快速销毁。
sudo clone run --kernel vmlinuz --rootfs ubuntu-ci.img --overlay --net
技术细节(能看懂多少看多少)
Clone的核心是三层内存管理:
- Overcommit:
MAP_NORESERVE,页表先分配,物理内存等第一次写入时才真正分配 - KSM:
MADV_MERGEABLE,跨VM去重相同内存页 - Balloon:分级回收——空闲30秒回收25%,2分钟回收50%,5分钟到最低水位
结果就是:内存像水一样流动。活跃VM用满分配的内存,空闲VM自动释放给其他VM用。
Shadow Clone fork流程:
Boot template → warm binaries → snapshot memory + registers
↓
New VM = mmap(snapshot, MAP_PRIVATE) ← ~160ms
↓
Inject identity (hostname, CID, IP, MAC)
↓
Transport reset → agent reconnects → exec ready
所有fork共享相同的物理页,直到写入时才触发CoW。没有内核启动过程,没有设备重新枚举。用户空间vsock和网络后端处理fork状态,不需要内核参与。

实测数据: - Shadow Clone fork (Alpine, minimal): <20ms - Shadow Clone fork (4GB Ubuntu, to exec): ~160ms - 增量快照大小: 192KB (比完整快照小682倍) - 实时迁移停机时间: 1ms
(这数据让我想起Firecracker刚出来时的震撼,但Clone在内存效率上更激进)
上手试试
安装很简单(需要Linux + KVM):
# 构建
cargo build --release
# 创建rootfs
sudo clone rootfs create --distro ubuntu --size 2G -o ubuntu.img
sudo clone rootfs create --distro alpine --size 1G -o alpine.img
# 启动VM
sudo clone run --kernel /boot/vmlinuz-$(uname -r) --rootfs alpine.img
# 带网络
sudo clone run --kernel vmlinuz --rootfs alpine.img --net --mem-mb 512
# 带主机目录共享
sudo clone run --kernel vmlinuz --rootfs alpine.img --shared-dir /tmp/shared:myfs
如果你要做多租户shell托管,项目提供了完整模板:
# 构建Ubuntu 24.04模板,带200+开发工具
sudo ./shell-template/build.sh
# 预热二进制文件,创建快照
sudo ./shell-template/warm.sh
# 给用户fork shell
clone fork --template /templates/shell-base --net
跑起来后,可以attach到控制台,或者在VM里执行命令:
# attach到串口控制台(Ctrl-Q退出)
clone attach
# 在运行中的VM里执行命令
clone exec -- ls /

同类工具链
如果你对轻量级虚拟化感兴趣,最近还有几个类似项目值得关注:
- smolvm - 便携式虚拟机,<200ms冷启动,支持macOS原生虚拟化
- Firecracker - AWS Lambda背后的VMM,安全性和性能都很出色
- Cloud Hypervisor - Intel和微软维护的VMM,virtio设备支持最全
Firecracker现在也有snapshot功能,但Clone在内存共享上更激进,适合高密度多租户场景
总结
Clone解决了一个经典矛盾:安全隔离 vs 资源效率。传统方案要么不安全(容器),要么太贵(完整VM)。Clone用CoW内存共享,在保持KVM硬件隔离的同时,把内存成本降到了接近容器的水平。
25K行Rust代码,单二进制,63个端到端测试(62通过,1跳过)。代码很干净,没有fork任何现有VMM代码库。
对于做shell托管、FaaS平台、CI/CD系统的团队,这可能是2026年最重要的基础设施升级。内存成本降80%,安全性从容器级提升到VM级,fork速度从秒级降到毫秒级。
话说隔壁的云厂商还在卖按核按内存计费的VM,这种技术普及后,他们的利润率怕是要被挤压了。
本文使用 MGO 编辑并发布
关注"何三笔记",回复"mgo" 免费下载使用