对象修复
什么是修复?
修复是 MinIO 恢复已损坏、已破坏或部分丢失对象的能力。这种丢失可能来自多种类型的损坏或丢失,例如但不限于:
驱动器级别的错误或故障
操作系统或文件系统的错误或故障
修复和纠删码
MinIO 恢复受损对象的能力直接与以下因素相关:
对象所在的纠删集中的驱动器总数
拥有完好对象分片的可用驱动器数量
纠删集的奇偶校验设置
奇偶校验指的是 MinIO 在写入对象时创建的专用恢复分片数量。例如,一个纠删集可能有八个总驱动器,并在写入时使用三个驱动器进行奇偶校验。在这种情况下,MinIO 将一个对象分成 5 个数据分片并创建 3 个奇偶校验分片。MinIO 将这八个分片分布在纠删集中的驱动器上。没有一个驱动器只包含奇偶校验分片或只包含数据分片。相反,MinIO 以随机方式写入每个对象的分片,以均匀地分布读取负载到各个驱动器。
当 MinIO 需要提供对象时,它会查找该对象的数据分片。如果任何数据分片丢失或损坏,MinIO 将使用一个或多个奇偶校验分片来恢复该对象。在寻找奇偶校验分片时,如果任何奇偶校验分片丢失或损坏,只要有足够的其他分片来提供该对象,MinIO 也会恢复这些奇偶校验分片。对于这种情况,最多可以有三个数据分片丢失或损坏,而 MinIO 仍然可以成功恢复并提供该对象。
拥有完好数据或奇偶校验分片的可用驱动器数量必须达到或超过纠删集中用于数据分片的驱动器数量。在上述情况下,必须有五个带有完好分片的驱动器在线且可用,MinIO 才能成功提供该对象。
MinIO 何时修复对象?
MinIO 拥有一个强大的对象修复系统。
在 GET 请求期间修复
每次您通过 GET 或 HEAD 操作请求一个对象时,MinIO 都会自动检查该对象数据分片的一致性。对于启用了版本控制的存储桶,MinIO 也会在 PUT 操作期间进行检查。
如果所有数据分片都被发现是完好的,MinIO 将从数据分片提供对象,而不会检查相应的奇偶校验分片。
如果对象有丢失或损坏的数据分片,MinIO 会使用可用的奇偶校验分片来修复对象,然后作为操作的一部分来提供它。对于每个丢失或损坏的数据分片,必须有一个完好的奇偶校验分片可用,否则对象无法恢复。如果任何奇偶校验分片丢失或损坏,只要有足够的其他奇偶校验分片来提供该对象,MinIO 就会恢复该奇偶校验分片。
使用对象扫描器进行修复
MinIO 使用对象扫描器来执行与对象相关的多项任务。其中一项任务是检查对象的完整性,如果发现损坏或破坏,则对其进行修复。
在每次扫描过程中,MinIO 使用对象名称的哈希值来从每 1024 个对象中选择一个进行检查。
如果发现任何对象有丢失的分片,MinIO 会从可用的分片中修复该对象。默认情况下,MinIO 不会使用扫描器检查位衰减损坏。这可能是一项昂贵的操作,并且跨多个磁盘发生位衰减的风险很低。
通过手动请求进行修复
管理员可以使用 mc admin heal 来启动全系统修复。该过程非常消耗资源,通常不需要。
在部署上手动启动修复过程之前,请咨询 MinIO 工程师。
修复指标
MinIO 提供了多个修复指标,用于监控部署上修复过程的状态。
有关可用端点和配置的更多信息,请参阅指标和警报。