Barn 博客
项目文章、设计注记、发布注记与保留的开发历史。旧条目继续使用 Piglet 名称,因为它们 描述的是迁名前构件,不代表当前行为。
Farrow 0.8.0:恢复更顺畅,镜像更新
接续宿主准备、隔离失败节点、保留虚拟机身份,并更新九月 Debian 与 Ubuntu 镜像。
Farrow 0.7.0:简化测试环境,自动恢复故障
缩短首次启动路径、精简进度输出、独立初始化可选功能,统一通过 up 恢复。
Farrow 0.6.0:默认 U24,更顺手的本地虚拟机体验
默认 Ubuntu 24.04,准备宿主前即可查看计划,状态更清晰,扩容与重建更可靠。
Farrow 0.5.0:显式处置、显式仓库、可复现镜像
无需确认的整套实验室处置、全球与中国仓库显式选择、无隐藏工件回退,以及八目标官方镜像候选流水线。
Farrow 0.3.0:显式 Catalog 与可操作的就绪诊断
显式镜像 Catalog 更新、逐节点 Bootstrap 诊断、发行版原生 Guest 网卡名与更小的 CLI。
Farrow 0.4.0:一条命令、能用的数据盘、统一的输出
首次运行只需一条命令,默认数据盘在所有镜像上可用,就绪失败直接给出原因,全部命令统一输出风格。
Farrow 0.2.0:选点收敛与发布完整性
VPN 感知网络预检、真正的选点扩容、基于 committed state 的集成、CI 多平台构件与 0.1.0 升级边界。
repo.yaml 是意图,catalog.json 是证据
为什么 Barn 把人工维护的镜像策略与必须匹配实际 qcow2 工件的生成元数据分离。
PID 不是虚拟机身份
为什么 Barn 在发送信号或删除任何东西前,必须让 QMP 身份、进程证据、类型化 Invocation 与 Journal 相互吻合。
声明式不等于破坏式
Barn 如何用逐节点哈希与显式操作保证配置缺席永远不能授权删除。
为什么每个 Barn 节点都有两张网卡
为什么 Barn 把管理出网与宿主、节点、Ansible 和 Pigsty 使用的固定地址网络分离。
为什么 Barn 没有 Project
为什么 Barn 用一份 Pigsty Inventory 驱动一个 Owner-scope Deployment,取代按目录组织的 Project 状态。
-
Farrow 0.8.0:恢复更顺畅,镜像更新
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:简化测试环境,自动恢复故障
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.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:显式处置、显式仓库、可复现镜像
说明 本页记录 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.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.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.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 是证据
说明 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 不是虚拟机身份
说明 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,更不足以授权 …
-
声明式不等于破坏式
说明 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 节点都有两张网卡
说明 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
说明 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 最终要 …