跳转到主要内容

PGSTY SILO 博客

  • ILM 过期与存储池迁移顺序

    发布于 设计

    设计生命周期存储池复制

    Featured Image for ILM 过期与存储池迁移顺序

    本文记录 issue #265、贡献者修复 PR #266 与维护者后续修复 #276,并说明已经合入的 #264 与 #267 是相关前置修复。本文已于 2026-11-02 按 #276 合入后的 main 更新。#266 的 decommission 提交是 19910230a,rebalance 提交是 a995921e5。 先说结论 问题成立。在版本桶中,当前版本到期时 Expiration 会创建删除标记,并把数据版本保留为 noncurrent。decommission 与 …

    本文记录 issue #265、贡献者修复 PR #266 与维护者后续修复 #276,并说明已经合入的 #264 与 #267 是相关前置修复。本文已于 2026-11-02 按 #276 合入后的 main 更新。#266 的 decommission 提交是 19910230a,rebalance 提交是 a995921e5。 先说结论 问题成立。在版本桶中,当前版本到期时 Expiration 会创建删除标记,并把数据版本保留为 noncurrent。decommission 与 …

  • Tier free version 是内部清理记录

    发布于 设计

    设计Tier生命周期存储池兼容性

    Featured Image for Tier free version 是内部清理记录

    本文记录 issue #263 与 PR #264 的审查结论,本文已按 #276 后的 main 0fc5a0b5 更新;#264 的合入提交记录为 0cfca29c。这个 PR 的三个提交是一组相互配合的修复,不是三个互不相关的 workaround。 先说结论 问题成立。free version 是 SILO 在删除 tier 远端对象期间留在 xl.meta 中的内部清理记录。它带有 delete-marker 类型和被删除版本的时间,但它不是用户版本。GET 已经忽略它,若干批处理路径 …

    本文记录 issue #263 与 PR #264 的审查结论,本文已按 #276 后的 main 0fc5a0b5 更新;#264 的合入提交记录为 0cfca29c。这个 PR 的三个提交是一组相互配合的修复,不是三个互不相关的 workaround。 先说结论 问题成立。free version 是 SILO 在删除 tier 远端对象期间留在 xl.meta 中的内部清理记录。它带有 delete-marker 类型和被删除版本的时间,但它不是用户版本。GET 已经忽略它,若干批处理路径 …

  • 混合 EC 布局与迁移列表

    发布于 设计

    设计存储池纠删码迁移

    Featured Image for 混合 EC 布局与迁移列表

    本文记录 issue #261 与 PR #262 的审查结论,本文已按 #276 后的 main 0fc5a0b5 更新。实际修复通过维护者 PR #267 合入,#262 是后来被取代的重复 PR。 先说结论 问题成立。一次成功的降级覆写可能让一个无版本对象同时存在两种 EC 布局:在线磁盘上有更新的副本,离线磁盘上保留旧副本。GET 与 ListObjectsV2 能选出更新的可读多数;decommission 与 rebalance 使用 all-versions 遍历,此时元数据合并可 …

    本文记录 issue #261 与 PR #262 的审查结论,本文已按 #276 后的 main 0fc5a0b5 更新。实际修复通过维护者 PR #267 合入,#262 是后来被取代的重复 PR。 先说结论 问题成立。一次成功的降级覆写可能让一个无版本对象同时存在两种 EC 布局:在线磁盘上有更新的副本,离线磁盘上保留旧副本。GET 与 ListObjectsV2 能选出更新的可读多数;decommission 与 rebalance 使用 all-versions 遍历,此时元数据合并可 …

  • 存储池迁移完整性审查:#261、#263 与 #265

    发布于 设计

    设计存储池生命周期兼容性

    Featured Image for 存储池迁移完整性审查:#261、#263 与 #265

    本文审查 #261、#263、#265 及其对应的修复 #262、#264、#266,并记录维护者后续修复 #276。这是设计与审查记录,不是发布说明。本文已更新到 2026-11-02 的 #276 合入后 main。#264、#266、#276 已合入,#262 已被取代并关闭。 先看结论 问题 是否成立 对应 PR 的判断 建议处理 #261 成立。可读的混合 EC 对象可能从迁移列表消失,旧池删除后丢失。 窄范围修复已通过维护者 PR #267 合入;#262 已被取代。 已由 #267 …

    本文审查 #261、#263、#265 及其对应的修复 #262、#264、#266,并记录维护者后续修复 #276。这是设计与审查记录,不是发布说明。本文已更新到 2026-11-02 的 #276 合入后 main。#264、#266、#276 已合入,#262 已被取代并关闭。 先看结论 问题 是否成立 对应 PR 的判断 建议处理 #261 成立。可读的混合 EC 对象可能从迁移列表消失,旧池删除后丢失。 窄范围修复已通过维护者 PR #267 合入;#262 已被取代。 已由 #267 …

  • SILO 一年回顾:相比上游 MinIO,我们到底干了什么?

    发布于 文章

    postminioSilo

    Featured Image for SILO 一年回顾:相比上游 MinIO,我们到底干了什么?

    2025 年 10 月 15 日,MinIO 发布了最后一个公开开源版本 RELEASE.2025-10-15T17-29-55Z(提交 9e49d5e7a648)。随后两个月里,上游先宣布进入“维护模式”,接着删除了 minio/console 仓库,最终在 2026 年 2 月将主仓库彻底归档,把所有后续 CVE 修复与维护留在商业版 AIStor 中。 到 2026 年 10 月 26 日,SILO 打下 RELEASE.2026-10-26T00-00-00Z 标签(提交 …

    2025 年 10 月 15 日,MinIO 发布了最后一个公开开源版本 RELEASE.2025-10-15T17-29-55Z(提交 9e49d5e7a648)。随后两个月里,上游先宣布进入“维护模式”,接着删除了 minio/console 仓库,最终在 2026 年 2 月将主仓库彻底归档,把所有后续 CVE 修复与维护留在商业版 AIStor 中。 到 2026 年 10 月 26 日,SILO 打下 RELEASE.2026-10-26T00-00-00Z 标签(提交 …

  • silo-pkg 3.15:Go 1.27.3 与 S3 SDK 修复

    发布于 发布注记

    ReleaseDependencies

    Featured Image for silo-pkg 3.15:Go 1.27.3 与 S3 SDK 修复

    silo-pkg v3.15.2 现已正式发布(源码提交 0416eb1f4505),由 SILO 20261026 组件栈以 github.com/pgsty/silo-pkg/v3 模块路径直接引入。本文完整汇总自 v3.14.3 以来的 3.15 系列更新(v3.15.0、v3.15.1 与 v3.15.2)。 3.15.0:Go 工具链与共享依赖升级 模块最低 Go 版本要求由 1.26 提升至 1.27.3,并同步更新了 13 个直接依赖模块:JWX 3.4.0、etcd api / …

    silo-pkg v3.15.2 现已正式发布(源码提交 0416eb1f4505),由 SILO 20261026 组件栈以 github.com/pgsty/silo-pkg/v3 模块路径直接引入。本文完整汇总自 v3.14.3 以来的 3.15 系列更新(v3.15.0、v3.15.1 与 v3.15.2)。 3.15.0:Go 工具链与共享依赖升级 模块最低 Go 版本要求由 1.26 提升至 1.27.3,并同步更新了 13 个直接依赖模块:JWX 3.4.0、etcd api / …

  • SILO Console 2.5:界面与管理功能更新

    发布于 发布注记

    Releaseconsole

    Featured Image for SILO Console 2.5:界面与管理功能更新

    SILO Console v2.5.1 现已正式发布(源码提交 fff1618d9abb),同时作为 SILO 20261026 的内嵌控制台交付。本文完整汇总自 v2.4.2 以来的 2.5 系列变更,涵盖 v2.5.0 的界面重构与 v2.5.1 的问题修复。 GitHub Release · 下载 · 完整源码对比 导航、概览与监控指标 2.5 系列重构了整体界面视觉与交互:采用柔和的明暗主题配色、系统原生字体、统一的信息密度、Lucide 图标库、清晰的键盘焦点样式,并支持系统的“减少动 …

    SILO Console v2.5.1 现已正式发布(源码提交 fff1618d9abb),同时作为 SILO 20261026 的内嵌控制台交付。本文完整汇总自 v2.4.2 以来的 2.5 系列变更,涵盖 v2.5.0 的界面重构与 v2.5.1 的问题修复。 GitHub Release · 下载 · 完整源码对比 导航、概览与监控指标 2.5 系列重构了整体界面视觉与交互:采用柔和的明暗主题配色、系统原生字体、统一的信息密度、Lucide 图标库、清晰的键盘焦点样式,并支持系统的“减少动 …

  • SILO 20261026:Server、mcli 与 KES 联合发布

    发布于 发布注记

    ReleaseSecurityDependenciesconsolemcliKES

    Featured Image for SILO 20261026:Server、mcli 与 KES 联合发布

    SILO、mcli 与 PGSTY KES 20261026 现已联合发布,配套 SILO Console 2.5.1 与 silo-pkg 3.15.2。本文整合了 10 月 24—25 日的维护记录,完整说明自 20261018 正式版以来的所有变更。三个可执行组件采用统一的发布日期与包版本号;KES 仍作为可选的外部密钥服务独立部署。 发布组件 组件 版本 源码 交付形式 SILO Server 20261026000000.0.0 c3ad836aed0d 平台归档、Linux 软件包 …

    SILO、mcli 与 PGSTY KES 20261026 现已联合发布,配套 SILO Console 2.5.1 与 silo-pkg 3.15.2。本文整合了 10 月 24—25 日的维护记录,完整说明自 20261018 正式版以来的所有变更。三个可执行组件采用统一的发布日期与包版本号;KES 仍作为可选的外部密钥服务独立部署。 发布组件 组件 版本 源码 交付形式 SILO Server 20261026000000.0.0 c3ad836aed0d 平台归档、Linux 软件包 …

  • 多池删除:失败时保住最新副本

    发布于 设计

    DesignS3StoragePerformance

    Featured Image for 多池删除:失败时保住最新副本

    2026 年 10 月 24 日决定:合并修正后的 PR #257(已随 Server 20261026 发布)。 提交 aafe4f8886 修复了 issue #256 报告的多池删除缺陷,并补齐请求开始之后的执行期故障保护。核心不变量是:先完成其他池的旧副本清理,再删除决定当前读取结果的权威副本。 Denis Babchuk 报告了该问题并提交了初始补丁。代码评审复现了故障,发现批量删除在通过在线盘数预检查后仍存在执行期故障窗口,随后补充分阶段执行、逐项响应身份保持、部分删除重试以及共享分 …

    2026 年 10 月 24 日决定:合并修正后的 PR #257(已随 Server 20261026 发布)。 提交 aafe4f8886 修复了 issue #256 报告的多池删除缺陷,并补齐请求开始之后的执行期故障保护。核心不变量是:先完成其他池的旧副本清理,再删除决定当前读取结果的权威副本。 Denis Babchuk 报告了该问题并提交了初始补丁。代码评审复现了故障,发现批量删除在通过在线盘数预检查后仍存在执行期故障窗口,随后补充分阶段执行、逐项响应身份保持、部分删除重试以及共享分 …

  • 多池覆盖亲和:为何最终没有采纳 #245

    发布于 设计

    DesignS3StoragePerformanceReview

    Featured Image for 多池覆盖亲和:为何最终没有采纳 #245

    2026 年 10 月 24 日决定:不合并本次测试的多池覆盖亲和补丁(PR #245)。 该方案解决了跨池覆盖遗留旧副本的空间占用问题,但无论完整策略还是仅限普通无版本覆盖的收窄策略,都未能在性能测试中达到可接受的权衡。两个实验分支(codex/healthy-pool-affinity 与 codex/unversioned-pool-affinity)已保留归档,服务端 main 分支保持原状。 Denis Babchuk 提出的思路是:覆盖已有对象时,优先写回已存放该对象的池。代码评审发 …

    2026 年 10 月 24 日决定:不合并本次测试的多池覆盖亲和补丁(PR #245)。 该方案解决了跨池覆盖遗留旧副本的空间占用问题,但无论完整策略还是仅限普通无版本覆盖的收窄策略,都未能在性能测试中达到可接受的权衡。两个实验分支(codex/healthy-pool-affinity 与 codex/unversioned-pool-affinity)已保留归档,服务端 main 分支保持原状。 Denis Babchuk 提出的思路是:覆盖已有对象时,优先写回已存放该对象的池。代码评审发 …

  • FULL_OBJECT 校验和复制:在初始化上传时保留类型

    发布于 设计

    DesignReplicationS3Checksum

    Featured Image for FULL_OBJECT 校验和复制:在初始化上传时保留类型

    Issue #254 报告了一类复制故障:使用 FULL_OBJECT CRC32 或 CRC32C 校验和的分片上传对象在源端可正常上传和读取,但复制到目标端并在最后调用 CompleteMultipartUpload 时会因 400 BadDigest 失败。Denis Babchuk(@botdeniska)提交的 PR #255 补回了出站复制请求遗漏的校验和类型头。 该补丁于 2026 年 10 月 24 日以 6d890fc86 合入主干并随 Server 20261026 发布,共 …

    Issue #254 报告了一类复制故障:使用 FULL_OBJECT CRC32 或 CRC32C 校验和的分片上传对象在源端可正常上传和读取,但复制到目标端并在最后调用 CompleteMultipartUpload 时会因 400 BadDigest 失败。Denis Babchuk(@botdeniska)提交的 PR #255 补回了出站复制请求遗漏的校验和类型头。 该补丁于 2026 年 10 月 24 日以 6d890fc86 合入主干并随 Server 20261026 发布,共 …

  • LDAP 长 DN:恢复登录可用性并守住 IAM 撤销安全边界

    发布于 设计

    DesignLDAPIAMOperations

    Featured Image for LDAP 长 DN:恢复登录可用性并守住 IAM 撤销安全边界

    Server PR #250(合入提交 d43adc0f2,已随 Server 20261026 发布)修复了 LDAP 用户在规范化可分辨名称(Distinguished Name,DN)超过对象存储 IAM 后端单路径分量 255 字节上限时无法登录的问题,同时严格保留了对真实存储故障与持久化 IAM 撤销记录的 Fail-Closed 错误传播。 原始问题报告、初版补丁(9faeb7a11)及长 DN 回归测试由社区贡献者 @910patin 提交。在合并前的设计复核中,维护者进一步收窄了 …

    Server PR #250(合入提交 d43adc0f2,已随 Server 20261026 发布)修复了 LDAP 用户在规范化可分辨名称(Distinguished Name,DN)超过对象存储 IAM 后端单路径分量 255 字节上限时无法登录的问题,同时严格保留了对真实存储故障与持久化 IAM 撤销记录的 Fail-Closed 错误传播。 原始问题报告、初版补丁(9faeb7a11)及长 DN 回归测试由社区贡献者 @910patin 提交。在合并前的设计复核中,维护者进一步收窄了 …

  • IAM 策略重载:锁粒度、请求取消与超时预算隔离

    发布于 设计

    DesignIAMKMSS3Review

    Featured Image for IAM 策略重载:锁粒度、请求取消与超时预算隔离

    提交 1b5477f3d(pgsty/silo#251)解决了 KMS/KES 响应缓慢时的两类级联故障: 鉴权缓存锁争用:ListPolicies 与 ListPolicyDocs 在保留 IAM 写操作串行锁(writeMu)的前提下,将慢速的后端策略读取与解密移出内存鉴权缓存锁(store.lock()),避免管理员列举策略时阻塞普通用户的 S3 读写请求。 全链路取消传播与超时预算隔离:将调用方的请求 context.Context 贯通至 IAM 配置解密、SSE-S3 列表密钥解封以 …

    提交 1b5477f3d(pgsty/silo#251)解决了 KMS/KES 响应缓慢时的两类级联故障: 鉴权缓存锁争用:ListPolicies 与 ListPolicyDocs 在保留 IAM 写操作串行锁(writeMu)的前提下,将慢速的后端策略读取与解密移出内存鉴权缓存锁(store.lock()),避免管理员列举策略时阻塞普通用户的 S3 读写请求。 全链路取消传播与超时预算隔离:将调用方的请求 context.Context 贯通至 IAM 配置解密、SSE-S3 列表密钥解封以 …

  • SILO 20261018 发布说明

    发布于 发布注记

    发布安全Silo

    Featured Image for SILO 20261018 发布说明

    Server 20261018 已正式发布,提供 amd64 与 arm64 版本化归档、原生软件包及 Docker Hub 标准/distroless 镜像。本版本接替 Server 20260916(20261015 保留为已撤回的历史草稿记录)。 身份 值 发行标签 RELEASE.2026-10-18T00-00-00Z 软件包版本 20261018000000.0.0 发行源码 0cd388c666f8211f552604ae73448a066e9c25ce 上一正式版源码 …

    Server 20261018 已正式发布,提供 amd64 与 arm64 版本化归档、原生软件包及 Docker Hub 标准/distroless 镜像。本版本接替 Server 20260916(20261015 保留为已撤回的历史草稿记录)。 身份 值 发行标签 RELEASE.2026-10-18T00-00-00Z 软件包版本 20261018000000.0.0 发行源码 0cd388c666f8211f552604ae73448a066e9c25ce 上一正式版源码 …

  • SILO、KES 与 OpenBao:密钥归属和恢复

    发布于 设计

    设计KES安全运维

    Featured Image for SILO、KES 与 OpenBao:密钥归属和恢复

    SILO 通过 PGSTY KES(MINIO_KMS_KES_ENDPOINT)接入外部密钥管理系统。当前最新版本为 KES 20261026(使用 Go 1.27.3 构建并更新云服务依赖,保持本文的 API、配置与密钥格式不变);此前的 PGSTY KES 20261018(源码 2f7e741db905)完成了将 AWS Secrets Manager 后端迁移至 AWS SDK for Go v2 的主体改造。 三个服务的职责边界 服务 负责内容 调用对象 SILO 对象字节流与对象加 …

    SILO 通过 PGSTY KES(MINIO_KMS_KES_ENDPOINT)接入外部密钥管理系统。当前最新版本为 KES 20261026(使用 Go 1.27.3 构建并更新云服务依赖,保持本文的 API、配置与密钥格式不变);此前的 PGSTY KES 20261018(源码 2f7e741db905)完成了将 AWS Secrets Manager 后端迁移至 AWS SDK for Go v2 的主体改造。 三个服务的职责边界 服务 负责内容 调用对象 SILO 对象字节流与对象加 …

  • 十月安全更新:Object Lock、管理凭据与 JWK 解析

    发布于 安全编年史

    安全IAMObject LockSilo

    Featured Image for 十月安全更新:Object Lock、管理凭据与 JWK 解析

    SILO Server 20261018 正式交付了 SN-2026-015、SN-2026-016 与 SN-2026-017 三项安全修复、细粒度 STS 令牌撤销机制,以及跨 silo、mcli 与 silo-console 的 Go 工具链与依赖库安全更新。Server 20260916 与 20260903 均受影响(20261015 为已被替代的预发布草稿)。 Object Lock:SN-2026-015 与 SN-2026-016 SN-2026-015 与 …

    SILO Server 20261018 正式交付了 SN-2026-015、SN-2026-016 与 SN-2026-017 三项安全修复、细粒度 STS 令牌撤销机制,以及跨 silo、mcli 与 silo-console 的 Go 工具链与依赖库安全更新。Server 20260916 与 20260903 均受影响(20261015 为已被替代的预发布草稿)。 Object Lock:SN-2026-015 与 SN-2026-016 SN-2026-015 与 …

  • silo-pkg 3.14.3 发布

    发布于 发布注记

    发布pkg

    Featured Image for silo-pkg 3.14.3 发布

    发行版: v3.14.3 · 源码: e9d585ba1e7a。依赖基线见 v3.14.2 发布说明。 github.com/pgsty/silo-pkg/v3 v3.14.3 优化了 IAM 策略判定期间识别 admin: 动作的开销,被 Server 20261018 选用。 AdminAction.IsValid 与 HasResource 现在优先执行精确查表,再按需扫描动作集合:不含通配符且未命中的字面量动作直接返回;前缀无法匹配 admin: 命名空间的通配符模式直接跳过合法性扫描, …

    发行版: v3.14.3 · 源码: e9d585ba1e7a。依赖基线见 v3.14.2 发布说明。 github.com/pgsty/silo-pkg/v3 v3.14.3 优化了 IAM 策略判定期间识别 admin: 动作的开销,被 Server 20261018 选用。 AdminAction.IsValid 与 HasResource 现在优先执行精确查表,再按需扫描动作集合:不含通配符且未命中的字面量动作直接返回;前缀无法匹配 admin: 命名空间的通配符模式直接跳过合法性扫描, …

  • PGSTY KES 20261018 发布

    发布于 发布注记

    发布KES

    Featured Image for PGSTY KES 20261018 发布

    发行版: RELEASE.2026-10-18T00-00-00Z · 软件包: 20261018000000.0.0 · 源码: 2f7e741db905。 这是 PGSTY 维护的密钥加密服务(Key Encryption Service,KES)首个正式发行版。KES 是独立部署的无状态服务,供需要外部 KMS 的 SILO 服务端加密场景使用(参见组件版本矩阵)。 变更内容 建立 PGSTY 维护与发布流水线,完整保留上游版权、署名及第三方许可证。可执行文件与系统软件包保持 kes 命名 …

    发行版: RELEASE.2026-10-18T00-00-00Z · 软件包: 20261018000000.0.0 · 源码: 2f7e741db905。 这是 PGSTY 维护的密钥加密服务(Key Encryption Service,KES)首个正式发行版。KES 是独立部署的无状态服务,供需要外部 KMS 的 SILO 服务端加密场景使用(参见组件版本矩阵)。 变更内容 建立 PGSTY 维护与发布流水线,完整保留上游版权、署名及第三方许可证。可执行文件与系统软件包保持 kes 命名 …

  • SILO Console 2.4.2 发布

    发布于 发布注记

    Releaseconsole

    Featured Image for SILO Console 2.4.2 发布

    版本: v2.4.2 · 源码: ef2dd2c41d21。 本版本作为独立 Console 发行版及 Server 20261018 的内嵌 Console 组件发布(参见 silo-pkg v3.14.2 发布说明)。 更新内容 升级至 mcli 20261018、silo-pkg v3.14.2 与上游 minio-go v7.4.1。SDK 包含取消后的失败分段上传清理、UTC 保留期时间戳及 STS 时长透传(并行 GET 与 ComposeObject 仍需显式启用)。 保留桶版本控 …

    版本: v2.4.2 · 源码: ef2dd2c41d21。 本版本作为独立 Console 发行版及 Server 20261018 的内嵌 Console 组件发布(参见 silo-pkg v3.14.2 发布说明)。 更新内容 升级至 mcli 20261018、silo-pkg v3.14.2 与上游 minio-go v7.4.1。SDK 包含取消后的失败分段上传清理、UTC 保留期时间戳及 STS 时长透传(并行 GET 与 ComposeObject 仍需显式启用)。 保留桶版本控 …

  • mcli 20261018 发布

    发布于 发布注记

    Releasemcli

    Featured Image for mcli 20261018 发布

    版本: RELEASE.2026-10-18T00-00-00Z · 软件包版本: 20261018000000.0.0 · 源码: fa3b8bf72458。 本版本作为独立 mcli 客户端及 Server 20261018 与 Console v2.4.2 的配套客户端版本发布(参见 silo-pkg v3.14.2 发布说明)。 更新内容 升级至 silo-pkg v3.14.2 与上游 minio-go v7.4.1。SDK 修复取消后的失败分段上传清理、UTC 保留期时间戳格式及 …

    版本: RELEASE.2026-10-18T00-00-00Z · 软件包版本: 20261018000000.0.0 · 源码: fa3b8bf72458。 本版本作为独立 mcli 客户端及 Server 20261018 与 Console v2.4.2 的配套客户端版本发布(参见 silo-pkg v3.14.2 发布说明)。 更新内容 升级至 silo-pkg v3.14.2 与上游 minio-go v7.4.1。SDK 修复取消后的失败分段上传清理、UTC 保留期时间戳格式及 …