DurableDir卷实战:Agent Substrate如何持久化Actor数据目录 📅 发布时间:2026/9/20 22:39:06 👁 浏览次数: DurableDir卷实战Agent Substrate如何持久化Actor数据目录【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrateAgent Substrate是一个专为 AI Agent 设计的开源沙箱运行时它让成千上万个 AgentActor以极高密度共享少量物理算力。而它的DurableDir 卷DurableDir Volume正是解决一个关键问题的机制当 Actor 被频繁挂起Suspend和恢复Resume时如何保证应用的数据目录不丢、不脏、跨节点可携带。本文用最短路径带你理解 DurableDir 卷的工作方式并给出可上手的配置方法。为什么 Actor 需要专门的数据卷Agent Substrate 的核心玩法是挂起/恢复空闲的 Actor 被冻结成快照Worker 资源释放给别的 Actor下次有流量时再从快照恢复延迟小于 500ms。这带来一个存储难题数据所在位置随 FULL 快照保存随 DATA 快照保存恢复成本进程内存RAM✅❌需要完整内存镜像容器 rootfs 上的写入✅❌需要 rootfs 增量DurableDir 卷✅✅只需一个小 tar 包关键洞察在这里DurableDir 卷的内容会被 DATA 快照范围捕获。也就是说即使你只想廉价地持久化应用数据而不保留整个内存镜像DurableDir 也能独立于进程内存存活下来——它是 Actor 专属的应用数据面per-Actor application-data surface。概念定义可查阅 docs/glossary.md 的 Volumes 与 Snapshots 章节。最快上手2 段 YAML 声明并挂载 在ActorTemplate中声明 DurableDir 卷非常轻。以官方 Counter 示例为例只需两段配置volumes: - name: data durableDir: {} containers: - name: main volumeMounts: - name: data mountPath: /home/counter完整模板参见 demos/counter/counter-microvm-template.yaml.tmpl其中注释解释了一个巧妙设计counter 的计数文件写到卷上后实际落在宿主机支撑的 virtio-fs 共享目录而非 guest 内存的 rootfs 上——所以即使 DATA 范围快照完全不保留 guest 内存计数值照样幸存。⚠️ 每个声明的卷必须被至少一个容器挂载否则模板校验不通过见 docs/api-guide.md 的 ActorTemplate 章节。microVM 与 gVisor支持数量不同两种沙箱运行时对 DurableDir 的数量限制并不一样microVM可以声明多个DurableDir 卷。它们其实是同一个 virtio-fs 共享里的子目录因此每个卷零额外成本。gVisor目前只能声明 1 个等待 gVisor 支持多个持久化挂载后放开。microVM 侧的实现值得新手一读cmd/ateom-microvm/durable.go 开头的大段注释清晰描述了整条链路——宿主机侧由节点监督者atelet持有为每个 Actor 的每个卷在 internal/ateompath/ateompath.go 定义的路径下创建目录ateom-microvm把这些目录通过stageDurableVolumes绑定进沙箱的共享 virtio-fs 树快照时先把 guest 暂停virtiofsd 是 write-through 模式暂停后 guest 的每次已完成写入都已落到宿主机再把整个 Actor 目录tar进快照恢复时在共享目录的 virtiofsd 启动前把 tar 解回原样guest 永远不会看到恢复中的半成品。顺带一提工作负载遗留的 socket 文件会被跳过而不打包——它们不承载数据应用重启时会自动重建。gVisor 路径的对应实现在 cmd/ateom-gvisor/durable.go。快照范围与恢复方式数据怎么回来 DurableDir 的价值要和快照配置一起看。ActorTemplate的snapshotsConfig通过两个触发器选择捕获范围详见 docs/api-guide.mdonPausePause节点本地检查点时捕获什么onCommitSuspend上传到对象存储时捕获什么必须是onPause的子集。范围有两种范围捕获内容典型用途FULL进程内存 rootfs 增量 DurableDir热恢复状态完整续跑DATA仅 DurableDir 卷内容廉价持久化应用数据当 Resume 走DATA快照时onResume.fromData决定 guest 状态从哪来ColdBoot默认从 OCI 镜像冷启动容器同时恢复 DurableDir 内容——新身体、老记忆Golden叠加模板的 Golden Snapshot进程内存 rootfs 增量让 Actor 在黄金快照的温暖状态上运行自己的数据目前仅 microVM 支持。动手验证跑一遍 Counter Demo 官方 Counter 演示是最好的活教材——它展示状态在挂起/恢复后完好保留。快速上手步骤完整文档见 demos/counter/README.md# 本地 kind 集群一键安装 hack/create-kind-cluster.sh hack/install-ate-kind.sh --deploy-ate-system hack/install-ate-kind.sh --deploy-demo-counter # 创建 Actor 并转发路由端口 go install ./cmd/kubectl-ate kubectl ate create actor my-counter-1 -a ate-demo-counter --template counter-microvm kubectl port-forward -n ate-system svc/atenet-router 8000:80另开终端发请求curl -X POST -H ate-target-actor: ate-demo-counter/my-counter-1 http://localhost:8000/挂起后数据仍在、恢复后计数继续——背后就是 DurableDir 卷在做功。参考资料 术语与快照范围定义docs/glossary.mdActorTemplate 字段全解docs/api-guide.md架构总览docs/architecture.mdmicroVM DurableDir 实现cmd/ateom-microvm/durable.go相关测试cmd/ateom-microvm/durable_test.go演示入口demos/counter/README.md 项目声明Agent Substrate 尚处早期开发阶段API 可能随时变化建议关注官方社区获取最新进展。【免费下载链接】substrateAgent Substrate: the core system项目地址: https://gitcode.com/GitHub_Trending/substrate7/substrate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考