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