硬碟故障恢復
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 工程團隊協調,以取得任何此類操作的指導。