拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AgentENV PVM部署指南:没有KVM的云主机如何运行沙箱环境

AgentENV PVM部署指南:没有KVM的云主机如何运行沙箱环境 AgentENV PVM部署指南没有KVM的云主机如何运行沙箱环境【免费下载链接】AgentENVAgentENV (AENV) is a distributed platform for running agent environments at scale.项目地址: https://gitcode.com/gh_mirrors/age/AgentENVAgentENVAENV是一个用于大规模运行 Agent 环境的分布式沙箱平台它依赖 Firecracker 微虚拟机来隔离每个沙箱因此通常需要宿主机的/dev/kvm设备。但许多云厂商的虚拟机并未开放嵌套虚拟化/dev/kvm根本不存在。这时就可以使用PVM 部署模式——一种无需嵌套虚拟化即可提供 KVM 兼容接口的替代虚拟ization方案让普通云主机也能跑起 AgentENV 沙箱。⚠️ 注意PVM 目前是实验性特性其宿主机内核尚未合入 Linux 主线测试和安全更新可能不如主线内核完善生产环境请谨慎评估。什么是 PVM为什么需要它 标准 KVM 依赖 CPU 的硬件虚拟化扩展。在云上买的虚拟机里这一层通常被屏蔽了于是 Firecracker 无法启动。PVM 源自论文《Efficient Shadow Paging for Deploying Secure Containers in Cloud-native Environment》它通过影子分页Shadow Paging技术实现轻量虚拟化不依赖嵌套虚拟化在普通云 VM 上即可运行KVM 兼容接口加载 PVM 模块后宿主机同样会生成/dev/kvmAgentENV 无需任何改动照常创建 Firecracker 微虚拟机代价是换内核需要安装一个支持 PVM 的专用宿主机内核并加载kvm_pvm模块。每个 AgentENV 节点只会运行在一种虚拟化模式KVM 或 PVM下模式在源码中由 src/virtualization.rs 定义默认值为 KVM模式AgentENV 配置宿主机状态标准 KVMvirtualization_mode kvm标准 KVM 模块PVMvirtualization_mode pvmPVM 内核 kvm_pvm已加载完整说明见官方文档 docs/src/deployment/pvm.md。部署前准备清单 ✅x86_64 架构的 Linux 服务器PVM不支持 ARMRoot 权限且可以安装内核并重启服务器发布包支持的 DEB 系或 RPM 系发行版或能从源码编译内核建议具备控制台Console访问权限防止新内核无法启动时失联。内核版本搭配建议宿主机内核与 Guest 内核应保持同一 PVM 版本。AgentENV 打包的 Guest 内核基于 6.12.33对应的预编译宿主机内核包也是 6.12.33 版本直接选用即可避免 ABI 不兼容导致 Guest 无法启动。第一步安装 PVM 宿主机内核AgentENV 不会替你更换运行中的内核这一步需要手动完成。1. 下载并安装预编译内核包Debian / Ubuntu 系下载linux-image-6.12.33的.deb包然后sudo dpkg -i linux-image-6.12.33_*.deb sudo update-grubFedora / RHEL / CentOS 等 RPM 系下载kernel-6.12.33的.rpm包然后sudo rpm -ivh --oldpackage kernel-6.12.33_*.rpm sudo grubby --set-default /boot/vmlinuz-6.12.33-*如果机器上还装了更高版本的内核记得在启动管理器中把 6.12.33 设为默认启动项。2. 重启并验证sudo reboot uname -r # 应输出 6.12.33 或 6.12.33-g91e9c9be4472如果uname -r仍显示旧内核说明启动项没选对请修正后再重启。第二步加载并验证 kvm_pvm 模块 sudo modprobe kvm_pvm lsmod | grep kvm_pvm # 模块已加载 ls -l /dev/kvm # KVM 兼容设备出现确认模块加载成功后配置开机自动加载echo kvm_pvm | sudo tee /etc/modules-load.d/kvm-pvm.conf宿主机准备完成的标准是三点/sys/module/kvm_pvm存在、/dev/kvm存在、AgentENV 运行账户可读写/dev/kvm。第三步以 PVM 模式安装 AgentENV准备好宿主机后AgentENV 侧只需要在默认 KVM 安装流程上加一个环境变量AENV_VIRTUALIZATION_MODEpvm有三种方式任选其一 ️方式 A安装脚本推荐curl -fsSL 安装脚本地址 | sudo AENV_VIRTUALIZATION_MODEpvm bash sudo systemctl start aenv安装脚本 scripts/install.sh 会自动下载 PVM 专属的 Firecracker 与 Guest 内核制品、把模式写入/etc/default/aenv并配置好服务账户对/dev/kvm的访问权限它不会替你装内核。方式 BDocker使用专用的 PVM 镜像默认即pvm模式仅含 PVM 运行时制品docker run --rm -it --name aenv-server \ --device /dev/kvm --privileged \ -v /dev:/dev -p 8000:8000 \ ghcr.io/kvcache-ai/aenv-server:latest-pvm构建 PVM 镜像时构建文件为 deploy/docker/Dockerfile.agentenv加参数--build-arg AENV_VIRTUALIZATION_MODEpvm即可。方式 C源码构建export AENV_VIRTUALIZATION_MODEpvm cargo run --bin server -- --setup-only make start-server也可以在 TOML 配置中设置参考 config/default.toml 中的virtualization_mode kvm改成pvm即可。注意环境变量优先级高于 TOML 配置。另外一个小细节KVM 模式下默认开启的内存快照脏页跟踪在 PVM 模式下会自动关闭该组合尚未测试。第四步验证部署是否成功 grep AENV_VIRTUALIZATION_MODE /etc/default/aenv # 应显示 pvm sudo systemctl status aenv curl http://127.0.0.1:8000/health服务健康后后续操作与标准部署完全一致aenv pull ubuntu:22.04 --name ubuntu aenv start ubuntu 恭喜你云主机上跑起了第一个沙箱。多节点部署注意事项 同一运行时池内保持模式一致PVM 节点统一加载kvm_pvm、使用 PVM 镜像并导出AENV_VIRTUALIZATION_MODEpvmK8s 场景下给 PVM 节点打标签并配置节点选择器避免 PVM Pod 调度到 KVM 节点不要混用快照会记录创建时的虚拟化模式节点会拒绝恢复其他模式的状态。KVM 与 PVM 节点不要共用同一份持久化沙箱目录。常见问题速查 报错/现象原因与解法PVM virtualization mode is only supported on x86_64 hosts当前是 ARM 机器请换 x86_64 服务器PVM mode requires the kvm_pvm host module to be loaded执行uname -r确认是否在 PVM 内核上再sudo modprobe kvm_pvm若提示找不到模块说明内核不对加载模块后仍无/dev/kvm查看sudo dmesg \| tail -n 100检查 PVM 内核安装与启动参数/dev/kvm权限不足ls -l /dev/kvm、id aenv检查属主与用户组改组后需重启服务或会话下载/使用的仍是标准 KVM 制品确认/etc/default/aenv中已有 pvm 模式然后重新执行--setup-only预置依赖快照或暂停沙箱无法恢复模式不匹配请回到创建该状态的原模式节点或在目标模式重建并重新打快照更多排查思路可参考 docs/src/troubleshooting/common-issues.md。写在最后PVM 模式让 AgentENV 摆脱了必须有硬件虚拟化的门槛在不支持嵌套虚拟化的普通云主机上只要完成装 PVM 内核 → 加载kvm_pvm模块两个宿主机步骤就能像标准 KVM 部署一样创建模板、启动沙箱。如果你的云厂商支持嵌套虚拟化直接使用标准 KVM 部署即可无需折腾 PVM。【免费下载链接】AgentENVAgentENV (AENV) is a distributed platform for running agent environments at scale.项目地址: https://gitcode.com/gh_mirrors/age/AgentENV创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表