跳转到主要内容

存储

3 篇
  • 失败写入与幽灵空前缀

    发布于 设计

    设计存储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。此时数据目录的重命名会失败,但为这次重命名创建的对象目录会留下来,而且是空的。只要它的父目录下还有其他对象,它就不可 …

  • 大型单池集群的锁域

    发布于 设计

    设计锁存储运维

    大型单池集群的锁域

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

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

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

    发布于 设计

    设计可靠性存储扫描器

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

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

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