MinIO線上故障演練

帶你聊技術發表於2023-04-24


得益於糾刪碼演算法,分散式MinIO叢集為多個驅動器或節點故障提供內建容錯能力。根據選擇的EC:N值,MinIO叢集可以容忍多達一半的驅動器或節點丟失並任然提供可寫可讀服務。

下表列出了MinIO部署中的典型故障型別,以及從每種故障中恢復的過程。

故障型別說明
Drive Failure(驅動器故障 )MinIO支援熱插拔的方式替換故障的驅動器
Node Failure(節點故障)當新的節點重新加入到叢集后,MinIO會重新開始修復該節點,原先儲存在該機器上的資料會重新儲存在該節點上。
Site Failure(叢集級故障)MinIO 叢集複製功能,支援bucket、物件、配置項的重新同步。

由於MinIO可以在沒有顯著效能損失的情況下降級執行,管理員可以根據硬體故障的比例安排硬體更換。“正常”故障率(單個驅動器或節點故障)可能允許更合理的更換時間範圍,而“關鍵”故障率(多個驅動器或節點)可能需要更快的響應。

如果驅動器發生故障,只要損壞的磁碟數量低於叢集的一半,可以線上直接更換驅動器,而不影響讀寫。

本文主要介紹前兩種。

1、驅動器故障恢復

1.1 官方文件

MinIO支援用新的磁碟更換損壞的磁碟,而不需要重啟任何MinIO節點。MinIO確保資料的一致性和正確性。不要試圖手動恢復或將資料從故障驅動器遷移到新的健康驅動器。

接下來將分佈介紹如何實現MinIO恢復磁碟。

Step1:解除安裝故障的磁碟

可以使用umount解除安裝失敗的驅動器,例如我們要解除安裝/dev/sdb磁碟,命令如下:

umount /dev/sdb

Step2:替換失敗的驅動器

更換驅動器必須滿足如下要求:

  • 格式化磁碟並且磁碟資料為空,一定要求檔案格式為XFS?
  • 相同的硬碟型別(如HDD、SSD、NVMe)。
  • 同等或更高的效能。
  • 相等或更大的容量。

注意:使用容量更大的替換驅動器不會增加叢集的總儲存空間。MinIO使用最小驅動器的容量作為伺服器池中所有驅動器的上限。

下面的命令將驅動器格式化,並分配一個標籤永遠匹配失敗的驅動器:

#格式化磁碟為xfs
mkfs.xfs /dev/sdb -L DRIVE1
#格式化磁碟為ext4
mkfs.ext4 /dev/sdb -L DRIVE1 

MinIO強烈建議使用基於標籤的掛載,以確保在系統重新啟動時仍然保持一致的驅動器順序。

Step3:檢查和更新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

根據前面的示例命令,不需要對fstab進行更改,因為/mnt/drive1處的替換驅動器使用了與故障驅動器相同的drive1標籤。

Step4:重新載入磁碟

使用 mount -a 命令載入/etc/fstab中定義的所有磁碟。

mount -a

Step5:監控MinIO驅動器檢測和修復

執行完mount -a後,MinIO叢集會自行開始恢復。

使用mc管理控制檯命令或journalctl -u minio監視重新掛載驅動器後的伺服器日誌輸出。輸出應該包括標識每個格式化驅動器和空驅動器的訊息。

使用mc admin heal來監控部署中的整體修復狀態。MinIO積極地修復替換的驅動器,以確保從降級狀態中快速恢復。

1.2 上機實踐

本次實驗的MinIO叢集為1NMD,叢集的統計資訊如下:

MinIO線上故障演練

透過解除安裝/dev/sdb,即第一塊磁碟來模擬第一塊磁碟故障。

執行解除安裝磁碟命令:

[root@localhost ~]# umount /data1
[root@localhost ~]# df -h
檔案系統                 容量  已用  可用 已用% 掛載點
devtmpfs                 1.9G     0  1.9G    0% /dev
tmpfs                    1.9G     0  1.9G    0% /dev/shm
tmpfs                    1.9G  8.6M  1.9G    1% /run
tmpfs                    1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root   46G  1.6G   44G    4% /
/dev/sda1               1014M  151M  864M   15% /boot
tmpfs                    379M     0  379M    0% /run/user/0
/dev/sdc                 9.8G   38M  9.2G    1% /data2
/dev/sdd                 9.8G   38M  9.2G    1% /data3
/dev/sde                 9.8G   38M  9.2G    1% /data4

執行完後,叢集的監控資訊如下所示,線上磁碟驅動器由4變為3。

MinIO線上故障演練

在嘗試進行驅動器修復之前,我們先來驗證一下檔案上傳可以正常上傳下載。

檔案下載驗證:透過。如下圖所示:

MinIO線上故障演練

檔案上傳驗證:透過,如下圖所示:

MinIO線上故障演練

2、節點故障恢復

MinIO同樣支援節點級資料恢復,也就是說一個節點上所有的磁碟損壞或資料丟失,只要滿足EC:N的資料恢復要求,資料一樣可以被自動修復。

具體的做法是跟換一臺新的主機,或者是原先主機上重新放置新的磁碟(如果是磁碟損壞),然後重新安裝部署一個MinIO即可,其配置與原先節點所在的Server Pool中其他節點保持一致。

如果是更換的主機,請記得使用原先節點的hostname,確保正確的路由即可。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2948244/,如需轉載,請註明出處,否則將追究法律責任。

相關文章