Gondolin快照教程micro-VM磁盘检查点如何生成与快速恢复【免费下载链接】gondolinExperimental Linux microvm setup with a TypeScript Control Plane as Agent Sandbox项目地址: https://gitcode.com/gh_mirrors/go/gondolinGondolin 是一款在本地运行的 Linux micro-VM 沙箱工具TypeScript 控制平面 QEMU专为 AI Agent 执行不可信代码而生。本教程带你掌握它最实用的特性之一磁盘快照checkpoint——一条命令为 micro-VM 生成磁盘检查点再用 qcow2 覆盖层技术实现近乎零成本的快速恢复轻松把沙箱环境存档/读档。Gondolin 快照是什么先搞懂磁盘检查点Gondolin 的快照是仅磁盘快照disk-only checkpoint它只捕获 VM 根磁盘的文件系统状态保存为单个.qcow2文件并在文件末尾追加一段 JSON 元数据记录创建时间、后端兼容性标记、guest 资源 build id 等。官方文档docs/snapshots.md一个关键细节快照不是自包含的。恢复时仍需同一套 guest 资源内核/initramfs/rootfsGondolin 通过元数据中的guestAssetBuildId资源校验和派生的构建 ID自动定位匹配的本地资源。元数据与尾部 trailer 的格式定义在 host/src/checkpoint.ts。如何生成快照两种方式任选方式一CLI 一行命令给会话拍照适合日常使用三步完成# 1. 查看正在运行的会话 npx earendil-works/gondolin list # 2. 对运行中的会话打快照会话会随之停止 npx earendil-works/gondolin snapshot session-id # 3. 也可以指定输出路径和自定义名字 npx earendil-works/gondolin snapshot session-id --output ./my-snapshot.qcow2 --name env-v1要点速览项目说明默认保存位置~/.cache/gondolin/checkpoints/uuid.qcow2自定义目录环境变量GONDOLIN_CHECKPOINT_DIR会话 ID支持完整 UUID 或可无歧义的前缀输出提示成功后打印快照 ID 和对应的恢复命令命令细节见 docs/cli.md。方式二TypeScript API 的vm.checkpoint()在代码中为 VM 打快照只需一行但注意checkpoint()会关闭并消费原 VM调用后原 VM 对象不可再使用const vm await VM.create(); await vm.exec(npm install); // 装好依赖、配置好环境…… const checkpoint await vm.checkpoint(./my-snapshot.qcow2); // 原 VM 已关闭之后通过 checkpoint 恢复最快恢复方法一条命令读档CLI 恢复bash --resume# 按快照 ID 从默认检查点缓存恢复 npx earendil-works/gondolin bash --resume snapshot-id # 或直接指定 .qcow2 文件路径 npx earendil-works/gondolin bash --resume /path/to/snapshot.qcow2恢复后你会得到一个与打快照时磁盘状态完全一致的新 VM立即进入 shell 继续干活。TS API 恢复支持一份快照并发多次恢复import { VmCheckpoint } from earendil-works/gondolin; const checkpoint VmCheckpoint.load(./my-snapshot.qcow2); const task1 await checkpoint.resume(); const task2 await checkpoint.resume(); // 同一快照可恢复多次为什么这么快恢复时不会复制整个磁盘而是新建一个临时 qcore2 覆盖层overlay挂在快照之上写入走覆盖层、关闭即丢弃实现见 host/src/checkpoint.ts启动开销与启动一台全新 VM 相当。 移动过位置的快照还能自我修复恢复时若发现 qcow2 记录的 backing 路径失效Gondolin 会自动执行 in-place rebaseqemu-img rebase -u修正路径无需手动干预。打快照前必知的 5 个坑 ⚠️只拍磁盘不拍内存不捕获 RAM 与进程状态恢复后是从磁盘状态重新启动不是时间旅行。只拍根磁盘VFS 挂载点和内存挂载不在快照内。tmpfs 路径默认不拍/root、/tmp、/var/log等默认由 tmpfs 承载其写入不会进快照。可用tmpfs选项把它们放回根磁盘参见 docs/sdk-storage.md。元数据在文件尾部别用工具转格式qemu-img convert这类会重写镜像的工具会丢掉 trailer导致VmCheckpoint.load失败。恢复可能改写快照文件rebase 是就地修改想要不可变快照恢复前自行拷贝一份。另外快照同时支持qemu和krun两种后端但恢复时元数据中的后端兼容性标记会做校验跨后端恢复需要 guest 资源含 krun 启动工件见 docs/backends.md。小结生成快照gondolin snapshot session-id或vm.checkpoint(path)产出单个.qcow2检查点文件快速恢复gondolin bash --resume id或checkpoint.resume()基于 qcow2 覆盖层开销极低且可并发记住局限磁盘级检查点 ≠ 整机热快照tmpfs/VFS 内容不在其中参考文档快照机制、CLI 命令、SDK 存储与检查点、核心实现【免费下载链接】gondolinExperimental Linux microvm setup with a TypeScript Control Plane as Agent Sandbox项目地址: https://gitcode.com/gh_mirrors/go/gondolin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考