跳转到主要内容

PGSTY SILO 博客

  • 生命周期版本历史:同一个版本,两个发行版写的头部

    发布于 设计

    设计生命周期纠删码兼容性

    生命周期版本历史:同一个版本,两个发行版写的头部

    本记录说明维护者复查 RELEASE.2026-11-09T00-00-00Z(d99829238)时发现的一个缺陷。它由该版本中的 9f7b49369 引入,这个提交是多池生命周期修复(#278)的一部分。修复见 PR #332,没有单独的 GitHub issue。 **状态:**已通过 PR #332 合并到 main,提交为 36c8d1683;合并前在第二轮对抗评审中获得通过,第一轮评审改动了修复方案,见评审记录。尚未发布:RELEASE.2026-11-09T00-00-00Z 受影 …

    本记录说明维护者复查 RELEASE.2026-11-09T00-00-00Z(d99829238)时发现的一个缺陷。它由该版本中的 9f7b49369 引入,这个提交是多池生命周期修复(#278)的一部分。修复见 PR #332,没有单独的 GitHub issue。 **状态:**已通过 PR #332 合并到 main,提交为 36c8d1683;合并前在第二轮对抗评审中获得通过,第一轮评审改动了修复方案,见评审记录。尚未发布:RELEASE.2026-11-09T00-00-00Z 受影 …

  • 为 SILO 提供多语言支持

    发布于 设计

    DesignconsoleInternationalization

    为 SILO 提供多语言支持

    Eduardo Andrade Machado 的 Console PR #83 提供了巴西葡萄牙语翻译。siyahkut 在 silo#277 中请求土耳其语。这两项贡献推动 Console 扩展为可配置的十语言界面。 状态: 已随 Console 2.7.0(4e91ae506e70,pgsty/silo-console:v2.7.0)正式发布,并内嵌于 SILO Server 20261109(d998292387cc)。发布前复核验证了紧凑标签、RTL 输入控件,以及手机、平板和桌面宽度 …

    Eduardo Andrade Machado 的 Console PR #83 提供了巴西葡萄牙语翻译。siyahkut 在 silo#277 中请求土耳其语。这两项贡献推动 Console 扩展为可配置的十语言界面。 状态: 已随 Console 2.7.0(4e91ae506e70,pgsty/silo-console:v2.7.0)正式发布,并内嵌于 SILO Server 20261109(d998292387cc)。发布前复核验证了紧凑标签、RTL 输入控件,以及手机、平板和桌面宽度 …

  • SILO 20261109:生命周期、对象锁与批处理授权

    发布于 发布注记

    ReleaseSecurityStorageconsolesilo

    SILO 20261109:生命周期、对象锁与批处理授权

    SILO Server 20261109 已正式发布。 标签为 RELEASE.2026-11-09T00-00-00Z,软件包版本为 20261109000000.0.0,源码提交为 d998292387cc。本版本汇总了 Server 20261026 之后的全部服务端维护修复,并内嵌 Console 2.7.0、mcli 20261109 与 silo-pkg 3.16.0。 GitHub Release · 完整变更日志 · 升级指南 · 下载安装 组件版本 组件 正式版本 固定源码 …

    SILO Server 20261109 已正式发布。 标签为 RELEASE.2026-11-09T00-00-00Z,软件包版本为 20261109000000.0.0,源码提交为 d998292387cc。本版本汇总了 Server 20261026 之后的全部服务端维护修复,并内嵌 Console 2.7.0、mcli 20261109 与 silo-pkg 3.16.0。 GitHub Release · 完整变更日志 · 升级指南 · 下载安装 组件版本 组件 正式版本 固定源码 …

  • mcli 20261109:数据安全与自动化修复

    发布于 发布注记

    Releasemcli

    mcli 20261109:数据安全与自动化修复

    mcli 20261109 已正式发布。 tag 为 RELEASE.2026-11-09T00-00-00Z,软件包版本为 20261109000000.0.0,源码提交为 e1d4cc5abfe0。本文记录相对 20261026 的变化。 这是独立 mcli 的维护版本。SILO Server 20261109 与 Console 2.7.0 已采用本次正式发布提交(e1d4cc5abfe0);更早的 Server 或 Console 二进制仍保留各自原有的嵌入客户端。正式维护和发布验收的服 …

    mcli 20261109 已正式发布。 tag 为 RELEASE.2026-11-09T00-00-00Z,软件包版本为 20261109000000.0.0,源码提交为 e1d4cc5abfe0。本文记录相对 20261026 的变化。 这是独立 mcli 的维护版本。SILO Server 20261109 与 Console 2.7.0 已采用本次正式发布提交(e1d4cc5abfe0);更早的 Server 或 Console 二进制仍保留各自原有的嵌入客户端。正式维护和发布验收的服 …

  • SILO Console 2.7.0:十种语言、用量后台任务与容器修复

    发布于 发布注记

    Releaseconsole

    SILO Console 2.7.0:十种语言、用量后台任务与容器修复

    Console 2.7.0 将管理界面扩展到十种语言,修复容器 HTTPS 与临时文件问题, 采用已正式发布的 mcli 20261109、silo-pkg 3.16.0,并更新 API 文档; 同时修复发布前最终审查发现的问题:用量后台任务的 TLS 与调度、普通 HTTP 下的目录大小计算,以及畸形上传请求。 发布状态与制品见 GitHub Releases。 GitHub Releases · 2.6.0 之后的变化 · Console 兼容性 发布前修复的问题 发布前的最终审查发现了一些 …

    Console 2.7.0 将管理界面扩展到十种语言,修复容器 HTTPS 与临时文件问题, 采用已正式发布的 mcli 20261109、silo-pkg 3.16.0,并更新 API 文档; 同时修复发布前最终审查发现的问题:用量后台任务的 TLS 与调度、普通 HTTP 下的目录大小计算,以及畸形上传请求。 发布状态与制品见 GitHub Releases。 GitHub Releases · 2.6.0 之后的变化 · Console 兼容性 发布前修复的问题 发布前的最终审查发现了一些 …

  • silo-pkg 3.16:JOSE 安全更新与配置修复

    发布于 发布注记

    ReleaseDependencies

    silo-pkg 3.16:JOSE 安全更新与配置修复

    silo-pkg v3.16.0 是 github.com/pgsty/silo-pkg/v3 的源码维护版本,要求 Go 1.27.3,与 v3.15.2 保持 API 兼容。SILO Server 20261109、Console 2.7.0 与 mcli 20261109 已采用 v3.16.0 构建发布;库发布本身不会替换更早的应用制品。 依赖更新 模块 v3.15.2 v3.16.0 github.com/go-jose/go-jose/v4 v4.1.6 v4.1.9 …

    silo-pkg v3.16.0 是 github.com/pgsty/silo-pkg/v3 的源码维护版本,要求 Go 1.27.3,与 v3.15.2 保持 API 兼容。SILO Server 20261109、Console 2.7.0 与 mcli 20261109 已采用 v3.16.0 构建发布;库发布本身不会替换更早的应用制品。 依赖更新 模块 v3.15.2 v3.16.0 github.com/go-jose/go-jose/v4 v4.1.6 v4.1.9 …

  • 两阶段原生恢复

    发布于 设计

    设计分层存储锁可用性

    两阶段原生恢复

    本文覆盖 issue #284,以及 #281 第一版原生恢复防护带来的两处回归;那些防护记录在恢复副本:过期的是副本,不是对象中。本文基于 main 69fcf50cd 和发布前的 SILO Server 20261109 集成分支评估。这个设计取代 #281 防护中私有 upload 的部分,其余部分保留。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 原生恢复(对已转储版本发起 POST ?restore)会从 tier 下载该版本 …

    本文覆盖 issue #284,以及 #281 第一版原生恢复防护带来的两处回归;那些防护记录在恢复副本:过期的是副本,不是对象中。本文基于 main 69fcf50cd 和发布前的 SILO Server 20261109 集成分支评估。这个设计取代 #281 防护中私有 upload 的部分,其余部分保留。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 原生恢复(对已转储版本发起 POST ?restore)会从 tier 下载该版本 …

  • 局部视图不能把存在的对象报成不存在

    发布于 设计

    设计纠删码可用性S3 兼容性

    局部视图不能把存在的对象报成不存在

    本记录说明在 SILO Server 20261109 本地验收中发现的一个缺陷。修复前的 SILO Server 20261109 集成分支和 69fcf50cd 上都能复现。对应 #302。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短回答 刚重启的节点,或者短暂与部分节点断开连接的节点,只能看到纠删集里的一部分盘。如果它能看到的盘上,对象元数据分属两个修订版本,而哪个版本都凑不够读 quorum,GET 和 HEAD 就会对一个存在的对 …

    本记录说明在 SILO Server 20261109 本地验收中发现的一个缺陷。修复前的 SILO Server 20261109 集成分支和 69fcf50cd 上都能复现。对应 #302。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短回答 刚重启的节点,或者短暂与部分节点断开连接的节点,只能看到纠删集里的一部分盘。如果它能看到的盘上,对象元数据分属两个修订版本,而哪个版本都凑不够读 quorum,GET 和 HEAD 就会对一个存在的对 …

  • Multipart 提交失败可能让上传卡死

    发布于 设计

    设计Multipart纠删码S3 兼容性

    Multipart 提交失败可能让上传卡死

    本记录说明在 SILO Server 20261109 发布验收中发现的一个缺陷。它在 69fcf50cd 与 SILO Server 20261109(d998292387cc)上都能复现,继承自上游 MinIO,尚无单独的 GitHub issue 编号。 状态: 已在 SILO Server 20261109 发布验收中完成分析与复现。曾起草一版候选修复,但对抗评审认定其对 SILO Server 20261109 风险过高而予以否决。SILO Server 20261109 将该缺陷记录 …

    本记录说明在 SILO Server 20261109 发布验收中发现的一个缺陷。它在 69fcf50cd 与 SILO Server 20261109(d998292387cc)上都能复现,继承自上游 MinIO,尚无单独的 GitHub issue 编号。 状态: 已在 SILO Server 20261109 发布验收中完成分析与复现。曾起草一版候选修复,但对抗评审认定其对 SILO Server 20261109 风险过高而予以否决。SILO Server 20261109 将该缺陷记录 …

  • SILO Console 2.6.0:用量扫描与存储桶管理改进

    发布于 发布注记

    Releaseconsole

    SILO Console 2.6.0:用量扫描与存储桶管理改进

    Console 2.6.0 已于 2026-11-05(UTC+8)正式发布,接续 2.5.1。 GitHub Release 记录了源码提交 f8ab146695fd1df74e4b84128a286d552921bf00、发布制品与验收证据。 这是独立 Console 发布,Server 内嵌控制台按服务端的发布周期交付。 GitHub Releases · 发布准备 PR #82 · 对象管理文档 目录与存储桶用量 对象浏览器支持可取消的目录大小扫描,并可选统计保留版本。 当前对象字节数与 …

    Console 2.6.0 已于 2026-11-05(UTC+8)正式发布,接续 2.5.1。 GitHub Release 记录了源码提交 f8ab146695fd1df74e4b84128a286d552921bf00、发布制品与验收证据。 这是独立 Console 发布,Server 内嵌控制台按服务端的发布周期交付。 GitHub Releases · 发布准备 PR #82 · 对象管理文档 目录与存储桶用量 对象浏览器支持可取消的目录大小扫描,并可选统计保留版本。 当前对象字节数与 …

  • 失败写入与幽灵空前缀

    发布于 设计

    设计存储ListObjects运维

    失败写入与幽灵空前缀

    本文覆盖 issue #285 和 Denis Babchuk 提交的 PR #286,基于 main 69fcf50cd 与 PR head ed05d982a 评估。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实。调用方已经放弃并删除了暂存数据之后,某块磁盘仍可能执行 xlStorage.RenameData。此时数据目录的重命名会失败,但为这次重命名创建的对象目录会留下来,而且是空的。只要它的父目录下还有其他对象,它就不可 …

    本文覆盖 issue #285 和 Denis Babchuk 提交的 PR #286,基于 main 69fcf50cd 与 PR head ed05d982a 评估。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实。调用方已经放弃并删除了暂存数据之后,某块磁盘仍可能执行 xlStorage.RenameData。此时数据目录的重命名会失败,但为这次重命名创建的对象目录会留下来,而且是空的。只要它的父目录下还有其他对象,它就不可 …

  • Peer 重载后的审计 Webhook

    发布于 设计

    设计审计日志配置运维

    Peer 重载后的审计 Webhook

    本文覆盖 Henrik Feldt 报告的 issue #259,基于 main 69fcf50cd 评估。本修复完成了维护者此前未提交的工作:补上 Kafka 调用点,在目标从未启动时把排队记录交给替代者,并增加 Kafka 测试覆盖。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实,一个定向测试即可复现。管理员在运行时修改 audit_webhook 时,接收请求的服务器用进程上下文应用这次修改;其他每台服务器在 peer 重 …

    本文覆盖 Henrik Feldt 报告的 issue #259,基于 main 69fcf50cd 评估。本修复完成了维护者此前未提交的工作:补上 Kafka 调用点,在目标从未启动时把排队记录交给替代者,并增加 Kafka 测试覆盖。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实,一个定向测试即可复现。管理员在运行时修改 audit_webhook 时,接收请求的服务器用进程上下文应用这次修改;其他每台服务器在 peer 重 …

  • 生命周期"删除全部版本"只能作用于一个 key

    发布于 设计

    DesignLifecycleBatch ExpirationData Safety

    生命周期"删除全部版本"只能作用于一个 key

    本文记录的缺陷是在审查 #278 的修复(多池生命周期过期)时发现的。评估基于 main 69fcf50cd,以及 #278 和 #281 的维护者集成分支;保留当时的评估快照。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 缺陷属实,也是 SILO Server 20261109 的发布阻塞项。有三种操作会删除一个 key 的"全部版本": 生命周期扩展 ExpiredObjectAllVersions; 生命周期动作 …

    本文记录的缺陷是在审查 #278 的修复(多池生命周期过期)时发现的。评估基于 main 69fcf50cd,以及 #278 和 #281 的维护者集成分支;保留当时的评估快照。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 缺陷属实,也是 SILO Server 20261109 的发布阻塞项。有三种操作会删除一个 key 的"全部版本": 生命周期扩展 ExpiredObjectAllVersions; 生命周期动作 …

  • 恢复副本:过期的是副本,不是对象

    发布于 设计

    设计生命周期分层存储数据安全

    恢复副本:过期的是副本,不是对象

    本文覆盖 issue #281 和 Denis Babchuk 提交的 PR #282,基于 main 69fcf50cd 评估。修复与多池生命周期修复(多池生命周期过期,#278)在同一个维护者集成 PR 中交付:贡献者提交原样保留,并附加下文所述的防护,同时配合单池锁域修复一并发布。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实。执行 POST ?restore 后,已分层的版本会在本地获得一份临时副本,保留到 …

    本文覆盖 issue #281 和 Denis Babchuk 提交的 PR #282,基于 main 69fcf50cd 评估。修复与多池生命周期修复(多池生命周期过期,#278)在同一个维护者集成 PR 中交付:贡献者提交原样保留,并附加下文所述的防护,同时配合单池锁域修复一并发布。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实。执行 POST ?restore 后,已分层的版本会在本地获得一份临时副本,保留到 …

  • 多池生命周期过期:按整个对象决策

    发布于 设计

    设计生命周期存储池数据安全

    多池生命周期过期:按整个对象决策

    本文覆盖 issue #278 和 Denis Babchuk 提交的 PR #279,基于 main 69fcf50cd 评估。修复已通过维护者集成合入:贡献者提交原样保留,并附加下文所述的维护者后续修正。恢复副本过期的修复(#281)在同一个集成 PR 中交付,另有单独记录。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实,也是 SILO Server 20261109 修复的首要发布阻塞缺陷。部署有多个池时,同一个 key …

    本文覆盖 issue #278 和 Denis Babchuk 提交的 PR #279,基于 main 69fcf50cd 评估。修复已通过维护者集成合入:贡献者提交原样保留,并附加下文所述的维护者后续修正。恢复副本过期的修复(#281)在同一个集成 PR 中交付,另有单独记录。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 报告属实,也是 SILO Server 20261109 修复的首要发布阻塞缺陷。部署有多个池时,同一个 key …

  • 大型单池集群的锁域

    发布于 设计

    设计锁存储运维

    大型单池集群的锁域

    本文覆盖在审查恢复副本修复(恢复副本:过期的是副本,不是对象)时发现的锁域缺陷,评估基线为 main 上的 69fcf50cd。对应 #298。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 锁域分裂是真实的,继承自上游 MinIO,并且只在一个池中的各纠删集并不使用相同主机时才存在。按自动布局,这意味着单池有 18 台或更多主机;不超过 17 台主机时,每个集都包含所有主机,锁组完全相同。 在这样的池里,DELETE、批量删除 …

    本文覆盖在审查恢复副本修复(恢复副本:过期的是副本,不是对象)时发现的锁域缺陷,评估基线为 main 上的 69fcf50cd。对应 #298。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 锁域分裂是真实的,继承自上游 MinIO,并且只在一个池中的各纠删集并不使用相同主机时才存在。按自动布局,这意味着单池有 18 台或更多主机;不超过 17 台主机时,每个集都包含所有主机,锁组完全相同。 在这样的池里,DELETE、批量删除 …

  • Heal 演练不能删除数据

    发布于 设计

    设计Heal数据安全运维

    Heal 演练不能删除数据

    本文覆盖 Jasper Bernhardt(@dihmandrake)提交的 PR #280 中与演练(dry run)相关的部分,基于 main 69fcf50cd 评估。同一个 PR 还让深度扫描并发校验一个对象的各块盘。这项优化另行评审,不在本文范围内。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 缺陷属实,是 SILO 从上游 MinIO 继承来的。mc admin heal --dry-run 的说明是"只检查数据,不做修改 …

    本文覆盖 Jasper Bernhardt(@dihmandrake)提交的 PR #280 中与演练(dry run)相关的部分,基于 main 69fcf50cd 评估。同一个 PR 还让深度扫描并发校验一个对象的各块盘。这项优化另行评审,不在本文范围内。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 简短结论 缺陷属实,是 SILO 从上游 MinIO 继承来的。mc admin heal --dry-run 的说明是"只检查数据,不做修改 …

  • Console 的桶配额:列表显示与数值校验

    发布于 设计

    DesignconsoleQuotaRetention

    Console 的桶配额:列表显示与数值校验

    本文覆盖 silo-console#72(在 Web Console 中设置的配额在桶列表里显示为短横线)和 silo-console#73(创建桶表单的数值校验)。评估基于修复之前的 Console 源码 3d264aea9,以及修复提交 a85665814 至 5a34232e7。 状态: PR #74(3d1dd56eb,2026-11-04)已随独立版 Console 2.6.0(f8ab14669)发布。PR #74 及全部数值后续修复(#75 2b18ff854、#76 …

    本文覆盖 silo-console#72(在 Web Console 中设置的配额在桶列表里显示为短横线)和 silo-console#73(创建桶表单的数值校验)。评估基于修复之前的 Console 源码 3d264aea9,以及修复提交 a85665814 至 5a34232e7。 状态: PR #74(3d1dd56eb,2026-11-04)已随独立版 Console 2.6.0(f8ab14669)发布。PR #74 及全部数值后续修复(#75 2b18ff854、#76 …

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

    发布于 设计

    设计生命周期存储池复制

    ILM 过期与存储池迁移顺序

    本文记录 issue #265、贡献者修复 PR #266 与维护者后续修复 #276,并说明已经合入的 #264 与 #267 是相关前置修复。#266 的 decommission 提交是 19910230a,rebalance 提交是 a995921e5。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 更新(2026-11-06)。 生命周期删除不复制,S3 如此,SILO 的每个发布版本也是如此。#276 曾在 main 上短暂地让它们复制 …

    本文记录 issue #265、贡献者修复 PR #266 与维护者后续修复 #276,并说明已经合入的 #264 与 #267 是相关前置修复。#266 的 decommission 提交是 19910230a,rebalance 提交是 a995921e5。 状态: 已随 SILO Server 20261109(d998292387cc)正式发布。 更新(2026-11-06)。 生命周期删除不复制,S3 如此,SILO 的每个发布版本也是如此。#276 曾在 main 上短暂地让它们复制 …

  • Tier free version 是内部清理记录

    发布于 设计

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

    Tier free version 是内部清理记录

    本文记录 issue #263 与 PR #264 的审查结论(#276 后续更新基线 0fc5a0b5),#264 的合入提交记录为 0cfca29c。这个 PR 的三个提交是一组相互配合的修复,不是三个互不相关的 workaround。 状态: 已连同下文的 free version 清理归属与 decommission 取消后续修复一并随 SILO Server 20261109(d998292387cc)正式发布。 先说结论 问题成立。free version 是 SILO 在删除 …

    本文记录 issue #263 与 PR #264 的审查结论(#276 后续更新基线 0fc5a0b5),#264 的合入提交记录为 0cfca29c。这个 PR 的三个提交是一组相互配合的修复,不是三个互不相关的 workaround。 状态: 已连同下文的 free version 清理归属与 decommission 取消后续修复一并随 SILO Server 20261109(d998292387cc)正式发布。 先说结论 问题成立。free version 是 SILO 在删除 …