硬體檢查清單
在規劃生產、分散式 MinIO 部署的硬體配置時,請使用以下檢查清單。
考量事項
在為您的 MinIO 實作選擇硬體時,請考慮以下因素
啟動時要儲存的資料預期量(以 TiB 為單位)
至少未來兩年資料大小的預期成長
按平均物件大小劃分的物件數量
資料的平均保留時間(以年為單位)
要部署的站點數量
預期的儲存區數量
生產硬體建議
以下檢查清單遵循 MinIO 生產部署的建議配置。提供的指南旨在作為基準,不能取代MinIO SUBNET效能診斷、架構檢閱和直接工程支援。
MinIO 與任何分散式系統一樣,受益於為給定伺服器池中的所有節點選擇相同的配置。確保整個池節點在硬體(CPU、記憶體、主機板、儲存適配器)和軟體(作業系統、核心設定、系統服務)上保持一致的選擇。
如果節點的硬體或軟體配置不同,部署可能會表現出無法預測的效能。受益於將過期資料儲存在較低成本硬體上的工作負載應改為部署專用的「溫」或「冷」MinIO 部署,並將資料轉換到該層。
MinIO 不提供託管服務或硬體銷售
請參閱我們的參考硬體頁面,了解我們硬體合作夥伴提供的精選伺服器和儲存元件。
描述 |
最低 |
建議 |
|
---|---|---|---|
專用的裸機或虛擬主機(「主機」)。 |
4 個專用主機 |
8 個以上專用主機 |
|
每個 MinIO 伺服器 4 個磁碟機 |
每個 MinIO 伺服器 8 個以上磁碟機 |
||
25GbE |
100GbE |
||
支援現代 SIMD 指令 (AVX-512) 的伺服器級 CPU,例如 Intel® Xeon® Scalable 或更高版本。 |
每個主機 8 個 CPU/插槽或 vCPU |
每個主機 16 個以上 CPU/插槽或 vCPU |
|
可用記憶體,以滿足或超過每個伺服器的使用量並提供合理的緩衝區。 |
每個主機 32GB 可用記憶體 |
每個主機 128GB 以上可用記憶體 |
重要
以下區域對 MinIO 效能的影響最大,依重要性順序列出
網路基礎架構 |
吞吐量不足或有限會限制效能 |
---|---|
儲存控制器 |
舊版韌體、有限的吞吐量或故障的硬體會限制效能並影響可靠性 |
儲存裝置 (磁碟機) |
舊版韌體或速度慢/老化/故障的硬體會限制效能並影響可靠性 |
在關注其他硬體資源 (例如運算相關的限制) 之前,請優先確保這些領域所需的必要組件。
上述最低建議反映了 MinIO 在協助企業客戶在各種 IT 基礎架構上部署,同時維持所需的 SLA/SLO 時的經驗。雖然 MinIO 可能在低於最低建議拓撲的情況下執行,但任何潛在的成本節省都會以降低可靠性、效能或整體功能為代價。
網路
MinIO 建議使用高速網路以支援附加儲存裝置 (彙總磁碟機、儲存控制器和 PCIe 匯流排) 的最大可能吞吐量。下表提供了特定實體或虛擬網路介面所支援的最大儲存吞吐量的一般準則。此表格假設所有網路基礎架構組件 (例如路由器、交換器和實體纜線) 也支援 NIC 頻寬。
NIC 頻寬 (Gbps) |
估計的彙總儲存吞吐量 (GBps) |
10Gbps |
1.25GBps |
25Gbps |
3.125GBps |
50Gbps |
6.25GBps |
100Gbps |
12.5GBps |
網路對 MinIO 效能的影響最大,其中每個主機的低頻寬會人為地限制儲存裝置的潛在效能。以下網路吞吐量限制的範例假設旋轉磁碟的持續 I/O 約為 100MB/S
1GbE 網路連結最多可支援 125MB/s,或是一個旋轉磁碟
10GbE 網路大約可支援 1.25GB/s,可能支援 10-12 個旋轉磁碟
25GbE 網路大約可支援 3.125GB/s,可能支援約 30 個旋轉磁碟
記憶體
記憶體主要限制每個節點的並行連線數量。
您可以使用此公式計算每個節點的最大並行請求數
\(totalRam / ramPerRequest\)
若要計算每個請求使用的 RAM 量,請使用此公式
\(((2MiB + 128KiB) * driveCount) + (2 * 10MiB) + (2 * 1 MiB)\)
10MiB 是預設的抹除區塊大小 v1。1 MiB 是預設的抹除區塊大小 v2。
下表列出基於主機磁碟機數量和可用系統 RAM 的節點最大並行請求數
磁碟機數量 |
32 GiB RAM |
64 GiB RAM |
128 GiB RAM |
256 GiB RAM |
512 GiB RAM |
---|---|---|---|---|---|
4 個磁碟機 |
1,074 |
2,149 |
4,297 |
8,595 |
17,190 |
8 個磁碟機 |
840 |
1,680 |
3,361 |
6,722 |
13,443 |
16 個磁碟機 |
585 |
1,170 |
2.341 |
4,681 |
9,362 |
下表提供根據節點上的本機儲存總量來配置 MinIO 使用的記憶體的一般準則
主機儲存總量 |
建議的主機記憶體 |
---|---|
最多 1 Tebibyte (Ti) |
8GiB |
最多 10 Tebibyte (Ti) |
16GiB |
最多 100 Tebibyte (Ti) |
32GiB |
最多 1 Pebibyte (Pi) |
64GiB |
超過 1 Pebibyte (Pi) |
128GiB |
重要
從 RELEASE.2024-01-28T22-35-53Z 開始,MinIO 在分散式設定中會為每個節點預先配置 2GiB 的記憶體,單節點設定則預先配置 1GiB 的記憶體。
儲存裝置
磁碟機的獨佔存取權
MinIO 需要 獨佔 存取為物件儲存提供的磁碟機或磁碟區。其他任何處理程序、軟體、指令碼或人員都不得對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 放置在其中的物件或檔案直接執行任何動作。
除非 MinIO 工程部門指示,否則請勿使用指令碼或工具直接修改、刪除或移動提供的磁碟機上的任何資料分片、同位分片或中繼資料檔案,包括從一個磁碟機或節點移動到另一個磁碟機或節點。此類操作很可能導致廣泛的損毀和資料遺失,超出 MinIO 的修復能力。
建議的儲存媒介
MinIO 建議針對所有工作負載類型和規模使用快閃儲存裝置 (NVMe 或 SSD)。需要高效能的工作負載應優先選擇 NVMe 而非 SSD。
使用基於 HDD 的儲存裝置的 MinIO 部署最適合作為老舊資料的 物件轉換 ("分層") 的冷階層目標。HDD 儲存裝置通常無法提供滿足現代工作負載期望的必要效能,並且規模化的任何成本效率都會因媒介的效能限制而被抵銷。
使用直接附加的「本機」儲存裝置 (DAS)
DAS (例如本機附加的 JBOD (Just a Bunch of Disks) 陣列) 比網路連線 (NAS、SAN、NFS) 儲存裝置提供顯著的效能和一致性優勢。
網路檔案系統磁碟區會破壞一致性保證
MinIO 嚴格的寫入後讀取和寫入後列出一致性模型需要本機磁碟機檔案系統。如果基礎儲存磁碟區是 NFS 或類似的網路附加儲存磁碟區,MinIO 無法提供一致性保證。
使用帶有標籤的 XFS 格式磁碟機
將磁碟機格式化為 XFS,並以 JBOD 陣列的形式呈現給 MinIO,不使用 RAID 或其他集區設定。使用任何其他類型的備份儲存裝置 (SAN/NAS、ext4、RAID、LVM) 通常會導致效能、可靠性、可預測性和一致性降低。
格式化 XFS 磁碟機時,請為每個磁碟機套用唯一的標籤。例如,以下命令會將四個磁碟機格式化為 XFS,並套用相應的磁碟機標籤。
mkfs.xfs /dev/sdb -L MINIODRIVE1
mkfs.xfs /dev/sdc -L MINIODRIVE2
mkfs.xfs /dev/sdd -L MINIODRIVE3
mkfs.xfs /dev/sde -L MINIODRIVE4
使用 /etc/fstab
掛載磁碟機
MinIO 需要 磁碟機在重新啟動時維持其在掛載位置的順序。MinIO 不 支援將具有現有 MinIO 資料的磁碟機任意移轉到新的掛載位置,無論是有意為之還是由於作業系統層級行為而造成。
您必須使用 /etc/fstab
或類似的掛載控制系統,以在一致的路徑掛載磁碟機。例如
$ nano /etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
LABEL=MINIODRIVE1 /mnt/drive-1 xfs defaults,noatime 0 2
LABEL=MINIODRIVE2 /mnt/drive-2 xfs defaults,noatime 0 2
LABEL=MINIODRIVE3 /mnt/drive-3 xfs defaults,noatime 0 2
LABEL=MINIODRIVE4 /mnt/drive-4 xfs defaults,noatime 0 2
您可以在初始設定期間使用 mount -a
在這些路徑掛載這些磁碟機。否則,作業系統應在節點啟動過程中掛載這些磁碟機。
MinIO 強烈建議 使用基於標籤的掛載規則,而非基於 UUID 的規則。基於標籤的規則允許將不健康或無法運作的磁碟機與具有相符格式和標籤的替換磁碟機交換。基於 UUID 的規則需要編輯 /etc/fstab
檔案,以使用新的磁碟機 UUID 替換對應。
注意
如果一個或多個遠端檔案掛載傳回錯誤或失敗,則依賴掛載的外部儲存裝置的雲端環境執行個體可能會遇到開機失敗。例如,如果一個或多個 EBS 磁碟區掛載失敗,則具有掛載的持續性 EBS 磁碟區的 AWS ECS 執行個體可能無法使用標準的 /etc/fstab
設定開機。
您可以設定 nofail
選項以在開機時停止錯誤報告,並允許執行個體在有一個或多個掛載問題的情況下開機。
您不應在具有本機連接磁碟的系統上使用此選項,因為停止磁碟機錯誤報告會阻止 MinIO 和作業系統以正常方式回應這些錯誤。
停用錯誤時 XFS 重試
MinIO 強烈建議 使用 max_retries
設定來停用以下錯誤類別的 錯誤時重試 行為
EIO
讀取或寫入時發生錯誤ENOSPC
裝置上沒有剩餘空間錯誤default
所有其他錯誤
預設的 max_retries
設定通常會指示檔案系統無限期地重試錯誤,而不是傳播錯誤。MinIO 可以適當地處理 XFS 錯誤,使得錯誤時重試行為最多會造成不必要的延遲或效能降低。
以下指令碼會重複執行指定掛載路徑中的所有磁碟機,並針對建議的錯誤類別將 XFS max_retries
設定設定為 0
或「發生錯誤時立即失敗」。此指令碼會忽略任何未掛載的磁碟機 (無論是手動掛載還是透過 /etc/fstab
掛載)。修改 /mnt/drive
行以符合 MinIO 磁碟機使用的模式。
#!/bin/bash
for i in $(df -h | grep /mnt/drive | awk '{ print $1 }'); do
mountPath="$(df -h | grep $i | awk '{ print $6 }')"
deviceName="$(basename $i)"
echo "Modifying xfs max_retries and retry_timeout_seconds for drive $i mounted at $mountPath"
echo 0 > /sys/fs/xfs/$deviceName/error/metadata/EIO/max_retries
echo 0 > /sys/fs/xfs/$deviceName/error/metadata/ENOSPC/max_retries
echo 0 > /sys/fs/xfs/$deviceName/error/metadata/default/max_retries
done
exit 0
您必須在所有 MinIO 節點上執行此指令碼,並設定指令碼在重新啟動時重新執行,因為 Linux 作業系統通常不會保留這些變更。您可以使用 cron
工作和 @reboot
計時,以便在節點重新啟動時執行上述指令碼,並確保所有磁碟機都已停用錯誤時重試。使用 crontab -e
建立以下工作,修改指令碼路徑以符合每個節點上的路徑
@reboot /opt/minio/xfs-retry-settings.sh
使用一致的磁碟機類型和容量
請確保 MinIO 部署中底層儲存使用一致的硬碟類型 (NVMe、SSD、HDD)。MinIO 不會區分儲存類型,也不支援在單一部署中配置「熱」或「溫」硬碟。混合使用不同硬碟類型通常會導致效能下降,因為部署中最慢的硬碟會成為瓶頸,無論較快硬碟的效能如何。
在每個 MinIO 伺服器池 中的所有節點上,使用相同容量和類型的硬碟。MinIO 會將每個硬碟的最大可用容量限制為部署中最小的容量。例如,如果部署中有 15 個 10TB 硬碟和 1 個 1TB 硬碟,MinIO 會將每個硬碟的容量限制為 1TB。
建議的硬體測試
MinIO 診斷
執行內建的健康狀況診斷工具。如果您可以存取 SUBNET,則可以在該處上傳結果。
mc support diag ALIAS --airgap
將 ALIAS 取代為為部署定義的 別名
。
MinIO 支援診斷工具
對於已向 MinIO SUBNET 註冊的部署,您可以執行內建的支援診斷工具。
執行三個 mc support perf
測試。
這些伺服器端測試會驗證網路、硬碟和物件的吞吐量。使用預設選項執行所有三個測試。
網路測試
在別名為
minio1
的叢集上執行網路吞吐量測試。mc support perf net minio1
硬碟測試
針對別名為
minio1
的叢集,在所有節點上的所有硬碟上執行硬碟讀取/寫入效能測量。該命令使用 4MiB 的預設區塊大小。mc support perf drive minio1
物件測試
測量在別名為
minio1
的物件上進行 S3 讀取/寫入的效能。MinIO 會自動調整並發性,以獲得最大的吞吐量和 IOPS (每秒輸入/輸出次數)。mc support perf object minio1
作業系統診斷工具
如果您無法執行 mc support diag
或結果顯示非預期的結果,您可以使用作業系統的預設工具。
在所有伺服器上獨立測試每個硬碟,以確保它們的效能相同。使用這些作業系統層級工具的結果來驗證您的儲存硬體效能。記錄結果以供日後參考。
測試硬碟在寫入操作期間的效能
此測試會檢查硬碟將新資料 (未快取) 寫入硬碟的能力,方法是以每次最多一定位元組的量建立指定數量的區塊,以模擬硬碟在寫入未快取資料時的功能。這可讓您查看在一致的檔案 I/O 下的實際硬碟效能。
dd if=/dev/zero of=/mnt/driveN/testfile bs=128k count=80000 oflag=direct conv=fdatasync > dd-write-drive1.txt
將
driveN
取代為您要測試的硬碟路徑。dd
複製和貼上資料的命令。
if=/dev/zero
從
/dev/zero
讀取,這是一個系統產生的無限 0 位元組串流,用於建立指定大小的檔案of=/mnt/driveN/testfile
寫入至
/mnt/driveN/testfile
bs=128k
一次最多寫入 128,000 位元組
count=80000
最多寫入 80000 個資料區塊
oflag=direct
使用直接 I/O 寫入以避免資料快取
conv=fdatasync
在完成之前實際寫入輸出檔案資料
> dd-write-drive1.txt
將操作輸出的內容寫入目前工作目錄中的
dd-write-drive1.txt
該操作會傳回寫入的檔案數量、以位元組為單位的寫入總大小、操作的總時間長度 (以秒為單位),以及寫入速度 (以每秒位元組數為單位)。
測試硬碟在讀取操作期間的效能
dd if=/mnt/driveN/testfile of=/dev/null bs=128k iflag=direct > dd-read-drive1.txt
將
driveN
取代為您要測試的硬碟路徑。dd
複製和貼上資料的命令
if=/mnt/driveN/testfile
從
/mnt/driveN/testfile
讀取;替換為用於測試硬碟讀取效能的檔案路徑of=/dev/null
寫入至
/dev/null
,這是一個在操作完成後不會持續存在的虛擬檔案bs=128k
一次最多寫入 128,000 位元組
count=80000
最多寫入 80000 個資料區塊
iflag=direct
使用直接 I/O 讀取並避免資料快取
> dd-read-drive1.txt
將操作輸出的內容寫入目前工作目錄中的
dd-read-drive1.txt
使用足夠大的檔案來模擬您的部署的主要用例,以獲得準確的讀取測試結果。
以下指南在效能測試期間可能會有所幫助
小型檔案:< 128KB
一般檔案:128KB – 1GB
大型檔案:> 1GB
您可以使用
head
命令來建立要使用的檔案。以下命令範例會建立一個名為testfile
的 10 GB 檔案。head -c 10G </dev/urandom > testfile
該操作會傳回讀取的檔案數量、以位元組為單位的讀取總大小、操作的總時間長度 (以秒為單位),以及讀取速度 (以每秒位元組數為單位)。
第三方診斷工具
IO 控制器測試
使用 IOzone 來測試輸入/輸出控制器以及所有硬碟的組合。記錄您部署中每台伺服器的效能數據。
iozone -s 1g -r 4m -i 0 -i 1 -i 2 -I -t 160 -F /mnt/sdb1/tmpfile.{1..16} /mnt/sdc1/tmpfile.{1..16} /mnt/sdd1/tmpfile.{1..16} /mnt/sde1/tmpfile.{1..16} /mnt/sdf1/tmpfile.{1..16} /mnt/sdg1/tmpfile.{1..16} /mnt/sdh1/tmpfile.{1..16} /mnt/sdi1/tmpfile.{1..16} /mnt/sdj1/tmpfile.{1..16} /mnt/sdk1/tmpfile.{1..16} > iozone.txt
|
每個檔案的大小為 1G |
|
4m 4MB 區塊大小 |
|
0=寫入/重寫,1=讀取/重新讀取,2=隨機讀取/寫入 |
|
現代直接 I/O |
|
執行緒數量 (\(numberOfDrives * 16\)) |
|
檔案清單 (以上命令會測試每個硬碟 16 個檔案) |