跳转到主要内容

Barn 博客

项目文章、设计注记、发布注记与保留的开发历史。旧条目继续使用 Piglet 名称,因为它们 描述的是迁名前构件,不代表当前行为。

Barn 博客
Farrow 0.8.0:恢复更顺畅,镜像更新 Farrow 0.8.0QEMURelease
Farrow 0.7.0:简化测试环境,自动恢复故障 Farrow 0.7.0QEMURelease
Farrow 0.6.0:默认 U24,更顺手的本地虚拟机体验 Farrow 0.6.0QEMUUbuntu发布
Farrow 0.5.0:显式处置、显式仓库、可复现镜像 Farrow 0.5.0QEMU镜像供应链发布
Farrow 0.3.0:显式 Catalog 与可操作的就绪诊断 Farrow 0.3.0QEMUCatalog就绪发布
Farrow 0.4.0:一条命令、能用的数据盘、统一的输出 Farrow 0.4.0QEMU体验发布
Farrow 0.2.0:选点收敛与发布完整性 Farrow 0.2.0QEMUmacOSLinux发布供应链
repo.yaml 是意图,catalog.json 是证据 镜像供应链Catalog
PID 不是虚拟机身份 QMP恢复安全
声明式不等于破坏式 生命周期Drift安全
为什么每个 Barn 节点都有两张网卡 网络QEMUPigsty
为什么 Barn 没有 Project 架构Inventory状态
  • Farrow 0.8.0:恢复更顺畅,镜像更新

    发布于 发布

    ReleaseFarrow 0.8.0QEMURelease

    Farrow 0.8.0 减少初始化中断和部分节点启动失败后的手工操作,同时更新 Debian 与 Ubuntu 镜像,保留全部旧 Catalog 工件和已有 VM 身份。 主要变化 宿主准备接续原命令。 交互式 start、restart、reload 可以补齐宿主工具, 恢复已确认完整的 Farrow 网络。macOS 新网络安装先完成 Homebrew 发现/安装或固定 归档下载、校验,再申请管理员认证,避免 Homebrew 清除过早获取的 sudo 凭据。 单个节点失败不阻断独立节点。 …

    Farrow 0.8.0 减少初始化中断和部分节点启动失败后的手工操作,同时更新 Debian 与 Ubuntu 镜像,保留全部旧 Catalog 工件和已有 VM 身份。 主要变化 宿主准备接续原命令。 交互式 start、restart、reload 可以补齐宿主工具, 恢复已确认完整的 Farrow 网络。macOS 新网络安装先完成 Homebrew 发现/安装或固定 归档下载、校验,再申请管理员认证,避免 Homebrew 清除过早获取的 sudo 凭据。 单个节点失败不阻断独立节点。 …

  • Farrow 0.7.0:简化测试环境,自动恢复故障

    发布于 发布

    ReleaseFarrow 0.7.0QEMURelease

    Farrow 0.7.0 简化测试环境的启动与恢复。重复执行 farrow up 即可继续中断的工作、 重试未完成的客机初始化,并原位更新旧的客机脚本,无需重启正在运行的虚拟机。 主要变化 缩短首次使用路径。 交互式 up 可以创建默认配置、准备缺少的宿主工具,并恢复 已正确安装但未运行的 Farrow 网络。短检查保持安静,长任务显示进度,完成后给出简洁结果。 可用的环境继续运行。 数据盘、共享目录、客机主机名、节点间 SSH 和私网分别初始化。 可选功能失败时明确报告限制,保留可用的管理 …

    Farrow 0.7.0 简化测试环境的启动与恢复。重复执行 farrow up 即可继续中断的工作、 重试未完成的客机初始化,并原位更新旧的客机脚本,无需重启正在运行的虚拟机。 主要变化 缩短首次使用路径。 交互式 up 可以创建默认配置、准备缺少的宿主工具,并恢复 已正确安装但未运行的 Farrow 网络。短检查保持安静,长任务显示进度,完成后给出简洁结果。 可用的环境继续运行。 数据盘、共享目录、客机主机名、节点间 SSH 和私网分别初始化。 可选功能失败时明确报告限制,保留可用的管理 …

  • Farrow 0.6.0:默认 U24,更顺手的本地虚拟机体验

    发布于 发布

    发布Farrow 0.6.0QEMUUbuntu发布

    Farrow 0.6.0 默认使用 Ubuntu 24.04,完善本地 Pigsty 实验环境的计划、启动、扩容和重建体验。 主要变化 默认 Ubuntu 24.04。 新配置与内置镜像目录使用 u24:stable。目录版本 2026090501 同时纳入官方仓库已经发布的 Debian 12/13、Rocky Linux 8/9 镜像更新。 准备宿主前就能查看计划。 Catalog 镜像的 plan 无需先安装 QEMU 或配置网络 (已注册的 local-* 镜像仍需 qemu-img 校 …

    Farrow 0.6.0 默认使用 Ubuntu 24.04,完善本地 Pigsty 实验环境的计划、启动、扩容和重建体验。 主要变化 默认 Ubuntu 24.04。 新配置与内置镜像目录使用 u24:stable。目录版本 2026090501 同时纳入官方仓库已经发布的 Debian 12/13、Rocky Linux 8/9 镜像更新。 准备宿主前就能查看计划。 Catalog 镜像的 plan 无需先安装 QEMU 或配置网络 (已注册的 local-* 镜像仍需 qemu-img 校 …

  • Farrow 0.5.0:显式处置、显式仓库、可复现镜像

    发布于 发布

    发布Farrow 0.5.0QEMU镜像供应链发布

    说明 本页记录 0.5.0。0.7.0 已增加官方镜像源故障回退,未发布的 0.9 候选移除了 rm 别名。请按安装版本阅读当前命令行说明。 Farrow 0.5.0 是被 0.6.0 取代的公开 pre-1.0 发布。它为一次性实验室加入明确处置命令,让仓库地域 成为操作者的显式选择,并提供可复现的下一代官方 Guest 镜像准备路径。Pigsty Inventory 契约、Deployment 状态格式与内嵌 Catalog revision 2026082903 均未变化。 变化 …

    说明 本页记录 0.5.0。0.7.0 已增加官方镜像源故障回退,未发布的 0.9 候选移除了 rm 别名。请按安装版本阅读当前命令行说明。 Farrow 0.5.0 是被 0.6.0 取代的公开 pre-1.0 发布。它为一次性实验室加入明确处置命令,让仓库地域 成为操作者的显式选择,并提供可复现的下一代官方 Guest 镜像准备路径。Pigsty Inventory 契约、Deployment 状态格式与内嵌 Catalog revision 2026082903 均未变化。 变化 …

  • Farrow 0.3.0:显式 Catalog 与可操作的就绪诊断

    发布于 发布

    发布Farrow 0.3.0QEMUCatalog就绪发布

    Farrow 0.3.0 是被 0.4.0 取代的公开 pre-1.0 发布。它移除隐式 Catalog 刷新,把 Guest Bootstrap 失败变成可操作的逐节点结果,并在不改变 Pigsty Inventory 与固定 IP Deployment 模型的 前提下简化 CLI。 变化 up、plan 与普通 image 命令只使用一份当前本地 Catalog 快照,绝不隐式获取 Catalog 元数据。farrow update 显式获取配置仓库;image sync 激活精确 URL …

    Farrow 0.3.0 是被 0.4.0 取代的公开 pre-1.0 发布。它移除隐式 Catalog 刷新,把 Guest Bootstrap 失败变成可操作的逐节点结果,并在不改变 Pigsty Inventory 与固定 IP Deployment 模型的 前提下简化 CLI。 变化 up、plan 与普通 image 命令只使用一份当前本地 Catalog 快照,绝不隐式获取 Catalog 元数据。farrow update 显式获取配置仓库;image sync 激活精确 URL …

  • Farrow 0.4.0:一条命令、能用的数据盘、统一的输出

    发布于 发布

    发布Farrow 0.4.0QEMU体验发布

    Farrow 0.4.0 是被 0.5.0 取代的公开 pre-1.0 发布。它把首次运行压缩为一条命令,修复了 Debian 与 Ubuntu 镜像上的默认数据盘,并让全部命令使用同一套输出风格。Pigsty Inventory 格式、 固定 IP Deployment 模型、状态布局与内嵌 Catalog revision 2026082903 均未变化。 变化 在终端里,固定 IP 网络尚未安装时 farrow up 会自己执行 farrow setup:展示 setup 计划、在特权步骤 …

    Farrow 0.4.0 是被 0.5.0 取代的公开 pre-1.0 发布。它把首次运行压缩为一条命令,修复了 Debian 与 Ubuntu 镜像上的默认数据盘,并让全部命令使用同一套输出风格。Pigsty Inventory 格式、 固定 IP Deployment 模型、状态布局与内嵌 Catalog revision 2026082903 均未变化。 变化 在终端里,固定 IP 网络尚未安装时 farrow up 会自己执行 farrow setup:展示 setup 计划、在特权步骤 …

  • Farrow 0.2.0:选点收敛与发布完整性

    发布于 发布

    发布Farrow 0.2.0QEMUmacOSLinux发布供应链

    Farrow 0.2.0 是被 0.3.0 取代的公开 pre-1.0 发布。它保留 0.1.0 引入的 Pigsty Inventory 与 磁盘 Deployment 格式,同时修复最终真机重放中发现的网络与选点收敛边界。 主要变化 10.0.0.0/8 等较宽 VPN 排除路由不再误拦 Farrow 自有的 10.10.10.0/24;相同或更具体的外部路由、重叠接口、已占用地址与自有路由缺失 仍然 Fail Closed。 farrow up <node> 只下载并准备选中的节点 …

    Farrow 0.2.0 是被 0.3.0 取代的公开 pre-1.0 发布。它保留 0.1.0 引入的 Pigsty Inventory 与 磁盘 Deployment 格式,同时修复最终真机重放中发现的网络与选点收敛边界。 主要变化 10.0.0.0/8 等较宽 VPN 排除路由不再误拦 Farrow 自有的 10.10.10.0/24;相同或更具体的外部路由、重叠接口、已占用地址与自有路由缺失 仍然 Fail Closed。 farrow up <node> 只下载并准备选中的节点 …

  • repo.yaml 是意图,catalog.json 是证据

    发布于 设计

    设计镜像供应链Catalog

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 静态镜像仓库看起来只是一些 qcow2 文件加一个 JSON 索引。真正困难的问题是:哪些事实允许 维护者手写,哪些事实必须从即将发布的字节中推导。 如果 Checksum 与 Size 放在手写源文件里,它们很容易被错误复制;如果策略只存在于生成 JSON 中 …

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 静态镜像仓库看起来只是一些 qcow2 文件加一个 JSON 索引。真正困难的问题是:哪些事实允许 维护者手写,哪些事实必须从即将发布的字节中推导。 如果 Checksum 与 Size 放在手写源文件里,它们很容易被错误复制;如果策略只存在于生成 JSON 中 …

  • PID 不是虚拟机身份

    发布于 设计

    设计QMP恢复安全

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 Pidfile 只能回答一个问题:写入文件时,某个进程使用了哪个整数。它不能证明进程仍然存活, 不能证明 PID 没有被复用,不能证明可执行文件就是 QEMU,也不能证明这个 QEMU 正是操作者 想停止的节点。 这些证据不足以授权 SIGKILL,更不足以授权 …

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 Pidfile 只能回答一个问题:写入文件时,某个进程使用了哪个整数。它不能证明进程仍然存活, 不能证明 PID 没有被复用,不能证明可执行文件就是 QEMU,也不能证明这个 QEMU 正是操作者 想停止的节点。 这些证据不足以授权 SIGKILL,更不足以授权 …

  • 声明式不等于破坏式

    发布于 设计

    设计生命周期Drift安全

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 “声明式”常被简化成“让现实等于文件”。在文件完整、分支正确时,这是一句好口号;但当配置 暂时不完整、检出了错误分支,或某个 YAML Group 被误删时,把“缺席”理解成“删除”就会让普通 编辑错误直接变成破坏操作。 Barn 采用一条更窄的规则: 期望状态 …

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 “声明式”常被简化成“让现实等于文件”。在文件完整、分支正确时,这是一句好口号;但当配置 暂时不完整、检出了错误分支,或某个 YAML Group 被误删时,把“缺席”理解成“删除”就会让普通 编辑错误直接变成破坏操作。 Barn 采用一条更窄的规则: 期望状态 …

  • 为什么每个 Barn 节点都有两张网卡

    发布于 设计

    设计网络QEMUPigsty

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 Pigsty Inventory 用稳定地址标识机器。PostgreSQL 复制、etcd 成员、HAProxy 后端、VIP、 监控目标与 Ansible 都假设 10.10.10.11 始终代表同一个节点。回环端口转发可以把 SSH 或 PostgreSQL …

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 Pigsty Inventory 用稳定地址标识机器。PostgreSQL 复制、etcd 成员、HAProxy 后端、VIP、 监控目标与 Ansible 都假设 10.10.10.11 始终代表同一个节点。回环端口转发可以把 SSH 或 PostgreSQL …

  • 为什么 Barn 没有 Project

    发布于 设计

    设计架构Inventory状态

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 Barn 最初采用了一套很熟悉的虚拟机管理器抽象:工作目录就是 Project,隐藏 Marker 提供 身份,注册表负责重新发现 Project,宿主全局 Lease 防止它们争用私有网络。这种模型可以承载 多套彼此独立的虚拟机,但它并不适合 Barn 最终要 …

    说明 2026-09-29 更名: Barn 0.9.0 尚未发布;本文名称已同步更新。2026-09-26 校准记录: 保留原始写作日期;下文已按当前实现更新。公开版本与未发布候选的 边界见当前状态,不以本文日期代替发布或验收日期。 Barn 最初采用了一套很熟悉的虚拟机管理器抽象:工作目录就是 Project,隐藏 Marker 提供 身份,注册表负责重新发现 Project,宿主全局 Lease 防止它们争用私有网络。这种模型可以承载 多套彼此独立的虚拟机,但它并不适合 Barn 最终要 …