跳转到主要内容

组件版本

SILO 20261026、Console 2.5.1、mcli、KES 与 silo-pkg 3.15.2 的正式版本和依赖关系。

SILO 20261026 是当前正式服务端版本,配套 Console 2.5.1、mcli 20261026 与 silo-pkg 3.15.2。KES 20261026 是独立、可选的外部密钥服务。正式支持维护的 PGSTY 组件组合,对原厂 MinIO/MC 尽最大努力兼容。

20261026 正式组件

组件 正式版本 固定源码 / 模块
Server RELEASE.2026-10-26T00-00-00Z c3ad836aed0d8a7d23c2e44a5eaa3009d08525e3
内嵌与独立 Console v2.5.1 v0.0.0-20261026153924-fff1618d9abb
mcli / MC 模块 RELEASE.2026-10-26T00-00-00Z v0.0.0-20261026120214-0ceb298cdcd0
公共包 github.com/pgsty/silo-pkg/v3 v3.15.2 0416eb1f450536ca2cc3592c2c2a06a3df88d4e0
上游 S3 SDK github.com/minio/minio-go/v7 v7.4.2-0.20261025165926-320af050c445
可选 KES RELEASE.2026-10-26T00-00-00Z e9b4f1acebc11d61b42f876da8df48f548750cc9
Go / 平台归档 Go 1.27.3 Windows ZIP;Linux/macOS tar.gz

Server、mcli 与 KES 的软件包版本号均为 20261026000000.0.0。单独升级独立部署的 Console 不会替换旧版 Server 内嵌的控制台或服务端逻辑;内置策略 Reset、实时存储桶清单、生命周期过期与复制修复均需配合 Server 20261026 生效。

三合一发布日志 · Console 2.5 · pkg 3.15 · 升级检查 · 下载

官方容器镜像发布于 Docker Hub:pgsty/silo、pgsty/mc、pgsty/silo-console 与 pgsty/kes(软件源镜像同步可能略晚于 GitHub Release)。下文保留各历史版本的依赖矩阵,供升级与回滚核对。

Server 20261018 正式发布

目标标签为 RELEASE.2026-10-18T00-00-00Z,包版本为 20261018000000.0.0,选定源码为 0cd388c66。GitHub Release 已正式发布,匿名下载与 Docker Hub 镜像于 2026-10-19 完成核验。完整功能、安全、兼容性与剩余限制见 20261018 发布说明。

20261015 保留为历史未发布草稿,由 20261018 正式版取代并交付 10 月的 Object Lock、IAM 与 LIST 修复(Server 20260916 不含这些修复)。

10 月组件依赖图

组件 Server 20261018 选用版本
嵌入式 Console v2.4.2,v0.0.0-20261017112417-ef2dd2c41d21
MC 模块/镜像内置 mcli 20261018,v0.0.0-20261017101407-fa3b8bf72458
Server 共享包 github.com/pgsty/silo-pkg/v3 v3.14.3
上游 S3 SDK github.com/minio/minio-go/v7 v7.4.1
构建工具链 Go 1.27.2;Console 前端使用 Node 24.22.0 LTS

历史版本 Console v2.4.2 与 mcli 20261018 声明 pkg v3.14.2;Server 的模块图选用 v3.14.3。v3.14.2 的依赖更新与 v3.14.3 的 admin action 分类优化保持 API、策略格式和授权语义。Server 必须显式选择 Console 与 MC 的 replacement,Go 不会继承依赖的替换配置。正式支持 PGSTY 四组件组合,对原厂 MinIO/MC 兼容尽最大努力。

9 月 16 日依赖图

Console v2.4.1 选择以下已发布的 pkg 与 MC 源码, 各模块身份已通过公共 Go proxy 与校验和数据库验证。

  • Console: v0.0.0-20260916075814-1360e26d976d → 1360e26d976d,标签 v2.4.1。
  • pkg: v3.14.1 → fa657ef431ae22e720df37e5144cf00f67102945。
  • MC: v0.0.0-20260916070421-e952aa78f10a → e952aa78f10a,标签 RELEASE.2026-09-16T00-00-00Z。
  • 上游 minio-go: v7.3.1-0.20260915093545-32e1f32cb176。
  • JWX / strfmt / React Router: v3.3.0 / v0.27.2 / v7.18.4。

