文件

硬碟故障復原

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 和作業系統以正常方式回應這些錯誤。

鑑於先前的範例命令,由於 /mnt/drive1 的替換硬碟使用與故障硬碟相同的標籤 DRIVE1,因此不需要對 fstab 進行任何變更。

4) 重新掛載已更換的硬碟

使用 mount -a 重新掛載在此程序開始時卸載的硬碟

mount -a

此命令應該會導致重新掛載所有已更換的硬碟。

5) 監控 MinIO 的硬碟偵測和修復狀態

使用 mc admin logs 命令 journalctl -u minio,適用於 systemd 管理的安裝,以監控重新掛載硬碟後的伺服器記錄輸出。輸出應包含識別每個已格式化且為空的硬碟的訊息。

使用 mc admin heal 來監控部署的整體 修復 狀態。MinIO 會積極修復已更換的硬碟,以確保從降級狀態快速恢復。

6) 後續步驟

監控叢集是否有進一步的硬碟故障。某些批次的硬碟可能會在彼此非常接近的情況下發生故障。如果部署看到高於預期的硬碟故障率,應安排專門的維護,以更換已知有問題的批次。考慮使用 MinIO SUBNET,以便與 MinIO 工程團隊協調,取得任何此類操作的指導。