这是本节的多页打印视图。 .
硬件故障恢复
分布式 MinIO 部署依赖 纠删码,对多块驱动器或多个节点故障提供内建容错能力。 根据部署拓扑和所选纠删码校验位,MinIO 在保持对象读取访问能力(“read quorum”)的前提下,最多可容忍部署中一半驱动器或节点丢失。
下表列出了 MinIO 部署中的典型故障类型,以及对应的恢复流程链接:
| 故障类型 | 说明 |
|---|---|
| 驱动器故障 | MinIO 支持将故障驱动器热替换为新的健康驱动器。 |
| 节点故障 | MinIO 会检测节点何时重新加入部署,并在其重新并入集群后不久主动开始对该节点执行 自愈,恢复此前存储在该节点上的数据。 |
| 站点故障 | MinIO Site Replication 支持在站点完全丢失后,对存储桶、对象以及可复制的配置项执行完整重同步。 |
由于 MinIO 即使处于降级状态也通常不会出现显著性能损失,管理员可以根据硬件故障速率来安排替换窗口。 “正常”故障率(单个驱动器或节点故障)通常允许采用更从容的替换节奏,而“关键”故障率(多个驱动器或节点故障)则可能需要更快响应。
对于包含一个或多个部分故障或已处于降级状态的驱动器的节点(例如驱动器错误增加、SMART 告警、MinIO 日志中出现超时等),如果集群剩余健康驱动器足以维持 读写仲裁,您可以安全地卸载该驱动器。 相较于持续产生读写错误的驱动器,缺失驱动器对部署的破坏性反而更小。
磁盘独占访问
MinIO 要求 对用于对象存储的磁盘或卷拥有 独占 访问权限。 任何其他进程、软件、脚本或人员都不应直接对提供给 MinIO 的磁盘或卷, 或 MinIO 在其上放置的对象或文件执行 任何 操作。
除非得到 MinIO Engineering 的明确指示,否则不要使用脚本或工具直接修改、 删除或移动这些磁盘上的任何数据分片、校验分片或元数据文件,包括在磁盘或节点 之间迁移这些文件。 这类操作极有可能导致大范围损坏和数据丢失,超出 MinIO 的自愈能力。
MinIO 专业支持
MinIO SUBNET 用户可以 登录 并创建与驱动器、节点或站点故障相关的新 issue。 通过 SUBNET 与 MinIO Engineering 协作,可提升生产 MinIO 部署恢复操作成功率,并获得根因分析与健康诊断支持。
社区用户可以在 MinIO Community Slack 寻求支持。 社区支持仅为尽力而为,不提供响应时间相关 SLA。
1 - 驱动器故障恢复
MinIO 支持将故障驱动器热替换为新的健康驱动器。 MinIO 会检测这些驱动器并对其执行自愈,无需在节点级或部署级执行重启。 MinIO 自愈 仅发生在被替换的驱动器上,大多数情况下对部署性能影响很小或几乎可以忽略。
MinIO 自愈会确保恢复到驱动器上的所有数据保持一致且正确。
磁盘独占访问
MinIO 要求 对用于对象存储的磁盘或卷拥有 独占 访问权限。 任何其他进程、软件、脚本或人员都不应直接对提供给 MinIO 的磁盘或卷, 或 MinIO 在其上放置的对象或文件执行 任何 操作。
除非得到 MinIO Engineering 的明确指示,否则不要使用脚本或工具直接修改、 删除或移动这些磁盘上的任何数据分片、校验分片或元数据文件,包括在磁盘或节点 之间迁移这些文件。 这类操作极有可能导致大范围损坏和数据丢失,超出 MinIO 的自愈能力。
以下步骤提供了更详细的驱动器替换流程。 这些步骤假定你使用的是一个 MinIO 部署,其中每个节点都按照 文档中的前置条件,通过 /etc/fstab 配合逐盘标签来管理驱动器。
1) 卸载故障驱动器
使用 umount 卸载每块故障驱动器。例如,以下命令会卸载位于 /dev/sdb 的驱动器:
2) 替换故障驱动器
从节点硬件中移除故障驱动器,并将其替换为已知健康的驱动器。替换驱动器 必须 满足以下要求:
- 已按 XFS 格式化 且为空。
- 相同的驱动器类型(例如 HDD、SSD、NVMe)。
- 性能相同或更高。
- 容量相同或更大。
使用容量更大的替换驱动器并不会增加集群总存储量。 MinIO 会以 服务器池 中 最小 驱动器的容量,作为该 服务器池 内所有驱动器的上限。
以下命令会将驱动器格式化为 XFS,并为其分配一个与故障驱动器一致的标签。
MinIO 强烈建议 使用基于标签的挂载方式,以确保驱动器顺序在系统重启后仍保持一致。
3) 审查并更新 fstab
检查 /etc/fstab 文件,并按需更新,使故障驱动器对应条目指向新格式化的替换盘。
- 如果使用基于标签的驱动器分配方式,请确保每个标签都指向正确的新格式化驱动器。
- 如果使用基于 UUID 的驱动器分配方式,请根据新格式化驱动器更新每个挂载点对应的 UUID。你可以使用
lsblk查看驱动器 UUID。
例如,考虑以下配置:
说明
依赖挂载外部存储的云环境实例,如果一个或多个远程文件挂载返回错误或失败,可能会遇到启动失败。 例如,挂载持久化 EBS 卷的 AWS ECS 实例,如果一个或多个 EBS 卷挂载失败,可能无法按标准 /etc/fstab 配置正常启动。
你可以设置 nofail 选项,在启动时静默这些错误,并允许实例在存在一个或多个挂载问题时继续启动。
但在使用本地直连磁盘的系统上,不应使用该选项,因为静默驱动器错误会阻止 MinIO 和操作系统以正常方式响应这些错误。
基于前述示例命令,由于 /mnt/drive1 处的替换驱动器与故障驱动器使用相同的 DRIVE1 标签,因此 fstab 无需修改。
4) 重新挂载替换后的驱动器
使用 mount -a 重新挂载本流程开始时卸载的驱动器:
该命令应完成对所有替换驱动器的重新挂载。
5) 监控 MinIO 的驱动器识别与自愈状态
重新挂载驱动器后,使用 mc admin logs 命令 或 在 systemd 管理的安装中使用 journalctl -u minio,监控服务端日志输出。 输出中应包含识别到每块已格式化且为空驱动器的消息。
使用 mc admin heal 监控部署整体的 自愈 状态。 MinIO 会积极地对替换驱动器执行自愈,以确保部署快速从降级状态恢复。
6) 后续步骤
继续监控集群中是否出现更多驱动器故障。某些批次的驱动器可能会在接近的时间窗口内集中失效。 若部署中的驱动器故障率高于预期,应安排专项维护,集中替换已知存在问题的驱动器批次。 可考虑使用 MinIO SUBNET,与 MinIO Engineering 协作获取此类操作的指导。
2 - 节点故障恢复
如果某个 MinIO 节点发生完全硬件故障(例如所有驱动器、数据等全部丢失),则该节点在重新加入部署后会开始执行 自愈操作。 MinIO 自愈仅发生在被替换的硬件上,通常不会影响部署性能。
MinIO 自愈会确保恢复到驱动器上的所有数据保持一致且正确。
磁盘独占访问
MinIO 要求 对用于对象存储的磁盘或卷拥有 独占 访问权限。 任何其他进程、软件、脚本或人员都不应直接对提供给 MinIO 的磁盘或卷, 或 MinIO 在其上放置的对象或文件执行 任何 操作。
除非得到 MinIO Engineering 的明确指示,否则不要使用脚本或工具直接修改、 删除或移动这些磁盘上的任何数据分片、校验分片或元数据文件,包括在磁盘或节点 之间迁移这些文件。 这类操作极有可能导致大范围损坏和数据丢失,超出 MinIO 的自愈能力。
替换节点的硬件应与故障节点大体相近。 使用更好的硬件不会带来负面性能影响。
替换驱动器的硬件也应与故障驱动器大体相近。 例如,应使用相同容量的另一块 SSD 来替换故障 SSD。 虽然你可以使用容量更大的驱动器,但 MinIO 会以 服务器池 中 最小 驱动器的容量,作为该 pool 内所有驱动器的上限。
以下步骤提供了更详细的节点替换流程。 这些步骤假定你使用的是一个 MinIO 部署,其中每个节点都按照 文档中的前置条件 配置了 DNS 主机名。
1) 启动替换节点
请确保新节点已经按照行业、监管或组织内部标准与要求,完成所有必要的安全、固件和操作系统更新。
新节点的软件配置 必须 与部署中其他节点保持一致,包括但不限于操作系统和内核版本及其配置。 异构软件配置可能导致部署中出现意料之外或不期望的行为。
2) 更新新节点的主机名解析
可选 仅当替换节点的 IP 地址与故障主机不同时时,才需要执行此步骤。
确保原先关联到故障节点的主机名现在解析到新节点。
例如,如果 https://minio-1.example.net 之前解析到故障主机,那么它现在应解析到新主机。
3) 下载并准备 MinIO Server
按照 部署流程 下载并运行 MinIO server,并使用与部署中其他节点一致的配置。
- 所有节点上的 MinIO server 版本 必须 一致
- 所有节点上的 MinIO service 与 environment file 配置 必须 一致
4) 将节点重新加入部署
在该节点上启动 MinIO server 进程,并使用 mc admin logs 监控其输出;如果是 systemd 管理的安装,则可以使用 journalctl -u minio 监控 MinIO service 日志。
服务端输出应表明它已经检测到部署中的其他节点,并开始执行 自愈操作。
使用 mc admin heal 监控部署整体的自愈状态。 MinIO 会积极地对该节点执行自愈,以确保部署快速从降级状态恢复。
5) 后续步骤
继续监控部署,直到自愈完成。 如果部署持续或反复出现节点故障,应安排专项维护以定位根因。 可考虑使用 MinIO SUBNET,与 MinIO Engineering 协作获取此类操作的指导。
3 - 站点故障恢复
尽管整个站点丢失属于重大事故,MinIO 仍可将其影响控制在相对较小且可恢复的范围内。 站点恢复方式取决于该站点使用的复制方案。
Site Replication |
从健康对等站点完整恢复 IAM 配置、存储桶配置和数据 |
Bucket Replication |
对每个已配置复制的存储桶,从健康远端位置恢复对象和元数据 |
仅从健康远端位置恢复对象数据,不包含版本控制信息 |
站点复制自愈会自动将现有站点中的 IAM 设置、存储桶、存储桶配置和对象添加到新站点,无需额外操作。
如果其他健康站点上仍保留任何存储桶复制规则,则无法配置站点复制。 存储桶复制与站点复制互斥。
如果你准备从存储桶复制切换到站点复制,则必须先在健康站点上移除所有存储桶复制规则,然后再配置站点复制。
将不健康对等站点恢复到 Site Replication
重要
RELEASE.2023-01-02T09-40-09Z 版 MinIO server 包含重要修复,用于在包含三个或更多对等站点的复制配置中移除已下线站点。
对于已配置站点复制的部署,请规划将所有对等站点 测试并升级 到该版本。 一旦发生站点故障,你可以先将剩余健康站点更新到该指定版本,再执行本流程。
站点复制 可让两个或更多 MinIO 部署在 IAM 策略、存储桶、存储桶配置、对象及对象元数据方面保持同步。 如果某个对等站点由于重大灾害或长期停电等原因失效,你可以使用剩余健康站点来恢复 可复制数据。
以下流程适用于站点丢失前已启用 站点复制 的场景,并可用于恢复数据。 本流程假设一个或多个对等站点已 完全丢失,而不是由于复制滞后、网络延迟或部署短暂停机所导致的延后。
-
使用带
--force选项的mc admin replicate rm命令,将故障站点从 MinIO 站点复制配置中移除。以下命令会强制将一个不健康的对等站点从复制配置中移除:
- 将
HEALTHY_PEER替换为复制配置中任一健康对等站点的 alias - 将
UNHEALTHY_PEER替换为不健康对等站点的 alias
站点复制配置中的所有健康对等站点都会自动更新并移除该不健康对等站点。 你可以使用
mc admin replicate info命令验证新的站点复制配置。 - 将
-
按照 站点复制要求 部署一个新的 MinIO 站点。
- 不要上传任何数据,也不要在既定要求之外对部署进行其他配置。
- 验证新的 MinIO 部署运行正常,并且与其他对等站点具备双向连通性。
- 确保新站点与现有对等站点使用相同的 server 版本
注意警告
mc admin replicate rm --force命令只会作用于站点复制配置中在线或健康的节点。 被移除的离线 MinIO 部署仍会保留其原始复制配置,因此如果该部署恢复正常运行,它仍会继续向已配置的对等站点执行复制操作。如果你计划复用这些硬件重新加入站点复制配置,那么在重新初始化 MinIO 并将该站点重新加入复制配置之前,必须彻底清空该部署的驱动器。
-
将 替换后的对等站点加入 复制配置。
使用
mc admin replicate add命令,将新站点加入复制配置:- 将
HEALTHY_PEER替换为复制配置中任一健康对等站点的 alias - 将
NEW_PEER替换为新对等站点的 alias
站点复制配置中的所有健康对等站点都会自动更新,将新对等站点纳入配置。 你可以使用
mc admin replicate info命令验证新的站点复制配置。 - 将
-
使用
mc admin replicate resync对新对等站点执行重同步。- 将
HEALTHY_PEER替换为复制配置中任一健康对等站点的 alias - 将
NEW_PEER替换为新对等站点的 alias
- 将
-
验证复制状态。
使用以下命令跟踪复制状态:
mc admin replicate status- 提供复制的整体状态和进度mc replicate status- 提供存储桶级和全局复制状态
主动式存储桶复制重同步
对于故障发生前已启用 存储桶复制 的场景,你可以使用 mc replicate resync 将数据恢复到新站点。 先创建一个新站点替换故障部署,然后将现有健康、且已启用存储桶复制的部署中的数据同步到新站点。
- 部署一个新的 MinIO 站点。
- 按需配置 IAM 和用户。
- 在有数据的站点上,使用
mc admin bucket remote add命令创建新的remote target,并记录输出中的 ARN。 - 在有数据的站点上,使用上一步命令返回的 ARN 作为参数执行
mc replicate resync start,在新站点上重建存储桶。 - 等待重同步完成(可使用
mc replicate resync status检查)。 - 从新的 MinIO 站点向现有目标存储桶配置存储桶复制规则。
- (Optional) 删除目标部署中的存储桶复制规则,以恢复 active-passive 复制场景。
被动式存储桶复制重同步
存储桶复制 可以通过将目标存储桶中的数据复制到新的 MinIO 站点,直接恢复站点内容。
作为被动过程,存储桶复制在站点恢复场景中可能无法达到理想的恢复速度。
存储桶复制依赖标准复制 scanner 队列,而该队列不会优先于其他过程执行。 如果恢复流程对 SLA/SLO 要求更严格,请按前文所述使用基于 mc replicate resync 命令的主动式存储桶复制流程。
存储桶复制规则会将对象、其 version ID、版本以及其他元数据复制到目标存储桶。 如果站点丢失前已启用存储桶复制,那么 MinIO 可以将带有这些属性的对象恢复到新的 MinIO 站点。
-
部署一个新的 MinIO 站点。
-
按需配置 IAM 和用户。
-
在剩余的目标存储桶部署上,为每个存储桶创建指向新 MinIO 站点的存储桶复制规则。
-
等待复制完成。
-
从新的 MinIO 站点向现有目标存储桶配置存储桶复制规则。
-
(Optional) 删除目标部署中的存储桶复制规则,以恢复 active-passive 复制场景。
如果你希望继续保持存储桶之间的 active-active 复制,请不要删除用于恢复数据的这些部署中的存储桶复制规则。 在 active-active 复制中,任一位置上对象的变更都会影响另一位置上的对象。
镜像
MinIO 的镜像(mirroring)可以从任意兼容 S3 的存储系统复制对象。
无论源端如何,镜像(mirroring)只会复制每个对象的最新版本,不包含版本控制元数据。 因此你无法通过这种方式恢复这些属性。
当你只需要恢复对象的最新版本时,请使用 mc mirror。 如果你是从另一个 MinIO 部署复制数据,并希望恢复对象的版本历史及版本元数据,则应在这些机制原本已启用的前提下使用存储桶复制或站点复制。
- 部署一个新的 MinIO 站点。
- 按需配置 IAM 和用户。
- 在新站点上创建存储桶。
- 使用
mc cpCLI 命令,将镜像位置中的内容复制到新的 MinIO 站点。