You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MinIO S3分片上传:文件大小等于分片大小时ETag异常

MinIO分片大小等于文件大小时ETag异常解析

核心问题原因

你的应用在上传大小恰好等于分片大小的文件时,错误地生成了两个分片(一个满大小分片 + 一个空分片),导致MinIO按两个分片的规则计算ETag,从而和预期的单分片ETag不符。

MinIO ETag生成规则回顾

  • 单块上传(PutObject):ETag直接等于文件内容的MD5哈希值,无后缀。
  • 分片上传(Multipart Upload):ETag是所有分片MD5哈希值的二进制拼接后的MD5哈希值,再加上-分片数量后缀。

你的场景拆解

  1. 5242879字节文件:小于分片大小,应用使用单块上传,ETag为文件MD5,和预期一致。
  2. 5242880字节文件:
    • 你预期的是单分片上传的ETag:81485c0e873d222199469076b60f30e9-1(该值是5242880个0的MD5,加单分片后缀)。
    • 但实际应用上传了两个分片:一个5242880字节的分片(MD5为81485c0e873d222199469076b60f30e9),加上一个0字节的空分片(MD5为d41d8cd98f00b204e9800998ecf8427e)。
    • MinIO将这两个分片的MD5二进制拼接后计算MD5,得到1faefa44d632065e8bd4fd2a462ed292,再加上分片数量-2,就是你看到的实际ETag。
  3. 5242881字节文件:大于分片大小,应用正确分成两个分片(5242880 + 1字节),ETag计算符合预期。

你忽略的要点

  • 应用的分片上传逻辑存在bug:当文件大小恰好是分片大小的整数倍时,错误地新增了一个空分片。正常情况下,文件大小等于分片大小应该只生成一个分片,或直接使用单块上传。
  • 单块上传和分片上传的ETag逻辑差异:即使文件大小等于分片大小,选择单块上传会得到无后缀的MD5;选择分片上传(单分片)会得到MD5加-1,但你的应用错误地触发了双分片上传。

内容的提问来源于stack exchange,提问作者EricD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:45:24