PGSTY SILO 博客
-
为 SILO 提供多语言支持
Eduardo Andrade Machado 的 Console PR #83 提供了巴西葡萄牙语翻译。siyahkut 在 silo#277 中请求土耳其语。这两项贡献推动 Console 扩展为可配置的十语言界面。 **截至 2026-11-09 的状态:**十语言界面、审校后的译文、逐语言压缩、静态全量加载和长期缓存已合入 Console main,并随 Console 2.7.0 发布。最终复核保留了紧凑标签要求,并检查了相关控件在手机、平板和桌面宽度下的显示。源码合入、打标与正式产品 …
Eduardo Andrade Machado 的 Console PR #83 提供了巴西葡萄牙语翻译。siyahkut 在 silo#277 中请求土耳其语。这两项贡献推动 Console 扩展为可配置的十语言界面。 **截至 2026-11-09 的状态:**十语言界面、审校后的译文、逐语言压缩、静态全量加载和长期缓存已合入 Console main,并随 Console 2.7.0 发布。最终复核保留了紧凑标签要求,并检查了相关控件在手机、平板和桌面宽度下的显示。源码合入、打标与正式产品 …
-
mcli 20261109:数据安全与自动化修复
mcli 20261109 已正式发布。 tag 为 RELEASE.2026-11-09T00-00-00Z,软件包版本为 20261109000000.0.0,源码提交为 e1d4cc5abfe0。本文记录相对 20261026 的变化。 这是独立 mcli 的维护版本,不会替换现有 Server 或 Console 构建中嵌入的客户端。正式维护和发布验收的服务端是 PGSTY SILO;对上游 MinIO 与其他 S3 兼容服务保持尽最大努力的兼容。 删除、搬移与下载 dry-run 保持 …
mcli 20261109 已正式发布。 tag 为 RELEASE.2026-11-09T00-00-00Z,软件包版本为 20261109000000.0.0,源码提交为 e1d4cc5abfe0。本文记录相对 20261026 的变化。 这是独立 mcli 的维护版本,不会替换现有 Server 或 Console 构建中嵌入的客户端。正式维护和发布验收的服务端是 PGSTY SILO;对上游 MinIO 与其他 S3 兼容服务保持尽最大努力的兼容。 删除、搬移与下载 dry-run 保持 …
-
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 安全更新与配置修复
silo-pkg v3.16.0 是 github.com/pgsty/silo-pkg/v3 的源码维护版本,要求 Go 1.27.3,与 v3.15.2 保持 API 兼容。Server、Console 与 mcli 只有在采用新版本并重新构建后才会获得更新;库发布不会替换这些应用已有的发布制品。 依赖更新 模块 v3.15.2 v3.16.0 github.com/go-jose/go-jose/v4 v4.1.6 v4.1.9 golang.org/x/net v0.61.0 …
silo-pkg v3.16.0 是 github.com/pgsty/silo-pkg/v3 的源码维护版本,要求 Go 1.27.3,与 v3.15.2 保持 API 兼容。Server、Console 与 mcli 只有在采用新版本并重新构建后才会获得更新;库发布不会替换这些应用已有的发布制品。 依赖更新 模块 v3.15.2 v3.16.0 github.com/go-jose/go-jose/v4 v4.1.6 v4.1.9 golang.org/x/net v0.61.0 …
-
两阶段原生恢复
本文覆盖 issue #284,以及 #281 第一版原生恢复防护带来的两处回归;那些防护记录在恢复副本:过期的是副本,不是对象中。本文基于 main 69fcf50cd 和下个版本的集成分支评估。这个设计取代 #281 防护中私有 upload 的部分,其余部分保留。 状态: 设计经六轮审查通过,实现经两轮审查通过,已在下个版本的集成分支上本地提交。尚未合并或发布。 简短结论 原生恢复(对已转储版本发起 POST ?restore)会从 tier 下载该版本,并写出一份本地副本。两个问题来自这 …
本文覆盖 issue #284,以及 #281 第一版原生恢复防护带来的两处回归;那些防护记录在恢复副本:过期的是副本,不是对象中。本文基于 main 69fcf50cd 和下个版本的集成分支评估。这个设计取代 #281 防护中私有 upload 的部分,其余部分保留。 状态: 设计经六轮审查通过,实现经两轮审查通过,已在下个版本的集成分支上本地提交。尚未合并或发布。 简短结论 原生恢复(对已转储版本发起 POST ?restore)会从 tier 下载该版本,并写出一份本地副本。两个问题来自这 …
-
局部视图不能把存在的对象报成不存在
本记录说明在下一版本地验收中发现的一个缺陷。下一版的本地集成和 69fcf50cd 上都能复现。目前还没有对应的 GitHub issue。 **状态:**修复已通过对抗评审(附若干小意见,均已采纳),并已在本地分支实现。尚未合并或发布。 简短回答 刚重启的节点,或者短暂与部分节点断开连接的节点,只能看到纠删集里的一部分盘。如果它能看到的盘上,对象元数据分属两个修订版本,而哪个版本都凑不够读 quorum,GET 和 HEAD 就会对一个存在的对象返回 404 NoSuchKey。 数据不会丢失 …
本记录说明在下一版本地验收中发现的一个缺陷。下一版的本地集成和 69fcf50cd 上都能复现。目前还没有对应的 GitHub issue。 **状态:**修复已通过对抗评审(附若干小意见,均已采纳),并已在本地分支实现。尚未合并或发布。 简短回答 刚重启的节点,或者短暂与部分节点断开连接的节点,只能看到纠删集里的一部分盘。如果它能看到的盘上,对象元数据分属两个修订版本,而哪个版本都凑不够读 quorum,GET 和 HEAD 就会对一个存在的对象返回 404 NoSuchKey。 数据不会丢失 …
-
Multipart 提交失败可能让上传卡死
本记录说明在下一版本地验收中发现的一个缺陷。它在 69fcf50cd 上能复现,继承自上游 MinIO。目前还没有对应的 GitHub issue。 **状态:**已分析并复现。起草过一版修复,但对抗评审认为它对本版风险太大,予以否决。修复推迟到下一版,与存储操作的完成确认(fencing)一起做。下一版把它列为已知问题。 简短回答 CompleteMultipartUpload 没有达到写 quorum 时,这个上传可能变得无法使用,即使之后所有盘都恢复正常: 再次 Complete 返回 …
本记录说明在下一版本地验收中发现的一个缺陷。它在 69fcf50cd 上能复现,继承自上游 MinIO。目前还没有对应的 GitHub issue。 **状态:**已分析并复现。起草过一版修复,但对抗评审认为它对本版风险太大,予以否决。修复推迟到下一版,与存储操作的完成确认(fencing)一起做。下一版把它列为已知问题。 简短回答 CompleteMultipartUpload 没有达到写 quorum 时,这个上传可能变得无法使用,即使之后所有盘都恢复正常: 再次 Complete 返回 …
-
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 · 对象管理文档 目录与存储桶用量 对象浏览器支持可取消的目录大小扫描,并可选统计保留版本。 当前对象字节数与 …
-
失败写入与幽灵空前缀
本文覆盖 issue #285 和 Denis Babchuk 提交的 PR #286,基于 main 69fcf50cd 与 PR head ed05d982a 评估。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查,全部通过。尚未合并或发布。修复保留 PR #286 的提交不变,并增加一个维护者提交。 简短结论 报告属实。调用方已 …
本文覆盖 issue #285 和 Denis Babchuk 提交的 PR #286,基于 main 69fcf50cd 与 PR head ed05d982a 评估。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查,全部通过。尚未合并或发布。修复保留 PR #286 的提交不变,并增加一个维护者提交。 简短结论 报告属实。调用方已 …
-
Peer 重载后的审计 Webhook
本文覆盖 Henrik Feldt 报告的 issue #259,基于 main 69fcf50cd 评估。本修复完成了维护者此前未提交的工作:补上 Kafka 调用点,在目标从未启动时把排队记录交给替代者,并增加 Kafka 测试覆盖。修复已在本地提交,尚未提交 pull request。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性 …
本文覆盖 Henrik Feldt 报告的 issue #259,基于 main 69fcf50cd 评估。本修复完成了维护者此前未提交的工作:补上 Kafka 调用点,在目标从未启动时把排队记录交给替代者,并增加 Kafka 测试覆盖。修复已在本地提交,尚未提交 pull request。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性 …
-
生命周期"删除全部版本"只能作用于一个 key
本文记录的缺陷是在审查 #278 的修复(多池生命周期过期)时发现的。评估基于 main 69fcf50cd,以及 #278 和 #281 的维护者集成分支;该分支尚未公开。 状态: 修复已通过审查,并已合入 main。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查,全部通过。尚未进入已打标的 SILO 发布。 简短结论 缺陷属实,并阻塞下一个版本。有三种操作会删除一个 …
本文记录的缺陷是在审查 #278 的修复(多池生命周期过期)时发现的。评估基于 main 69fcf50cd,以及 #278 和 #281 的维护者集成分支;该分支尚未公开。 状态: 修复已通过审查,并已合入 main。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查,全部通过。尚未进入已打标的 SILO 发布。 简短结论 缺陷属实,并阻塞下一个版本。有三种操作会删除一个 …
-
恢复副本:过期的是副本,不是对象
本文覆盖 issue #281 和 Denis Babchuk 提交的 PR #282,基于 main 69fcf50cd 评估。修复与多池生命周期修复(多池生命周期过期,#278)在同一个维护者集成 PR 中交付:贡献者提交原样保留,并附加下文所述的防护。本修复还依赖单池锁域修复,必须与它一起或在它之后合并。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复 …
本文覆盖 issue #281 和 Denis Babchuk 提交的 PR #282,基于 main 69fcf50cd 评估。修复与多池生命周期修复(多池生命周期过期,#278)在同一个维护者集成 PR 中交付:贡献者提交原样保留,并附加下文所述的防护。本修复还依赖单池锁域修复,必须与它一起或在它之后合并。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复 …
-
多池生命周期过期:按整个对象决策
本文覆盖 issue #278 和 Denis Babchuk 提交的 PR #279,基于 main 69fcf50cd 评估。修复将通过维护者集成 PR 合入:贡献者提交原样保留,并附加下文所述的维护者后续修正。恢复副本过期的修复(#281)在同一个集成 PR 中交付,另有单独记录。 状态: 修复的第一版通过了两轮维护者审查。随后对抗性审查要求修改,即修复方案中的第 6–9 部分。实现这些修改的补丁经过四轮审查后获得批准。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 …
本文覆盖 issue #278 和 Denis Babchuk 提交的 PR #279,基于 main 69fcf50cd 评估。修复将通过维护者集成 PR 合入:贡献者提交原样保留,并附加下文所述的维护者后续修正。恢复副本过期的修复(#281)在同一个集成 PR 中交付,另有单独记录。 状态: 修复的第一版通过了两轮维护者审查。随后对抗性审查要求修改,即修复方案中的第 6–9 部分。实现这些修改的补丁经过四轮审查后获得批准。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 …
-
大型单池集群的锁域
本文覆盖在审查恢复副本修复(恢复副本:过期的是副本,不是对象)时发现的锁域缺陷,评估基线为 main 上的 69fcf50cd。目前尚未提交 issue。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查,全部通过。尚未合并或发布。 简短结论 锁域分裂是真实的,继承自上游 MinIO,并且只在一个池中的各纠删集并不使用相同主机时才存在。 …
本文覆盖在审查恢复副本修复(恢复副本:过期的是副本,不是对象)时发现的锁域缺陷,评估基线为 main 上的 69fcf50cd。目前尚未提交 issue。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查,全部通过。尚未合并或发布。 简短结论 锁域分裂是真实的,继承自上游 MinIO,并且只在一个池中的各纠删集并不使用相同主机时才存在。 …
-
Heal 演练不能删除数据
本文覆盖 Jasper Bernhardt(@dihmandrake)提交的 PR #280 中与演练(dry run)相关的部分,基于 main 69fcf50cd 评估。同一个 PR 还让深度扫描并发校验一个对象的各块盘。这项优化另行评审,不在本文范围内。该 PR 尚未运行 CI。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查, …
本文覆盖 Jasper Bernhardt(@dihmandrake)提交的 PR #280 中与演练(dry run)相关的部分,基于 main 69fcf50cd 评估。同一个 PR 还让深度扫描并发校验一个对象的各块盘。这项优化另行评审,不在本文范围内。该 PR 尚未运行 CI。 状态: 修复已通过审查,已在本地提交。它已和下个版本的其他修复放在同一个集成分支上一起测试:带 kqueue,dev 标签的本地完整测试套件、本地执行的 CI 竞态检测选集,以及针对修复之间相互作用的对抗性审查, …
-
Console 的桶配额:列表显示与数值校验
本文覆盖 silo-console#72(在 Web Console 中设置的配额在桶列表里显示为短横线)和 silo-console#73(创建桶表单的数值校验)。评估基于修复之前的 Console 源码 3d264aea9,以及修复提交 a85665814 至 5a34232e7。 状态: 已随 Console 2.6.0 发布。修复提交已合入 Console main(PR #74,合并提交 3d1dd56eb,2026-11-04),之后又有数值相关的后续修复(PR …
本文覆盖 silo-console#72(在 Web Console 中设置的配额在桶列表里显示为短横线)和 silo-console#73(创建桶表单的数值校验)。评估基于修复之前的 Console 源码 3d264aea9,以及修复提交 a85665814 至 5a34232e7。 状态: 已随 Console 2.6.0 发布。修复提交已合入 Console main(PR #74,合并提交 3d1dd56eb,2026-11-04),之后又有数值相关的后续修复(PR …
-
ILM 过期与存储池迁移顺序
本文记录 issue #265、贡献者修复 PR #266 与维护者后续修复 #276,并说明已经合入的 #264 与 #267 是相关前置修复。本文已于 2026-11-02 按 #276 合入后的 main 更新。#266 的 decommission 提交是 19910230a,rebalance 提交是 a995921e5。 更新(2026-11-06)。 生命周期删除不复制,S3 如此,SILO 的每个发布版本也是如此。#276 曾在 main 上短暂地让它们复制 …
本文记录 issue #265、贡献者修复 PR #266 与维护者后续修复 #276,并说明已经合入的 #264 与 #267 是相关前置修复。本文已于 2026-11-02 按 #276 合入后的 main 更新。#266 的 decommission 提交是 19910230a,rebalance 提交是 a995921e5。 更新(2026-11-06)。 生命周期删除不复制,S3 如此,SILO 的每个发布版本也是如此。#276 曾在 main 上短暂地让它们复制 …
-
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 布局与迁移列表
本文记录 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
本文审查 #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 …