可用性和弹性
此页面从生产的角度概述了 MinIO 的可用性和弹性设计以及功能。
注意
此页面内容旨在作为了解 MinIO 预期设计和可用性及弹性背后理念的尽力而为的指南。它不能替代 MinIO SUBNET 的功能,后者允许在计划 MinIO 部署时与 MinIO 工程团队协调。
社区用户可以在 MinIO 社区 Slack 上寻求支持。社区支持仅以尽力而为的方式提供,并且没有关于响应时间的 SLA。
分布式 MinIO 部署
- MinIO 将 擦除编码 作为核心组件来提供在驱动器或节点级故障事件期间的可用性和弹性。
- MinIO 使用确定性算法为给定对象选择擦除集。
对于每个唯一的对象命名空间
BUCKET/PREFIX/[PREFIX/...]/OBJECT.EXTENSION
,MinIO 始终为读/写操作选择相同的擦除集。这包括该同一对象的全部 版本。- MinIO 需要 读和写仲裁 才能对擦除集执行读和写操作。
仲裁取决于部署配置的奇偶校验。读取仲裁始终等于配置的奇偶校验,这样 MinIO 就可以对任何未丢失超过奇偶校验数量驱动器的擦除集执行读取操作。
使用默认奇偶校验
EC:4
,部署可以容忍每个擦除集中丢失 4(四个)个驱动器,并且仍然可以提供读取操作。- 写入仲裁取决于配置的奇偶校验和擦除集的大小。
如果奇偶校验小于擦除集驱动器数量的 1/2(一半),则写入仲裁等于奇偶校验,并且功能类似于读取仲裁。
MinIO 会自动增加写入降级擦除集的对象的奇偶校验,以确保对象可以满足与健康擦除集中的对象相同的 SLA。奇偶校验升级行为提供了额外的风险缓解层,但不能替代修复或更换损坏驱动器以使擦除集恢复到完全健康状态的长期解决方案。
使用默认奇偶校验
EC:4
,部署可以容忍每个擦除集丢失 4 个驱动器,并且仍然可以提供写入操作。- 如果奇偶校验等于擦除集驱动器数量的 1/2(一半),则写入仲裁等于奇偶校验 + 1(一),以避免由于“脑裂”场景导致的数据不一致。
例如,如果由于网络故障导致擦除集中的正好一半驱动器被隔离,MinIO 将认为仲裁丢失,因为它无法为写入操作建立一个 N+1 个驱动器的组。
- 永久丢失的驱动器数量超过配置的奇偶校验的擦除集已发生数据丢失。
对于最大奇偶校验配置,如果驱动器丢失数量等于奇偶校验,则擦除集将进入“只读”模式。对于 16 的最大擦除集大小和 8 的最大奇偶校验,这将需要丢失 9 个驱动器才能发生数据丢失。
瞬态或临时驱动器故障(例如由于存储控制器或连接硬件故障)可能会恢复到擦除集中的正常运行状态。
- MinIO 通过在池中的每个节点上对称地“条带化”擦除集驱动器来进一步降低擦除集故障的风险。
MinIO 会根据节点和驱动器的数量自动计算最佳擦除集大小,其中最大集大小为 16(十六)。然后,它为每个擦除集选择每个节点上的一个驱动器,跨越整个池,如果擦除集条带大小大于节点数量,则循环遍历。这种拓扑结构提供了对单个节点甚至该节点上的存储控制器的丢失的弹性。
在上述拓扑结构中,池有 8 个包含 16 个驱动器的擦除集,跨 16 个节点进行条带化。每个节点将为每个擦除集分配一个驱动器。虽然丢失一个节点在技术上会导致 8 个驱动器丢失,但每个擦除集只会丢失一个驱动器。这即使在节点停机的情况下也能保持仲裁。
- 每个擦除集独立于同一池中的所有其他擦除集。
如果一个擦除集完全降级,MinIO 仍然可以在其他擦除集上执行读/写操作。
但是,丢失的数据仍然可能影响依赖于 100% 数据可用性假设的工作负载。此外,每个擦除集都完全独立于其他擦除集,因此您无法使用其他擦除集将数据恢复到完全降级的擦除集。您必须使用 站点 或 存储桶 复制来创建支持 BC/DR 的远程部署以恢复丢失的数据。
- 对于多池 MinIO 部署,每个池都需要至少一个保持读/写仲裁的擦除集才能继续执行操作。
如果一个池丢失所有擦除集,MinIO 将无法再确定给定的读/写操作是否已路由到该池。因此,即使其他池仍在运行,MinIO 也会停止对部署的所有 I/O。
要恢复对部署的访问,管理员必须将池恢复到正常操作。根据故障的严重程度,这可能需要格式化磁盘、更换硬件或更换节点。有关更完整的文档,请参阅 硬件故障后的恢复。
使用复制的远程端将丢失的数据恢复到部署中。存储在健康池中的所有数据都安全地保存在磁盘上。
驱动器的独占访问
MinIO **需要** 对提供用于对象存储的驱动器或卷进行独占访问。任何其他进程、软件、脚本或人员都不应直接对提供给 MinIO 的驱动器或卷或 MinIO 在其上放置的对象或文件执行任何操作。
除非 MinIO 工程师指示,否则请勿使用脚本或工具直接修改、删除或移动提供的驱动器上的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点到另一个驱动器或节点。此类操作很可能导致广泛的损坏和数据丢失,超出 MinIO 的修复能力。
复制的 MinIO 部署
- MinIO 将 站点复制 作为确保在 MinIO 部署中发生大规模和小规模数据丢失时业务连续性和灾难恢复 (BC/DR) 的主要措施。
- MinIO 复制可以自动 修复 由于瞬态或持续停机导致部分或全部数据丢失的站点。
-
所有数据同步后,您可以恢复该站点的正常连接。根据复制延迟、站点之间的延迟和整体工作负载 I/O,您可能需要暂时停止写入操作,以使站点完全赶上。
如果对等站点完全失败,您可以完全从配置中删除该站点。负载均衡器配置也应删除该站点,以避免将客户端请求路由到离线站点。
然后,您可以通过 将其添加回站点复制配置 恢复对等站点,无论是修复原始硬件还是完全更换它。MinIO 会自动开始重新同步现有数据,同时持续复制新数据。
- 站点可以通过将
GET/HEAD
请求代理到健康的对等站点来继续处理操作 -
客户端从第一个返回请求对象的任何版本的对等站点接收结果。
PUT
和DELETE
操作使用常规复制过程进行同步。LIST
操作不进行代理,并且要求客户端专门针对健康的对等方发出这些操作。