部署 MinIO:單節點多硬碟
此頁面上的程序涵蓋在單節點多硬碟 (SNMD) 組態中部署 MinIO。 SNMD 部署提供硬碟級的可靠性和故障轉移/復原,但效能和擴展性受到單個節點的限制。
對於生產環境,MinIO 強烈建議使用 多節點多硬碟(分散式)拓撲進行部署,以獲得企業級效能、可用性和可擴展性。
先決條件
儲存需求
以下需求總結了 MinIO 硬體建議的儲存部分
- 使用本機儲存
直接連接儲存 (DAS) 比網路儲存 (NAS、SAN、NFS) 具有顯著的效能和一致性優勢。 MinIO 強烈建議將快閃儲存(NVMe、SSD)用於主要或「熱」資料。
- 使用 XFS 格式化硬碟
MinIO 強烈建議佈建 XFS 格式化的硬碟用於儲存。 MinIO 使用 XFS 作為內部測試和驗證套件的一部分,在所有規模上提供對效能和行為的額外信心。
MinIO 不測試也不建議任何其他檔案系統,例如 EXT4、BTRFS 或 ZFS。
- 使用一致的硬碟類型
MinIO 不區分硬碟類型,並且不會從混合儲存類型中受益。每個池必須使用相同的類型(NVMe、SSD)
例如,部署一個僅由 NVMe 硬碟組成的池。如果您將某些硬碟部署為 SSD 或 HDD,MinIO 會將這些硬碟視為與 NVMe 硬碟相同。這可能會導致效能問題,因為某些硬碟具有不同或較差的讀/寫特性,並且無法以與 NVMe 硬碟相同的速率響應。
- 使用一致的硬碟大小
MinIO 將每個硬碟使用的容量限制為部署中最小的硬碟。
例如,部署一個由相同數量的 NVMe 硬碟組成的池,這些硬碟具有相同的
7.68TiB
容量。如果您部署一個具有3.84TiB
的硬碟,MinIO 會將池中的所有硬碟視為具有較小的容量。- 設定循序硬碟掛載
MinIO 使用 Go 擴展表示法
{x...y}
來表示建立新部署時的連續磁碟機序列,其中部署中的所有節點都具有相同的已掛載磁碟機組。將磁碟機掛載路徑設定為連續序列,以最佳支援此表示法。例如,使用/mnt/drive-n
的模式來掛載磁碟機,其中n
從1
開始,並在每個磁碟機遞增1
。- 跨重新啟動保存磁碟機掛載和對應
使用
/etc/fstab
以確保節點重新啟動時磁碟機到掛載點的對應一致。非 Linux 作業系統應使用等效的磁碟機掛載管理工具。
磁碟機的獨佔存取權
MinIO **要求** 對於提供用於物件儲存的磁碟機或磁碟區具有 *獨佔* 存取權。其他任何處理程序、軟體、腳本或人員都不應直接對提供給 MinIO 的磁碟機或磁碟區,或 MinIO 放置於其上的物件或檔案執行 *任何* 操作。
除非 MinIO 工程團隊指示,否則請勿使用腳本或工具直接修改、刪除或移動所提供磁碟機上的任何資料分片、同位分片或中繼資料檔案,包括從一個磁碟機或節點移動到另一個磁碟機或節點。此類操作很可能導致廣泛的損壞和超出 MinIO 修復能力之外的資料遺失。
記憶體需求
變更於版本 RELEASE.2024-01-28T22-35-53Z:MinIO 在啟動時預先配置 2GiB 的系統記憶體。
MinIO 建議每個主機 *至少* 32GiB 的記憶體。請參閱記憶體以獲取更多關於 MinIO 中記憶體配置的指南。
部署單節點多磁碟機 MinIO
以下步驟會部署由單一 MinIO 伺服器和多個磁碟機或儲存磁碟區組成的 MinIO。
1) 下載 MinIO 伺服器
以下分頁提供了使用 RPM、DEB 或二進位檔在 64 位元 Linux 作業系統上安裝 MinIO 的範例。RPM 和 DEB 套件會自動將 MinIO 安裝到必要的系統路徑,並為 systemctl
建立 minio
服務。MinIO 強烈建議使用 RPM 或 DEB 安裝方式。若要更新使用 systemctl
管理的部署,請參閱更新 systemctl 管理的 MinIO 部署。
amd64(Intel 或 AMD 64 位元處理器)
使用下列其中一個選項下載在 Intel 或 AMD 64 位元處理器上執行 Linux 的機器所用的 MinIO 伺服器安裝檔案。
使用下列命令下載最新的穩定版 MinIO RPM 並進行安裝。
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241029160148.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm
使用下列命令下載最新的穩定版 MinIO DEB 並進行安裝。
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20241029160148.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb
使用下列命令下載最新的穩定版 MinIO 二進位檔,並將其安裝到系統 $PATH
中。
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
arm64 (Apple M1/M2 或其他 ARM 64 位元處理器)
使用下列其中一個選項下載在 ARM 64 位元處理器(例如 Apple M1 或 M2)上執行 Linux 的機器所用的 MinIO 伺服器安裝檔案。
使用下列命令下載最新的穩定版 MinIO RPM 並進行安裝。
wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio-20241029160148.0.0-1.aarch64.rpm -O minio.rpm
sudo dnf install minio.rpm
使用下列命令下載最新的穩定版 MinIO DEB 並進行安裝。
wget https://dl.min.io/server/minio/release/linux-arm64/archive/minio_20241029160148.0.0_arm64.deb -O minio.deb
sudo dpkg -i minio.deb
使用下列命令下載最新的穩定版 MinIO 二進位檔,並將其安裝到系統 $PATH
中。
wget https://dl.min.io/server/minio/release/linux-arm64/minio
chmod +x minio
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"
其他架構
2) 建立 systemd
服務檔案
.deb
或 .rpm
套件會將下列 systemd 服務檔案安裝到 /usr/lib/systemd/system/minio.service
。對於二進位檔安裝,請在所有 MinIO 主機上手動建立此檔案。
注意
systemd
會先檢查 /etc/systemd/...
路徑,然後再檢查 /usr/lib/systemd/...
路徑,並使用找到的第一個檔案。為了避免發生衝突或非預期的設定選項,請檢查該檔案是否僅存在於 /usr/lib/systemd/system/minio.service
路徑。
如需檔案路徑搜尋順序的詳細資訊,請參閱 systemd.unit 的 man 頁面。
[Unit]
Description=MinIO
Documentation=https://minio.dev.org.tw/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio
[Service]
WorkingDirectory=/usr/local
User=minio-user
Group=minio-user
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
# MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=)
# This may improve systemctl setups where other services use `After=minio.server`
# Uncomment the line to enable the functionality
# Type=notify
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Specifies the maximum number of threads this process can create
TasksMax=infinity
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
# Built for ${project.name}-${project.version} (${project.name})
minio.service
檔案預設會以 minio-user
使用者和群組身分執行。您可以使用 groupadd
和 useradd
命令建立使用者和群組。以下範例會建立使用者、群組,並設定存取 MinIO 預期使用的資料夾路徑的權限。這些命令通常需要 root (sudo
) 權限。
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4
指定的磁碟機路徑僅為範例。請將其變更為與 MinIO 預期使用的磁碟機路徑相符。
或者,變更 User
和 Group
值為系統主機上具有必要存取權和權限的其他使用者和群組。
MinIO 在 github.com/minio/minio-service 上發佈其他啟動腳本範例。
若要更新使用 systemctl
管理的部署,請參閱更新 systemctl 管理的 MinIO 部署。
3) 建立環境變數檔案
在 /etc/default/minio
建立環境變數檔案。對於 Windows 主機,請指定類似於 C:\minio\config
的 Windows 樣式路徑。MinIO 伺服器容器可以使用此檔案作為所有環境變數的來源。
以下範例提供了一個起始環境檔案
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment.
MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me
# MINIO_VOLUMES sets the storage volumes or paths to use for the MinIO server.
# The specified path uses MinIO expansion notation to denote a sequential series of drives between 1 and 4, inclusive.
# All drives or paths included in the expanded drive list must exist *and* be empty or freshly formatted for MinIO to start successfully.
MINIO_VOLUMES="/data-{1...4}"
# MINIO_OPTS sets any additional commandline options to pass to the MinIO server.
# For example, `--console-address :9001` sets the MinIO Console listen port
MINIO_OPTS="--console-address :9001"
根據本機部署的需求,包含任何其他環境變數。 ..
伺服器版本新增:RELEASE.2024-03-03T17-50-39Z
如果滿足以下所有條件,MinIO 會自動產生唯一的根憑證
執行 KES Release 2024-03-01T18-06-46Z 或更新版本
尚未定義
MINIO_ROOT_USER
變數MINIO_ROOT_PASSWORD
變數
已:
設定具有 支援的 KMS 目標的 KES
使用 MinIO 環境變數停用根存取
當啟動時滿足這些條件時,MinIO 會使用 KMS,透過 基於雜湊訊息驗證碼 (HMAC) 為部署產生唯一的根憑證。
如果 MinIO 產生此類憑證,則用於產生憑證的金鑰**必須**保持不變,且必須持續存在。部署上的所有資料都使用此金鑰加密!
若要輪換產生的根憑證,請在 KMS 中產生新的金鑰,然後使用新的金鑰更新 MINIO_KMS_KES_KEY_NAME
的值。
4) 啟動 MinIO 服務
在本機主機上發出下列命令,以服務方式啟動 MinIO SNSD 部署
sudo systemctl start minio.service
使用下列命令確認服務已上線且正常運作
sudo systemctl status minio.service
journalctl -f -u minio.service
在伺服器處理連線和同步時,MinIO 可能會記錄到較多的非嚴重警告。這些警告通常是暫時性的,應該會在部署上線時解決。
變更於版本 RELEASE.2023-02-09T05-16-53Z:如果 MinIO 偵測到足夠的磁碟機以滿足部署的寫入仲裁,MinIO 就會啟動。
如果啟動 MinIO 後仍有任何磁碟機保持離線狀態,請在開始生產工作負載之前檢查並解決任何阻礙其功能的狀況。
MinIO 服務不會在主機重新啟動時自動啟動。您必須使用 systemctl enable minio.service
在主機啟動時啟動此處理程序。
sudo systemctl enable minio.service
journalctl
輸出應類似於下列
Status: 1 Online, 0 Offline.
API: http://192.168.2.100:9000 http://127.0.0.1:9000
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Console: http://192.168.2.100:9001 http://127.0.0.1:9001
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Command-line: https://minio.dev.org.tw/docs/minio/linux/reference/minio-mc.html
$ mc alias set myminio http://10.0.2.100:9000 myminioadmin minio-secret-key-change-me
Documentation: https://minio.dev.org.tw/docs/minio/linux/index.html
API
區塊會列出用戶端可以用來存取 MinIO S3 API 的網路介面和埠。Console
區塊會列出用戶端可以用來存取 MinIO Web Console 的網路介面和埠。
5) 連接至 MinIO 服務
您可以透過在您偏好的瀏覽器中輸入 MinIO 伺服器 Console
區塊中的任何主機名稱或 IP 位址來存取 MinIO 主控台,例如 https://127.0.0.1:9001。
使用在指定給容器的環境檔案中設定的 MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
登入。

