<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>设计注记 on Barn</title>
    <link>https://barn.pgsty.com/zh/blog/design/</link>
    <description>Recent content in 设计注记 on Barn</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    
    
    
      <lastBuildDate>Tue, 29 Sep 2026 00:00:00 +0800</lastBuildDate>
    
    
      <atom:link href="https://barn.pgsty.com/zh/blog/design/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>为什么 Barn 没有 Project</title>
        <link>https://barn.pgsty.com/zh/blog/design/one-deployment-no-projects/</link>
        <pubDate>Thu, 27 Aug 2026 19:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/zh/blog/design/one-deployment-no-projects/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;说明&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本文描述尚未发布的 &lt;strong&gt;Barn 0.9.0 候选版本&lt;/strong&gt;。当前验证结果与发行前检查见&#xA;&lt;a href=&#34;https://barn.pgsty.com/zh/docs/about/status/&#34;&gt;当前状态&lt;/a&gt;。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Barn 最初采用了一套很熟悉的虚拟机管理器抽象：工作目录就是 Project，隐藏 Marker 提供&#xA;身份，注册表负责重新发现 Project，宿主全局 Lease 防止它们争用私有网络。这种模型可以承载&#xA;多套彼此独立的虚拟机，但它并不适合 Barn 最终要成为的产品。&lt;/p&gt;</description>
      </item>
    <item>
        <title>为什么每个 Barn 节点都有两张网卡</title>
        <link>https://barn.pgsty.com/zh/blog/design/fixed-ip-two-nics/</link>
        <pubDate>Thu, 27 Aug 2026 20:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/zh/blog/design/fixed-ip-two-nics/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;说明&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本文描述尚未发布的 &lt;strong&gt;Barn 0.9.0 候选版本&lt;/strong&gt;。当前验证结果与发行前检查见&#xA;&lt;a href=&#34;https://barn.pgsty.com/zh/docs/about/status/&#34;&gt;当前状态&lt;/a&gt;。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Pigsty Inventory 用稳定地址标识机器。PostgreSQL 复制、etcd 成员、HAProxy 后端、VIP、&#xA;监控目标与 Ansible 都假设 &lt;code&gt;10.10.10.11&lt;/code&gt; 始终代表同一个节点。回环端口转发可以把 SSH 或&#xA;PostgreSQL 暴露给宿主，却无法把这种网络身份提供给其它节点。&lt;/p&gt;</description>
      </item>
    <item>
        <title>声明式不等于破坏式</title>
        <link>https://barn.pgsty.com/zh/blog/design/convergence-without-surprise/</link>
        <pubDate>Thu, 27 Aug 2026 21:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/zh/blog/design/convergence-without-surprise/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;说明&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本文描述尚未发布的 &lt;strong&gt;Barn 0.9.0 候选版本&lt;/strong&gt;。当前验证结果与发行前检查见&#xA;&lt;a href=&#34;https://barn.pgsty.com/zh/docs/about/status/&#34;&gt;当前状态&lt;/a&gt;。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;“声明式”常被简化成“让现实等于文件”。在文件完整、分支正确时，这是一句好口号；但当配置&#xA;暂时不完整、检出了错误分支，或某个 YAML Group 被误删时，把“缺席”理解成“删除”就会让普通&#xA;编辑错误直接变成破坏操作。&lt;/p&gt;</description>
      </item>
    <item>
        <title>PID 不是虚拟机身份</title>
        <link>https://barn.pgsty.com/zh/blog/design/identity-before-pid/</link>
        <pubDate>Fri, 28 Aug 2026 10:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/zh/blog/design/identity-before-pid/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;说明&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本文描述尚未发布的 &lt;strong&gt;Barn 0.9.0 候选版本&lt;/strong&gt;。当前验证结果与发行前检查见&#xA;&lt;a href=&#34;https://barn.pgsty.com/zh/docs/about/status/&#34;&gt;当前状态&lt;/a&gt;。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;Pidfile 只能回答一个问题：写入文件时，某个进程使用了哪个整数。它不能证明进程仍然存活，&#xA;不能证明 PID 没有被复用，不能证明可执行文件就是 QEMU，也不能证明这个 QEMU 正是操作者&#xA;想停止的节点。&lt;/p&gt;</description>
      </item>
    <item>
        <title>repo.yaml 是意图，catalog.json 是证据</title>
        <link>https://barn.pgsty.com/zh/blog/design/repo-yaml-catalog-json/</link>
        <pubDate>Sat, 29 Aug 2026 19:00:00 +0800</pubDate>
        
        <guid>https://barn.pgsty.com/zh/blog/design/repo-yaml-catalog-json/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;说明&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;本文描述尚未发布的 &lt;strong&gt;Barn 0.9.0 候选版本&lt;/strong&gt;。当前验证结果与发行前检查见&#xA;&lt;a href=&#34;https://barn.pgsty.com/zh/docs/about/status/&#34;&gt;当前状态&lt;/a&gt;。&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;静态镜像仓库看起来只是一些 qcow2 文件加一个 JSON 索引。真正困难的问题是：哪些事实允许&#xA;维护者手写，哪些事实必须从即将发布的字节中推导。&lt;/p&gt;</description>
      </item>
    
  </channel>
</rss>
