跳转到内容
主页 / 方法 / 数据与状态
横切方法

回滚。分支。共享。每个容器底层的状态模型。

五种文件系统原语加上 BTRFS 写时复制层,让容器状态得以持久化、时光穿梭,并在服务器间迁移——全程无需离开 HTTP。

/hoody/storage · /hoody/databases · /ramdisk · /hoody/shares · BTRFS 快照

写时复制 · 1–5 秒快照/ramdisk 10–20 GB/s跨服务器复制AI 安全回滚
容器文件系统
/
├── hoody/
│   ├── storage/       ← persistent, per-container
│   ├── databases/     ← concurrent-safe SQLite (FUSE)
│   └── shares/        ← inter-container directory mounts
├── ramdisk/           ← RAM-backed, 50% of container memory
└── ...               ← standard Linux FS (ext4, POSIX)
主页 / 方法 / 数据与状态 / 原语
五条路径,五项保障

文件系统地图。

每条路径有不同的持久化与并发特性。选择正确的路径是整个心智模型的核心。各部分详细解析见下方章节。

/hoody/storage

每个容器的持久化目录,重启后保留,快照会捕获它。这是普通的 ext4 目录——无 FUSE,无超出应用自身提供的并发安全保障。

/hoody/databases

FUSE 挂载,自动处理 WAL 锁定。同一服务器上的多进程、多容器可并发安全写入 SQLite——不再出现「数据库已锁定」。仅需改路径:将文件从 /app/data.db 移至 /hoody/databases/data.db。仅限宿主机级别——不支持跨服务器复制。

/ramdisk

速度 10–20 GB/s、延迟 <1µs 的 RAM 支持 tmpfs。上限为容器内存的 50%,按需分配(空时占 0 字节)。容器重启后保留,宿主机重启后清空。使用量与应用内存竞争。

/hoody/shares

通过 Storage Shares API 实现的容器间目录挂载。只读或读写,1 对 1 或项目范围。跨服务器共享自动使用 NFS——无需配置挂载。生命周期管理(接受 / 拒绝 / 挂载 / 撤销)位于 /platform/control-plane。

/ (ext4)

