文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

部署架构

本页从生产环境角度概述了 MinIO 部署架构。 有关特定硬件或软件配置的信息,请参阅:

分布式 MinIO 部署

一个生产环境的MinIO部署至少需要4个MinIO主机,这些主机应具有同构的存储和计算资源。

MinIO 将这些资源聚合在一起作为水池并呈现为单一的对象存储服务。

4 Node MinIO deployment with homogeneous storage and compute resources

此池中的每个 MinIO 主机都具有匹配的计算、存储和网络配置

MinIO在使用本地附加存储时提供最佳性能,例如连接到主机PCI-E控制器板上的NVMe或SSD驱动器。

存储控制器应将XFS格式的驱动器配置为"简单磁盘捆绑"(JBOD)模式,不使用RAID、池化或其他硬件/软件弹性层。 MinIO不建议在驱动器或控制器层进行任何缓存。 任何类型的缓存都可能导致I/O缓存填充和清空时出现性能峰值,导致性能不可预测。

MinIO Server diagram of Direct-Attached Storage via SAS to a PCI-E Storage Controller

每个SSD都通过SAS连接到以HBA模式运行的PCI-E附加存储控制器

MinIO 自动将存储池中的驱动器分组为擦除集.

Erasure sets 是 MinIO 的基础组件可用性与弹性MinIO 在存储池中的节点间对称分布纠删码集,以保持纠删码集驱动器的均匀分布。 MinIO 随后根据部署配置将对象分割为数据分片和校验分片。奇偶性并将其分布在一个擦除集中。

有关 MinIO 冗余和修复的更完整讨论,请参阅擦除编码对象修复.

Diagram of object being sharded into eight data and eight parity blocks, distributed across sixteen drives

以最大奇偶校验的EC:8MinIO 将对象分片为 8 个数据块和 8 个奇偶校验块,并将它们分布在纠删码集中的各个驱动器上。 此池中的所有纠删码集都具有相同的条带大小和分片分布。

MinIO使用基于对象名称和路径的确定性哈希算法来选择给定对象的纠删码集。

对于每个唯一的对象命名空间BUCKET/PREFIX/[PREFIX/...]/OBJECT.EXTENSIONMinIO 始终为读写操作选择相同的纠删码集。 MinIO 在存储池和纠删码集内部处理所有路由,使得选择/读取/写入过程对应用程序完全透明。

Diagram of object retrieval from only data shards

MinIO 在将对象返回给请求客户端之前,会透明地从数据或奇偶校验分片中重建对象。

每个 MinIO 服务器都拥有分布式拓扑的完整视图,因此应用程序可以连接部署中的任何节点并直接执行操作。

MinIO响应节点会自动处理将内部请求路由到部署中的其他节点将最终响应返回给客户端。

应用程序通常不应管理这些连接,因为部署拓扑的任何更改都需要更新应用程序。 生产环境应改为部署负载均衡器或类似的网络控制平面组件来管理与MinIO部署的连接。 例如,您可以部署NGINX负载均衡器来对部署中的可用节点执行"最少连接"或"轮询"负载均衡。

Diagram of an eight node MinIO deployment behind a load balancer

负载均衡器将请求路由到部署中的任意节点。 接收节点随后处理所有节点间的请求。

您可以通过以下方式扩展 MinIO 部署的可用存储空间池扩展.

每个存储池由一组独立的节点组成,这些节点拥有各自的纠删码集。 MinIO 必须查询每个存储池以确定其用于读写操作的正确纠删码集,因此每增加一个存储池都会导致每次调用产生更多的节点间流量。 包含正确纠删码集的存储池随后会响应该操作,整个过程对应用程序完全透明。

如果您通过池扩展修改MinIO拓扑,可以通过修改负载均衡器以包含新池的节点来更新应用程序。 应用程序可以继续使用MinIO部署的负载均衡器地址,无需任何更新或修改。 这确保了请求在所有池之间的均匀分布,同时应用程序继续使用单个负载均衡器URL进行MinIO操作。

Diagram of a multi-pool minio deployment behind a load balancer

PUT请求需要检查每个池以确定正确的纠删码集合。 一旦识别完成,MinIO会对对象进行分区,并将数据和奇偶校验分片分布到相应的集合中。

客户端应用程序可以使用任何与S3兼容的SDK或库来与MinIO部署进行交互。

MinIO 发布自己的SDK专门用于与S3兼容的部署环境。

Diagram of multiple S3-compatible clients using SDKs to connect to MinIO

使用各种S3兼容SDK的客户端可以对同一个MinIO部署执行操作。

MinIO 严格实现了 S3 API,包括要求客户端使用 AWS 签名所有操作Signature V4对于传统的Signature V2。 AWS签名计算使用客户端提供的标头,因此负载均衡器、代理、安全程序或其他组件对这些标头的任何修改都将导致签名不匹配错误和请求失败。 请确保所有此类中间组件支持将未经修改的标头从客户端传递到服务器。

虽然 S3 API 使用诸如GETPOST对于所有操作,应用程序通常使用SDK来执行S3操作。 特别是签名计算的复杂性通常使得通过curl或类似的 REST 客户端不切实际。 MinIO 推荐使用 S3 兼容的 SDK 或库,这些工具会在执行操作时自动完成签名计算。

Replicated MinIO Deployments

MinIO站点复制为同步不同的独立部署提供支持。

您可以将对等站点部署在不同的机架、数据中心或地理区域,以支持以下功能:业务连续性/灾难恢复在全局分布式 MinIO 对象存储中实现地理本地读写性能。

Diagram of a multi-site deployment with three MinIO peer site

一个包含三个对等节点的MinIO多站点部署。 在一个对等节点上的写入操作会自动复制到配置中的所有其他对等节点。

复制性能主要取决于各对等站点之间的网络延迟。

在地理分布的多个对等站点之间,站点间的高延迟可能导致显著的复制延迟。 当工作负载接近或达到部署整体性能容量时,这种情况会进一步加剧,因为复制过程本身需要充足的可用I/O同步对象。

Diagram of a multi-site deployment with latency between sites

在此对等配置中,站点A与其对等站点之间的延迟为100毫秒。 对象完全同步到所有站点的最短时间至少为110毫秒。

部署支持站点间故障切换协议的全局负载均衡器或类似网络设备对于多站点部署的功能至关重要。

负载均衡器应支持健康探测/检查设置,以便检测到某个站点故障时,能自动将应用程序重定向到其他健康的对等节点。

Diagram of a site replication deployment with two sites

负载均衡器使用配置的逻辑(地理位置、延迟等)自动路由客户端请求。 写入一个站点的数据会自动复制到另一个对等站点。

负载均衡器在连接平衡和头部保持方面应满足与单站点部署相同的要求。 MinIO 复制通过将对象加入复制队列来处理瞬时故障。