硬體檢查清單
在規劃生產環境、分散式 MinIO 部署的硬體設定時,請使用以下檢查清單。
考量事項
在為您的 MinIO 實作選擇硬體時,請考慮以下因素
啟動時要儲存的資料預期數量 (以 Tebibyte 為單位)
至少未來兩年內資料大小的預期增長
按平均物件大小計算的物件數量
資料的平均保留時間 (以年為單位)
要部署的站點數量
預期的儲存貯體數量
生產環境硬體建議
以下檢查清單遵循 MinIO 的建議設定,用於生產部署。提供的指南旨在作為基準,無法取代 MinIO SUBNET 效能診斷、架構檢閱和直接工程支援。
與任何分散式系統一樣,MinIO 受益於針對給定伺服器集區中所有節點選擇相同的組態。確保集區節點之間一致地選擇硬體(CPU、記憶體、主機板、儲存配接器)和軟體(作業系統、核心設定、系統服務)。
如果節點具有不同的硬體或軟體組態,部署可能會出現無法預測的效能。從在較低成本硬體上儲存過時資料中受益的工作負載應改為部署專用的「暖」或「冷」MinIO 部署,並將資料轉換到該層級。
MinIO 不提供託管服務或硬體銷售
請參閱我們的參考硬體頁面,了解我們硬體合作夥伴提供的精選伺服器和儲存組件。
描述 |
最低 |
建議 |
|
---|---|---|---|
專門為 MinIO 租戶提供服務的 Kubernetes 工作節點。 |
每個租戶 4 個工作節點 |
每個租戶 8 個以上的工作節點 |
|
每個 MinIO 伺服器 Pod 4 個 PV |
每個 MinIO 伺服器 Pod 8 個以上的 PV |
||
25GbE |
100GbE |
||
支援現代 SIMD 指令 (AVX-512) 的伺服器級 CPU,例如 Intel® Xeon® Scalable 或更高版本。 |
每個 MinIO Pod 4 個 vCPU |
每個 MinIO Pod 8 個以上的 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/秒
1GbE 網路連結最多可支援 125MB/秒,或一個旋轉硬碟
10GbE 網路大約可支援 1.25GB/秒,可能支援 10-12 個旋轉硬碟
25GbE 網路大約可支援 3.125GB/秒,可能支援約 30 個旋轉硬碟
記憶體
記憶體主要限制每個節點的同時連線數。
您可以使用此公式計算每個節點的最大同時請求數
\(總記憶體 / 每個請求的記憶體\)
若要計算每個請求使用的記憶體量,請使用此公式
\(((2MiB + 128KiB) * 硬碟數量) + (2 * 10MiB) + (2 * 1 MiB)\)
10MiB 是預設的 v1 糾刪區塊大小。1 MiB 是預設的 v2 糾刪區塊大小。
下表列出節點上基於主機硬碟數量和 *可用* 系統記憶體的最大同時請求數
硬碟數量 |
32 GiB 記憶體 |
64 GiB 記憶體 |
128 GiB 記憶體 |
256 GiB 記憶體 |
512 GiB 記憶體 |
---|---|---|---|---|---|
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 建議為每個 MinIO 租戶佈建一個儲存類別,以滿足該租戶的效能目標。
在可能的情況下,請將儲存類別、CSI 或其他 PV 的基礎佈建器設定為將磁碟區格式化為 XFS,以確保最佳效能。
確保租戶中佈建的所有 PV 都有一致的底層儲存類型(NVMe、SSD、HDD)。
確保每個租戶中所有節點的每個 PV 都具有相同的呈現容量伺服器池。MinIO 會將每個 PV 的最大可用大小限制為池中最小的 PV。例如,如果池中有 15 個 10TB PV 和 1 個 1TB PV,則 MinIO 會將每個 PV 的容量限制為 1TB。
建議的硬體測試
MinIO 診斷
執行內建的健康狀況診斷工具。如果您可以存取SUBNET,則可以在那裡上傳結果。
mc support diag ALIAS --airgap
將 ALIAS 替換為為部署定義的 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=隨機讀寫 |
|
Direct-IO 現代模式 |
|
執行緒數量 (\(numberOfDrives * 16\)) |
|
檔案列表 (以上命令針對每個磁碟測試 16 個檔案) |