其余所有位置均为标准 Linux 文件系统。POSIX、ext4、完整语义。在 /hoody/* 路径外,行为与任何 VPS 相同。

底层的 BTRFS

磁盘支持路径下的写时复制层。块级快照,容器间数据去重。即时创建,空间高效恢复。(不适用于 /ramdisk——那是 RAM 中的 tmpfs。)

主页 / 方法 / 数据与状态 / 写时复制
快照为何几乎零成本

写时复制,块级,即时完成。

BTRFS 只存储自快照点以来发生变化的块。创建快照仅添加一个标记,不复制数据。成本只与容器实际变化量有关——与快照数量或共享同一基础镜像的容器数无关。

t0 — 快照 A

snapshot A / live
a
b
c

容器文件系统包含块 a、b、c,快照 A 引用所有三块。

t1 — 块 b 发生变化

snapshot A
a
b
c
live
a
b'
c

写修改将 b 复制为 b',原始 b 仍被快照 A 引用。容器现在看到 a、b'、c。

t2 — 快照 B

snapshot A
a
b
c
snapshot B / live
a
b'
c

快照 B 捕获 a、b'、c。A 和 B 共享 a 和 c,只有 b/b' 不同。总存储:4 块而非 6 块。

快照创建:1–5 秒恢复:5–15 秒存储成本:仅变化的块
主页 / 方法 / 数据与状态 / 有状态
两种快照类型

运行中或已停止——容器状态决定快照类型。

运行中创建快照将同时捕获进程、内存、终端历史、浏览器标签页和网络连接以及文件系统;停止后创建则仅捕获文件系统。API 调用相同,类型自动判断。

运行中 → 有状态

完整机器状态,冻结保存。

  • +文件系统(/ 下所有内容,包括 /hoody/*)
  • +运行中的进程(PID、父子关系)
  • +内存 + RAM 转储
  • +终端历史与打开的会话
  • +浏览器标签页与活跃显示内容
  • +数据库连接状态
  • +网络连接(套接字、已建立的 TCP)
  • +打开的文件(fd 表)
  • +环境变量

已停止 → 无状态

仅文件系统。恢复 = 从该文件系统全新启动。

  • ·仅文件系统
  • ·无进程——恢复后以冷启动方式启动容器
  • ·无内存——快照中无 RAM 转储
  • ·无网络状态——连接需重新建立

恢复是破坏性操作:它将覆盖当前实时状态。如需保留当前状态,请先创建快照,再恢复目标快照。

主页 / 方法 / 数据与状态 / AI 安全
AI 安全网

让智能体放手去试。保留撤销按钮。

接触认证中间件、数据库迁移或大规模重构的 LLM,最能受益于「运行前先快照」模式。创建成本低,恢复速度快,双向各一次 API 调用。

没有快照

  1. 1.智能体重构认证中间件,首轮冒烟测试通过。
  2. 2.合并并部署,数天内一切看似正常。
  3. 3.生产环境会话开始悄无声息地丢失。
  4. 4.二分查找近期智能体提交耗时数小时——变更埋在大量 diff 中。
  5. 5.回滚意味着手动逐一撤销所有已合并的智能体 PR 并重新部署。

使用 Hoody 快照

  1. 1.在智能体运行前创建容器快照,起个别名,如 pre-auth-refactor。
  2. 2.让智能体工作:编辑文件、重启服务、运行冒烟测试。
  3. 3.一周后生产环境出现异常。
  4. 4.PATCH /snapshots/pre-auth-refactor——容器在 5–15 秒内恢复到智能体运行前的状态。
  5. 5.服务从快照恢复后,可对损坏状态创建新快照,留待离线调查。

安全网模式正是为何每个 AI 辅助工作流——代码生成、基础设施重构、数据库迁移——都应在已快照的容器中运行。快照成本低廉;发现 AI 引入问题的排查成本则不然。

主页 / 方法 / 数据与状态 / 时间线
提交与恢复

工作流就是整台机器的提交图。

在风险操作前创建快照,然后持续迭代。如果结果良好,继续推进——快照低廉且可设置过期。如果出现问题,一次 PATCH 调用将容器恢复到原始状态——RAM、进程、打开的文件,一切如初。

t0 — 基线

POST /snapshots——标记为 v1.4.0-pre

t1 — 高风险操作

AI 智能体重构,迁移运行,服务重启

t2 — 出现问题

冒烟测试失败,需要回滚。

t3 — 恢复

PATCH /snapshots/v1.4.0-pre——5–15 秒恢复

t4 — 与 t0 完全一致

RAM、进程、文件系统完全匹配 t0,零偏差。

恢复调用——完整 API 见 /platform/control-plane
PATCH /api/v1/containers/ID/snapshots/v1.4.0-pre
主页 / 方法 / 数据与状态 / ramdisk
速度下限

当 SSD 成为瓶颈时,/ramdisk 是答案。

容器内存的一半,以 /ramdisk 访问,按需分配。使用时占用空间,不用时自动释放。容器重启后保留,宿主机重启后清空。

/ramdisk (tmpfs)< 1 µs
10–20 GB/s
SSD (nvme)50–100 µs
0.5–3 GB/s
构建产物 + node_modules临时解压与 tarball 提取会话 / 渲染缓存训练期间的 ML 特征张量

/ramdisk 使用量计入容器内存。若容器有 4 GB 内存,/ramdisk 占用 3 GB,则应用仅剩 1 GB 可用。用 `free -h` 监控并在设计中谨慎控制用量。

主页 / 方法 / 数据与状态 / 策略
快照模式

团队实际使用的五种快照策略。

选定一种,状态管理纪律就变成一行决策,而非一份策略文档。大多数团队并行运行其中两到三种。

1 · 操作前安全保障

在任何破坏性操作前创建快照:数据库迁移、AI 代码生成、事故响应、手动热修复。

2 · 版本里程碑

在发布节点创建别名快照——v1.4.0、v1.5.0-rc,过期时间设为数周后。可即时回滚到任意命名版本。

3 · 每日自动化

定时快照 + 自动过期 = 自剪枝的历史记录。保留七天的每日快照、三十天的每月快照。

4 · Git 风格分支

快照 + 容器复制 = 在不同项目或服务器上的另一条时间线。在副本上尝试高风险路径。如果成功,将基线重建于此;同步是单向的,副本成为新的事实来源。

5 · 黄金镜像模板

种子快照,从快照复制创建每个新开发容器。入职变成一次 POST 调用。

加餐 · 取证保全

当生产环境遭入侵时:对受损状态创建快照用于调查,从早期干净快照恢复生产环境,离线对比两者差异。事故响应,证据不丢失。

主页 / 方法 / 数据与状态 / 对比
数据与状态 vs 传统方案

否则你需要自行拼凑的东西。

回滚、有状态捕获、并发安全 SQLite、跨容器共享、RAM 支持的暂存空间——传统方案各有应对。以下是真实的并排对比。

场景Hoody 数据与状态传统方案
回滚整台机器PATCH /containers/ID/snapshots/NAMETarball + 手动重新部署 + 祈祷
捕获运行中的内存状态Stateful snapshot (automatic)VMware 挂起 + 自定义工具
跨容器目录共享/hoody/shares + Shares API自行运行 NFS 或 SMB 服务器
SQLite 并发写入/hoody/databases (FUSE mount)将数据层迁移到 Postgres
RAM 支持的暂存空间/ramdisk (ceiling 50% memory)tmpfs + 精心配置的 ulimits
相似容器间的存储去重BTRFS copy-on-write (built in)rsync --link-dest + 手动策略
跨服务器状态复制POST /containers/ID/copy + /sync自制 rsync 循环 + 服务重启

如果已针对特定工作负载使用了托管 VM 快照系统,就继续用于该工作负载。当真正需要的原语是容器级时光机时,Hoody 的状态模型才真正发挥价值。

主页 / 方法 / 数据与状态 / 开始
开始

状态已是提交图。学会用它。

文件系统已就绪,快照已就绪,挂载已就绪。启动一个容器,完整状态模型即刻生效。

快照指南

另见——/platform/control-plane(快照与复制/同步 API),/kit/files(云后端),/kit/sqlite(SQLite 作为 HTTP)。