对象修复
什么是修复?
修复是 MinIO 恢复已损坏、已损坏或部分丢失的对象的能力。损失可能来自多种类型的损坏或丢失,包括但不限于
驱动器级错误或故障
操作系统或文件系统错误或故障
修复和擦除编码
MinIO 恢复损坏对象的能力直接与以下内容相关
对象所在的 擦除集 中的驱动器总数
具有对象完整部分的可用驱动器数量
奇偶校验设置 用于擦除集
奇偶校验 指的是 MinIO 在写入对象时创建的专用恢复分片的数量。例如,一个擦除集可能总共有八个驱动器,在写入奇偶校验时使用三个驱动器。在这种情况下,MinIO 将一个对象拆分为 5 个数据分片并创建 3 个奇偶校验分片。MinIO 将这八个分片分布在擦除集中的驱动器上。没有一个驱动器只包含奇偶校验分片或只包含数据分片。相反,MinIO 以随机方式写入每个对象的分片,以将读取均匀分布在驱动器上。
当 MinIO 需要提供对象时,它会查找对象的 data 分片。如果任何 data 分片丢失或损坏,MinIO 会使用一个或多个奇偶校验分片来恢复对象。在查找 parity 分片时,如果任何 parity 分片丢失或损坏,MinIO 会恢复这些分片,前提是有足够的其他分片可以提供对象。对于这种情况,最多可以丢失或损坏三个 data 分片部分,MinIO 仍然可以成功地恢复和提供对象。
具有对象完整 data 或 parity 分片的可用驱动器数量必须满足或超过擦除集中用于 data 分片的驱动器数量。在上面的情况下,必须有五个具有完整分片的驱动器在线并可用于 MinIO,才能成功提供对象。
MinIO 什么时候修复对象?
MinIO 具有一个强大的对象修复系统。
在 GET
请求期间进行修复
每次您使用 GET
或 HEAD
操作请求对象时,MinIO 都会自动检查对象 data 分片的一致性。对于版本化存储桶,MinIO 还会在 PUT
操作期间检查一致性。
如果所有 data 分片都完好无损,MinIO 会从 data 分片提供对象,而无需检查相应的 parity 分片。
如果对象具有丢失或损坏的 data 分片,MinIO 会使用可用的 parity 分片修复对象,然后再将其作为操作的一部分提供。必须有一个完整的 parity 分片可用于每个丢失或损坏的 data 分片,否则无法恢复对象。如果任何 parity 分片丢失或损坏,MinIO 会恢复 parity 分片,前提是有足够的其他 parity 分片可以提供对象。
使用对象扫描器进行修复
MinIO 使用 对象扫描器 来执行许多与对象相关的任务。其中一项任务是检查对象完整性,如果发现对象损坏或已损坏,则会修复它们。
在每次扫描过程中,MinIO 会使用对象的名称哈希值来选择每 1,024 个对象中的一项进行检查。
如果发现任何对象丢失了分片,MinIO 会从可用分片中修复该对象。默认情况下,MinIO 不会使用扫描程序检查 比特腐烂 损坏。此操作可能很昂贵,而且多个磁盘上发生比特腐烂的风险很低。
通过手动请求修复
管理员可以使用 mc admin heal
启动整个系统修复。此过程非常占用资源,通常不需要。
在手动启动部署上的修复过程之前,请咨询 MinIO 工程师。
修复指标
MinIO 提供了多个 修复指标 来监控部署上修复过程的状态。
有关可用端点和配置的更多信息,请参阅 指标和警报。
修复输出颜色键
早期的 MinIO 版本生成了一个包含绿色、黄色、红色和灰色颜色的表格,以指示各个对象的修复状态。这些颜色已被弃用,取而代之的是更详细的 集群级别可用的修复指标。
下表描述了现在已弃用的状态颜色的含义。
绿色 |
健康,该对象具有所有数据和奇偶校验分片,可根据需要提供该对象 |
黄色 |
修复中,该对象仍在修复过程中,并且有足够的数据或奇偶校验分片可完成修复 |
红色 |
不健康,该对象丢失了一个或多个分片,需要修复 |
灰色 |
不可恢复,该对象丢失了太多数据和/或奇偶校验分片,无法修复或恢复 |