AgentENV按需加载详解:配置共享存储让镜像库轻松超越本地磁盘
【免费下载链接】AgentENVAgentENV (AENV) is a distributed platform for running agent environments at scale.项目地址: https://gitcode.com/gh_mirrors/age/AgentENV
AgentENV(AENV)是一个用于大规模运行 AI Agent 环境的分布式平台。它的按需加载(On-Demand Loading)能力是其中最实用的特性之一:通过 overlaybd 技术,镜像和快照只在启动时被读取用到的部分,本地磁盘则退化为一个"有界缓存"——保留热数据、自动淘汰冷数据。配置好共享存储后,你的镜像库总容量可以轻松超越本地磁盘,且无需预热(pre-warm)任何一台节点。
为什么需要按需加载?
在传统部署中,每台机器都要预先下载完整镜像,磁盘容量直接限制了你能跑多少种环境。AgentENV 用按需加载解决了这个问题 🚀:
| 痛点 | 传统方式 | AgentENV 按需加载 |
|---|---|---|
| 镜像库容量 | 受限于本地磁盘 | 可超过本地磁盘数倍 |
| 新节点扩容 | 需全量预热,耗时漫长 | 即插即用,边读边用 |
| 冷数据占用 | 长期占据磁盘空间 | 自动淘汰,仅保留热数据 |
| 启动速度 | 依赖下载进度 | 集群范围内保持快速启动 |
官方文档中描述:本地磁盘作为有界缓存(bounded cache),保留热数据并淘汰冷数据,因此节点既不需要预热每一个镜像,也不必保存每个快照的完整副本。这一设计已在生产环境中支撑了百万级规模的镜像库。
💡 核心原理:每个镜像被组织为分层结构(LSMT 层),启动时只读取实际用到的数据块。读取优先命中本地缓存,未命中则从共享存储拉取,同时后台把数据回填进本地缓存——这就是 storage/overlaybd/ 中的 overlaybd 运行时所做的全部事情。
配置前准备:网络要求
按需加载的效果与存储连接速度强相关,请先确认:
- 至少 1 Gbps的存储网络带宽
- 强烈推荐 10 Gbps 或更快
一键配置步骤
完整教程见官方文档:docs/src/getting-started/on-demand-loading.md
步骤 1:打开配置文件
根据部署方式选择配置路径:
# systemd 服务部署(已安装) sudo vim /var/lib/aenv/config/config.toml如果你使用 Docker 部署,可以先获取默认配置文件(仓库内也有一份:config/default.toml),然后进行编辑。
步骤 2:选择并配置共享存储后端
AgentENV 支持两种共享存储后端,二选一即可。
方式 A:POSIXFS(共享文件系统)
适合已有 NFS、CephFS 等共享文件系统的场景——三行配置即可启用:
[snapshot] repository_backend = "posix_fs" [backend.posix_fs] snapshot_store = "/mnt/aenv-snapshots" [image.cache.remote_blocks] max_size_gb = 100方式 B:OSS(S3 兼容对象存储)
适合云上部署,把快照持久化到对象存储:
[snapshot] repository_backend = "oss" [backend.oss] endpoint = "YOUR_ENDPOINT" bucket = "YOUR_BUCKET" region = "YOUR_REGION" prefix = "YOUR_PREFIX" cache_max_size_gb = 100 access_key_id = "YOUR_ACCESS_KEY_ID" access_key_secret = "YOUR_ACCESS_KEY_SECRET" [image.cache.remote_blocks] max_size_gb = 100⚠️ 如果你的对象存储服务商要求 virtual-host 寻址方式(例如部分 Tigris 或 Cloudflare R2 部署),请额外设置
addressing_style = "virtual",详见配置参考中的[backend.oss]章节。
步骤 3:重启使配置生效
# systemd 部署 sudo systemctl restart aenvDocker 部署则停止旧容器,用更新后的配置和共享快照目录重建容器(POSIXFS 方式需要把/mnt/aenv-snapshots挂载进容器)。
配置完成后,AgentENV 会默认从共享存储加载模板和快照,无需其他改动。
关键参数速查表
这几个参数决定了按需加载的缓存行为,按需调整即可(完整说明见 docs/src/configuration/reference.md):
| 参数 | 默认值 | 作用 |
|---|---|---|
image.cache.remote_blocks.max_size_gb | 100 | 远程块缓存上限,决定本地保留多少"热镜像块" |
image.cache.capacity_gb | 100 | 本地镜像缓存容量预算,超出后按 LRU 淘汰 |
backend.oss.cache_max_size_gb | 10 | OSS 节点本地产物缓存上限 |
memory_snapshot.background_download.enable | true | 远程内存快照层的后台下载,边读边补 |
📌 经验法则:remote_blocks缓存越大,冷启动越少回源共享存储,但占用的本地磁盘也越多。建议设为本地磁盘空闲空间的 50% 左右。
进阶:进一步优化加载性能
- 快照 P2P 加速(实验性):src/snapshot/ 支持将已提交的快照通过 P2P 传输在节点间传播,解析时优先从邻居节点获取。注意 P2P 目前标记为实验功能,生产环境建议保持关闭(docs/src/internals/p2p-design.md)。
- 快照持久化到共享存储:快照支持持久化到 S3 兼容对象存储或共享分布式文件系统,防止数据丢失(相关文档:docs/src/concepts/snapshots/index.md)。
- 了解整体架构:想深入理解 overlaybd 分层、ublk 块设备和按需读取的完整链路,可阅读架构文档 docs/src/internals/architecture.md。
小结
AgentENV 的按需加载让"镜像库大于本地磁盘"从难题变成默认能力,只需三步:
- ✅ 打开
config.toml - ✅ 选择 POSIXFS 或 OSS 后端,配置共享存储路径
- ✅ 重启服务
配合足够快的网络(10 Gbps+),你可以在不预热任何节点的情况下,让集群快速启动任意一种镜像环境——这正是 AgentENV 在大规模 Agent 训练场景中保持高效的关键所在。
【免费下载链接】AgentENVAgentENV (AENV) is a distributed platform for running agent environments at scale.项目地址: https://gitcode.com/gh_mirrors/age/AgentENV
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考