Console 嵌入前端已按此依赖图重新构建。历史 Go 模块路径没有 /v2 后缀, 所以通过规范伪版本引用 Console。Server 嵌入方必须同时复制 Console 与 MC replacement, 见Console 集成说明。

升级前请检查密码权限迁移: admin:ChangeMyPassword 与 admin:CreateUser 分别控制不同操作。 Server changelog 和下列源码链接 说明协调升级 Server 时涉及的存储、IAM 与 HTTP 变化。

存储、IAM 与 HTTP 修复

以下改动已随 Server 20260916 发布;Server 20260903 不包含这些修复。实现范围可通过所链接的 PR 与源码记录核对。

范围 已合并 PR 运维可见行为
多池存储 #188
#189
普通单对象版本 DELETE 协调各池副本,副本协调保留标签状态;移除可选的 GET 访问频率池间分层功能。
分片完成条件 #190 前置条件使用所有池中的逻辑最新对象,避免旧副本接受过期 ETag,或拒绝当前 ETag。
分片发现与取消 #198
#213
Server 20260916 默认使用 legacy 列举与取消。显式启用严格模式后,跨 pool/set 发现持久上传、在原生 marker 对应上传消失后继续分页,并要求多数盘确认取消。严格模式要求所有 writer 升级并排空旧上传,见升级契约。
普通条件 PUT #207 公开写入条件使用所有池中的逻辑当前对象,包括正在退役或再平衡的池;可读性及目标版本行为变化见下文。
IAM 撤销 #191
#192
节点间删除通知重新加载已提交状态;持久化删除版本与撤销边界,防止旧站点事件重放恢复已撤销身份或旧授权。
删除标记清除 eb4f5e5b3
254b19ac0
358ab38fb
指定版本的清除不再在缺少该标记的盘上创建标记;对已缺失版本的重试须有写仲裁多数的缺失票才确认;heal 后的标记保留复制与清除元数据;排队中的标记创建任务在发送前先在复制锁内复核源端。剩余边界见下文、#217 与复制可靠性记录第三轮。
盘间分歧下的列举 8d06424b1 当更新的少数盘排在前面时,仍保留达到列举仲裁的 null 对象版本。滚动重启叠加并发覆盖写时,成功的 LIST 仍可能漏掉可读的 key;见下文、#218 与设计记录。
跨池迁移标签 fced86303 rebalance 与 decommission 对普通和分片写入都把对象标签及其修订字段带到目标池。此前迁移已丢失的标签不会恢复;见多池对象一致性。
标签与删除标记 #193
#196
SSE-KMS 复制保留标签修订时间;删除标签推进修订并抵御延迟事件;删除标记清除在 MRF 恢复时保留标记身份和重试状态。
复制元数据 #194 恢复复制元数据时,不再把传输用的 aws-chunked 编码重新写入对象元数据。
请求头超时 #196 --read-header-timeout / MINIO_READ_HEADER_TIMEOUT 正确传入 HTTP 服务,对 HTTP/1 请求头设置绝对读取期限,持续少量发送字节也无法延长;正文保留既有滚动空闲超时。

升级与兼容性要求:

  • IAM 要求所有参与服务器协调升级。 不支持共享 IAM 后端的新旧节点混用,也不支持滚动降级。备份完整 IAM 存储及所需加密材料,普通管理导出不包含删除历史。同名父身份重建前签发的旧凭据可能需要重新签发;升级前已经丢失的删除历史无法自动重建。具体操作见 IAM 升级与回滚说明。
  • 不可读池会更一致地使写入、删除失败。 即使另一个池还能处理 GET/HEAD,只要任一池元数据不可读,条件式分片上传完成就会失败。普通版本 DELETE 在池不可读或清理失败时也返回错误;读取仲裁不足返回 503 SlowDownRead,应在恢复后重试。出站删除复制尚未完成时,请求成功不代表每块磁盘都已立即物理删除。
  • Server 20260903 从未包含访问频率池间分层。 只有使用过该实验功能的构建需要按迁移说明清理配置和 XML。普通生命周期过期、远程层迁移、再平衡与池退役仍可使用。
  • 清除操作的审计状态由 COMPLETE 规范为 COMPLETED。历史异常标签修订可能失败并重试,本次修复不会重建其历史。较短的请求头超时也会限制 TLS 握手读取窗口;它不会给 HTTP/1 上传、下载新增总时长限制。
  • 带已记录标签修订的对象在显式 resync 或 heal 时每对象多一次元数据 COPY;当目的端按桶默认做 KMS 加密时,该复制会重写对象数据。带标签过滤的复制规则仍按删除后的(空)标签状态评估目标资格;任意站点时钟偏差不在修复后的顺序保证之内。复制双方必须都运行修复后的构建,墓碑才会被尊重——旧对端仍会丢弃空值修订。见复制标签排序。

