文件

部署 MinIO:單節點多硬碟

此頁面上的程序涵蓋在單節點多硬碟 (SNMD) 組態中部署 MinIO。 SNMD 部署提供硬碟級的可靠性和故障轉移/復原,但效能和擴展性受到單個節點的限制。

對於生產環境,MinIO 強烈建議使用 多節點多硬碟(分散式)拓撲進行部署,以獲得企業級效能、可用性和可擴展性。

先決條件

儲存需求

以下需求總結了 MinIO 硬體建議的儲存部分

使用本機儲存

直接連接儲存 (DAS) 比網路儲存 (NASSANNFS) 具有顯著的效能和一致性優勢。 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 的模式來掛載磁碟機,其中 n1 開始,並在每個磁碟機遞增 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"
其他架構

MinIO 也支援其他架構

  • ppc64le

  • s390x

如需下載這些架構的二進位檔、RPM 或 DEB 檔案的說明,請參閱 MinIO 下載頁面

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 使用者和群組身分執行。您可以使用 groupadduseradd 命令建立使用者和群組。以下範例會建立使用者、群組,並設定存取 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 預期使用的磁碟機路徑相符。

或者,變更 UserGroup 值為系統主機上具有必要存取權和權限的其他使用者和群組。

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 變數

  • :

當啟動時滿足這些條件時,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_USERMINIO_ROOT_PASSWORD 登入。

MinIO Console displaying Buckets view in a fresh installation

您可以使用 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 部署。