文档

驱动器故障恢复

MinIO 支持用新的健康驱动器热插拔故障驱动器。MinIO 检测和修复这些驱动器,无需任何节点或部署级别的重启。 MinIO 修复 仅在已替换的驱动器(s) 上执行,并且在大多数情况下对部署性能的影响很小或可以忽略不计。

MinIO 修复确保恢复到驱动器上的所有数据的完整性和正确性。

对驱动器的独占访问

MinIO 需要 对提供用于对象存储的驱动器或卷进行独占 访问。任何其他进程、软件、脚本或人员不应对提供给 MinIO 的驱动器或卷或 MinIO 放置在其上的对象或文件执行任何 直接操作。

除非 MinIO 工程师指示,否则请勿使用脚本或工具直接修改、删除或移动提供驱动器上的任何数据分片、奇偶校验分片或元数据文件,包括从一个驱动器或节点移动到另一个驱动器或节点。此类操作很可能导致广泛的损坏和数据丢失,超出了 MinIO 的修复能力。

以下步骤详细介绍了驱动器替换过程。这些步骤假设 MinIO 部署,其中每个节点使用 /etc/fstab 管理驱动器,每个驱动器都有标签,如 记录的先决条件 所述。

1) 卸载故障驱动器(s)

使用 umount 卸载每个故障驱动器。例如,以下命令卸载位于 /dev/sdb 的驱动器

umount /dev/sdb

2) 替换故障驱动器(s)

从节点硬件中移除故障驱动器(s),并用已知的健康驱动器(s) 替换它们。替换驱动器必须 满足以下要求

  • XFS 格式化 且为空。

  • 相同的驱动器类型(例如 HDD、SSD、NVMe)。

  • 性能相同或更高。

  • 容量相同或更大。

使用容量更大的替换磁盘不会增加总集群存储容量。MinIO 使用**最小**磁盘容量作为所有磁盘在服务器池中的上限。

以下命令将磁盘格式化为 XFS 并为其分配与故障磁盘匹配的标签。

mkfs.xfs /dev/sdb -L DRIVE1

MinIO **强烈建议** 使用基于标签的挂载方式来确保一致的磁盘顺序,并在系统重启后保持一致。

3) 检查和更新 fstab

检查 /etc/fstab 文件并根据需要进行更新,使故障磁盘的条目指向新格式化的替换磁盘。

  • 如果使用基于标签的磁盘分配,请确保每个标签都指向正确的新格式化磁盘。

  • 如果使用基于 UUID 的磁盘分配,请根据新格式化的磁盘更新每个点的 UUID。你可以使用 lsblk 查看磁盘 UUID。

例如,考虑

$ cat /etc/fstab

  # <file system>  <mount point>  <type>  <options>         <dump>  <pass>
  LABEL=DRIVE1     /mnt/drive1    xfs     defaults,noatime  0       2
  LABEL=DRIVE2     /mnt/drive2    xfs     defaults,noatime  0       2
  LABEL=DRIVE3     /mnt/drive3    xfs     defaults,noatime  0       2
  LABEL=DRIVE4     /mnt/drive4    xfs     defaults,noatime  0       2

注意

依赖于挂载外部存储的云环境实例,如果一个或多个远程文件挂载返回错误或失败,可能会遇到启动失败。例如,如果一个或多个 EBS 卷挂载失败,使用挂载持久化 EBS 卷的 AWS ECS 实例可能无法使用标准的 /etc/fstab 配置启动。

你可以设置 nofail 选项来抑制启动时的错误报告,并允许实例在存在一个或多个挂载问题的情况下启动。

你不应该在具有本地连接磁盘的系统上使用此选项,因为抑制磁盘错误会阻止 MinIO 和操作系统以正常方式响应这些错误。

鉴于前面的示例命令,不需要对 fstab 进行任何更改,因为 /mnt/drive1 的替换磁盘使用与故障磁盘相同的标签 DRIVE1

4) 重新挂载替换磁盘

使用 mount -a 重新挂载本过程开始时卸载的磁盘。

mount -a

该命令应该会重新挂载所有替换磁盘。

5) 监控 MinIO 的磁盘检测和修复状态

使用 mc admin logs 命令*或* journalctl -u minio(对于使用 systemd 管理的安装)来监控服务器日志输出,并在重新挂载磁盘后。输出应该包含识别每个已格式化和空磁盘的消息。

使用 mc admin heal 监控部署的整体修复状态。MinIO 会积极修复替换磁盘,以确保从降级状态快速恢复。

6) 下一步

监控集群是否有任何进一步的磁盘故障。一些磁盘批次可能在彼此附近发生故障。部署遇到比预期更高的磁盘故障率,应该安排专门的维护,围绕更换已知的故障批次。考虑使用 MinIO SUBNET 与 MinIO 工程师协调任何此类操作的指导。