R4–R8 集成记录保留了源码哈希、本地测试及验收边界。PR #196 合并前的 11 项检查全部通过。

Console 分享下载

Console #56 与 Server #209 修复了 Console #52 报告的匿名代理边界问题。 代理只允许访问已配置 S3 源地址上的对象内容 GET,拒绝跳转、系统路径以及 通过查询参数选择的非下载操作。没有新增关闭分享的环境变量,正常公共对象、 预签名和版本下载继续可用,详见行为与设计权衡。

修复已随 Console v2.4.1 发布。 精确发布源码通过完整 CI 矩阵、漏洞检查与发布工作流;真实 API 和浏览器分享测试 覆盖独立与内嵌部署,实际下载的独立二进制也连接 SILO 测试服务通过了分享回归。

普通条件 PUT

#199 的跨 pool 条件 PUT 问题已在发布版 Server 20260903 上复现。 PR #207 的提交 4620be394b52 于 2026-09-16 通过全部 8 项 CI, 随后以 9b4ae82a29cc 合入。 修复已随 Server 20260916 发布。 具体行为如下:

  • 普通多 pool If-Match / If-None-Match 条件使用所有池中的逻辑当前对象。 即使另一个池仍可处理 GET,只要无法核实某池元数据,条件写入就可能失败;读取仲裁不足返回 503,应恢复可读性或完成 heal 后重试。
  • 请求指定目标 versionId 时,公开写入条件仍比较当前对象,写入的目标版本保持请求指定的值; 内部复制保留按指定版本检查的语义。无条件 PUT 与单 pool 条件写入保持既有行为。
  • 条件覆盖成功不会清理其他池中的旧副本,升级也不能恢复历史上已接受的覆盖。 仍沿用既有修改时间与 pool 排序,不新增全局时钟排序保证。

#190 的分片完成修复既未引入、也未修复此 PUT 问题。 最终打包候选及部署验收仍由 #203 单独跟踪。

仍待完成的工作

  • 升级与存量准备: #200 跟踪 IAM 升级及恢复演练;#201 跟踪历史复制状态检查及修复验证。
  • 发布交付: #202 汇总说明和组件身份;#203 跟踪最终制品与多进程栈验证。
  • 多站删除标记收敛: 254b19ac0 的源端复核覆盖不了已经在网络上在途、或由另一站点重放的创建;多数确认的清除之后崩溃留下的少数标记副本,也没有证明持久的清理责任人。#217 跟踪接收端方案;见设计记录。
  • 滚动重启期间的列举: #239(已随 Server 20261018 发布)承接 #218,对符合条件的最新对象分歧进行确认,区分真实删除与读取故障,并把最终错误传递到分页响应。不增加磁盘格式、客户端参数或迁移开关;详见最新设计与验收边界。
  • **跨池迁移与历史标签:**最终 20261018 制品通过四组本地 2/3 池 rebalance/decommission,覆盖标签、版本、删除标记和中断恢复,见十月迁移修复。修复前已丢失的标签须单独审计。
  • 分片上传列表: #79 保留开放。Server 20261018 撤回默认持久扫描,并退役可选 strict 模式;公开列表重新使用节点本地缓存或精确 key 查询,完整发现、前缀/分页语义和迟到创建写入仍未解决。详见当前契约与容量证据。