您可以使用 MinIO 主控台進行一般管理任務,例如身分與存取管理、指標與日誌監控或伺服器設定。每個 MinIO 伺服器都包含其自身的內嵌 MinIO 主控台。
如果您的本機主機防火牆允許外部存取主控台連接埠,則相同網路上的其他主機可以使用您本機主機的 IP 或主機名稱來存取主控台。
您可以使用 MinIO 用戶端 ( mc
),透過終端機或 Shell 來存取 MinIO 部署。請參閱 MinIO 用戶端安裝快速入門,以取得安裝 mc
的說明。
建立一個對應於 MinIO 部署的新 別名
。指定 MinIO 伺服器 API
區塊中的任何主機名稱或 IP 位址,例如 https://127.0.0.1:9000。
mc alias set myminio https://127.0.0.1:9000 myminioadmin minio-secret-key-change-me
將
myminio
取代為要用於別名的所需名稱。將
myminioadmin
取代為指定給容器的環境檔案中的MINIO_ROOT_USER
值。將
minio-secret-key-change-me
取代為指定給容器的環境檔案中的MINIO_ROOT_PASSWORD
值。
然後,您可以使用任何 mc
命令與容器互動。如果您的本機主機防火牆允許外部存取 MinIO S3 API 連接埠,則相同網路上的其他主機可以使用您本機主機的 IP 或主機名稱來存取 MinIO 部署。