文档

驱动器故障恢复

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

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

对驱动器的独占访问

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

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

以下步骤提供了驱动器更换的更详细演练。这些步骤假设一个 MinIO 部署,其中每个节点使用 /etc/fstab 和每个驱动器的标签管理驱动器,如 记录的先决条件 中所述。

1) 卸载故障驱动器

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

umount /dev/sdb

2) 更换故障驱动器

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

  • 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工程协调,以获取任何此类操作的指导。