跳转到主要内容

PGSTY SILO 博客

  • 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 保留期时间戳格式及 …

  • LIST 漏项修复:仅对存疑对象补读确认并收敛锁等待开销

    发布于 设计

    DesignS3ListObjectsPerformanceReview

    Featured Image for LIST 漏项修复:仅对存疑对象补读确认并收敛锁等待开销

    随 SILO Server 20261018 发布的 PR #239(合并提交 fbcb51197,关闭 #218 并保留 mr javad seydi 在 #221 中的原始签署提交)以及 10 月 18 日的目录与公共前缀跟进修复(3dd53eb81 与 2080b3d03),解决了并发读写期间 ListObjects 与 ListObjectsV2 静默漏报对象的问题。本设计承接九月的 null 版本仲裁修复,并替代了早期“直接调用普通 GET 元数据路径”的恢复方案。 成功的目录列举可能 …

    随 SILO Server 20261018 发布的 PR #239(合并提交 fbcb51197,关闭 #218 并保留 mr javad seydi 在 #221 中的原始签署提交)以及 10 月 18 日的目录与公共前缀跟进修复(3dd53eb81 与 2080b3d03),解决了并发读写期间 ListObjects 与 ListObjectsV2 静默漏报对象的问题。本设计承接九月的 null 版本仲裁修复,并替代了早期“直接调用普通 GET 元数据路径”的恢复方案。 成功的目录列举可能 …

  • IAM Admin API 授权边界修复

    发布于 设计

    DesignIAMSecurityCompatibility

    Featured Image for IAM Admin API 授权边界修复

    Server 20261018 包含了 PR #242(基于基线 00a375c4e 的修复提交 2616d43fb,合并提交 4e55fc7db)以及批量自查询后续修复 995439260,用于修复 SN-2026-017。本文记录问题范围、Handler 级授权契约、空策略与 claims 归属处理、损坏密钥清理语义、性能开销、被否决的候选方案以及回归验证结果。 问题与范围 此前部分 Admin Handler 在授权拒绝后仍以“目标属于调用者”为由放行,列出自身服务账号时甚至可能直接跳过授 …

    Server 20261018 包含了 PR #242(基于基线 00a375c4e 的修复提交 2616d43fb,合并提交 4e55fc7db)以及批量自查询后续修复 995439260,用于修复 SN-2026-017。本文记录问题范围、Handler 级授权契约、空策略与 claims 归属处理、损坏密钥清理语义、性能开销、被否决的候选方案以及回归验证结果。 问题与范围 此前部分 Admin Handler 在授权拒绝后仍以“目标属于调用者”为由放行,列出自身服务账号时甚至可能直接跳过授 …

  • silo-pkg 3.14.2 发布

    发布于 发布注记

    发布pkg

    Featured Image for silo-pkg 3.14.2 发布

    发行版: v3.14.2 · 源码: c6835145176f。 github.com/pgsty/silo-pkg/v3 v3.14.2 为 mcli 20261018 与 Console v2.4.2 提供十月依赖基线;后续补丁版 v3.14.3 在此基础上优化了策略判定性能,供 Server 20261018 使用。 变更内容 上游 minio-go 升级至 v7.4.1:在调用方取消上下文后仍确保清理失败的分片上传,以 UTC 序列化 Object Lock 保留期时间,原样透传请求的 …

    发行版: v3.14.2 · 源码: c6835145176f。 github.com/pgsty/silo-pkg/v3 v3.14.2 为 mcli 20261018 与 Console v2.4.2 提供十月依赖基线;后续补丁版 v3.14.3 在此基础上优化了策略判定性能,供 Server 20261018 使用。 变更内容 上游 minio-go 升级至 v7.4.1:在调用方取消上下文后仍确保清理失败的分片上传,以 UTC 序列化 Object Lock 保留期时间,原样透传请求的 …

  • 旧版元数据与扫描响应复用时的残留字段修复

    发布于 设计

    设计可靠性存储扫描器

    Featured Image for 旧版元数据与扫描响应复用时的残留字段修复

    本文记录 PR #233(验证提交 86c5a92eef3d,合并提交 d94b3b3c9251,随 Server 20261018 发布)的设计与验证。该补丁修复了旧版 xl.meta 版本头部与远程命名空间扫描响应在复用结构体时带入残留字段的问题。 问题概述 两处独立代码路径在复用 Go 结构体时未完整重置其逻辑状态,导致新输入中未出现的字段沿用了上一轮留下的旧值。修复直接落在明确知晓当前输入字段布局的解码器与响应构造处: 路径 触发条件 修复前状态 修复后状态 旧版 V2 版本头部 将旧版 …

    本文记录 PR #233(验证提交 86c5a92eef3d,合并提交 d94b3b3c9251,随 Server 20261018 发布)的设计与验证。该补丁修复了旧版 xl.meta 版本头部与远程命名空间扫描响应在复用结构体时带入残留字段的问题。 问题概述 两处独立代码路径在复用 Go 结构体时未完整重置其逻辑状态,导致新输入中未出现的字段沿用了上一轮留下的旧值。修复直接落在明确知晓当前输入字段布局的解码器与响应构造处: 路径 触发条件 修复前状态 修复后状态 旧版 V2 版本头部 将旧版 …