依赖与发布顺序

  1. 核验上游 SDK 提交与需要的修复,继续使用 github.com/minio/minio-go/v7;退役的 silo-go 不再属于维护依赖图。
  2. 验证并以 github.com/pgsty/silo-pkg/v3 发布 pkg,同时提供迁移说明;通过 Go proxy 与校验和数据库解析标签。
  3. MC 更新到该 pkg/SDK,验证后发布日历标签的 mcli。Go 消费者引用其规范伪版本。
  4. Console 更新直接 pkg 依赖与 MC replacement,验证嵌入前端和集成;需要正式发布时单独发布 Console,也可明确选择已合入的不可变源码提交。
  5. Server 更新直接 pkg/SDK 依赖、两个 PGSTY replacement、客户端归档哈希、镜像和 Helm 客户端版本。验证完整依赖图后,再分别完成 Server 发布、镜像发布与集群升级。

Go 不继承依赖模块的 replace。即使 Console 已选择 MC,Server 仍必须显式选择受维护的 Console 与 MC。 Console 和 MC 保留历史 MinIO 模块路径,pkg 直接使用自己的路径。 colorjson/dperf 带入的旧 minio/pkg/v3 传递依赖与维护中的策略实现相互独立。

Console v2.4.2、mcli 20261018 与 Server 20261018 使用 Go 1.27.2,9 月版栈使用 Go 1.27.1;pkg v3.14.x 系列保留 Go 1.26 库兼容下限,并通过 Go 1.26.8 race 测试。独立发布的 Console v2.5.1、mcli 20261026 及其 pkg v3.15.2 依赖要求 Go 1.27.3。 Go x/* 依赖已刷新。go-systemd 实际仍选 v22.6.0,因为 v22.7.0 在 NetBSD 编译失败; Console 保留 tablewriter v0.0.5 replacement 以兼容所用 MC API。

其他依赖按具体 CVE 与缺陷修复更新。 9 月 13 日 Go 扫描没有发现可达或已导入的易受攻击包,未使用的 OpenPGP 代码保留模块级 GO-2026-5932 记录。

正式支持的集成对象是协调后的 PGSTY 栈;与原版上游 MinIO/MC 和其他 S3 实现的兼容属于尽力保留。

9 月 16 日 Server 源码核对补充

Server 20260916 源码 2a4d51406b7e 已选择 pkg v3.14.1、上游 minio-go 32e1f32cb176、Console v2.4.1 源码 1360e26d976d 和 MC e952aa78f10a(mcli 20260916)。正式 Server 标签为 RELEASE.2026-09-16T00-00-00Z,包版本 20260916000000.0.0。

相关 Server 后续修复均未进入 20260903;文章中的原有 Object Lock 修复及其它已发布前置项按各自明确的版本记载。

最后的存储修复还包括 fced86303 的迁移标签保留、8d06424b1 的 null 版本 quorum,以及 eb4f5e5b3 / 254b19ac0 / 358ab38fb 的版本 purge、标记元数据和排队创建修复。仍需注意 #217 的迟到创建/崩溃残留和 #218 的重启期间列表遗漏。

10 月 15 日源码验收

已纳入 Server 20261015 草稿;Server 20260916 不包含。 PR #233 已以 d94b3b3c9251 合入,修复旧版 xl.meta 头部复用时的缺失字段残留,并使扫描更新与最终缓存保持互斥。 存储格式、RPC 字段与依赖版本均未变化。问题与修复说明 记录了确定性回归测试、双进程扫描验证、合并后 CI 和运维核验方法。 该源码修复已纳入 Server 20261015 草稿,并随 Server 20261018 正式发布。

20261015 之后纳入 20261018 的修复

20261018 在早期草稿基础上纳入提交元数据错误分类(#232)、上传时间解析(#236)、校验和与 Console 错误(#229/#238)、IAM 管理授权及批量自查询(#242、995439260)、LIST 恢复与目录保留(#239、3dd53eb81、2080b3d03)、空上传父目录清理(0f9199e0c),以及撤回公开持久扫描(4733e1423)。共享包已升至 v3.14.3。最终候选还包含跨池迁移旧副本覆盖与删除标记修复(60c7179dd、1748f62c7),以及持久 STS 枚举、撤销传播和漏通知恢复(0cd388c66)。

具体行为、升级步骤与未完成事项以 20261018 发布说明为准。原 strict 用户会失去持久列表与严格取消能力;#79 与 #217 仍未解决。

表格阅读