硬體檢查清單
在規劃用於生產、分散式 MinIO 部署的硬體組態時,請使用下列檢查清單。
注意事項
在為您的 MinIO 實作選擇硬體時,請考慮以下因素
啟動時要儲存的資料預期量(單位為 tebibytes)
至少未來兩年資料大小的預期成長
物件數量(依物件平均大小)
資料的平均保留時間(以年為單位)
要部署的站台數量
預期的儲存貯體數量
生產硬體建議
下列檢查清單遵循 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/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 是預設的 erasure block size v1。1 MiB 是預設的 erasure block size 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 建議為每個 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 替換為為部署定義的 別名
。
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 個檔案) |