文件

部署 MinIO:單節點單硬碟

本頁上的程序涵蓋在單節點單硬碟 (SNSD) 配置中部署 MinIO,以進行早期開發和評估。SNSD 部署使用零同位刪除碼後端,除了底層儲存磁碟區實施的功能之外,不提供任何額外的可靠性或可用性。這些部署最適合用於本機測試和評估,或用於沒有可用性或效能要求的小規模資料工作負載。

對於擴展的開發或生產環境,請在多節點多硬碟(分散式)拓撲中部署 MinIO

重要

RELEASE.2022-10-29T06-21-33Z 完全移除已棄用的閘道/檔案系統後端。如果 MinIO 啟動並偵測到現有的檔案系統後端檔案,則會傳回錯誤。

若要從 FS 後端部署遷移,請使用mc mirrormc cp將您的數據複製到新的 MinIO SNSD 部署。您也應該在 SNSD 部署上重新建立任何必要的用戶、群組、策略和儲存桶配置。

先前存在的資料

MinIO 啟動行為取決於指定的儲存磁碟區或路徑的內容。伺服器會檢查 MinIO 內部後端資料以及現有資料夾和檔案的結構。下表列出了可能的儲存磁碟區狀態和 MinIO 行為

儲存磁碟區狀態

行為

空的,沒有檔案、資料夾或 MinIO 後端資料

MinIO 在 SNSD 模式下啟動並建立零同位後端

現有的 SNSD 零同位物件和 MinIO 後端資料

MinIO 在 SNSD 模式下恢復

現有的檔案系統資料夾、檔案,但沒有 MinIO 後端資料

MinIO 傳回錯誤且不會啟動

現有的檔案系統資料夾、檔案和舊版「FS 模式」後端資料

MinIO 傳回錯誤且不會啟動

在版本 RELEASE.2022-10-29T06-21-33Z 中變更。

先決條件

儲存需求

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

使用本機儲存

直接連接儲存 (DAS) 比網路儲存 (NASSANNFS) 具有顯著的效能和一致性優勢。MinIO 強烈建議將快閃儲存 (NVMe、SSD) 用於主要或「熱」資料。

使用 XFS 格式化磁碟機

MinIO 強烈建議為儲存配置 XFS 格式化的磁碟機。MinIO 將 XFS 用作內部測試和驗證套件的一部分,在所有規模下提供額外的效能和行為信心。

在重新啟動時保留磁碟機掛載和對應

使用 /etc/fstab 來確保節點重新啟動後磁碟到掛載點的對應關係一致。

非 Linux 作業系統應使用對應的磁碟掛載管理工具。

磁碟的獨佔存取權

MinIO 要求對用於物件儲存的磁碟或磁碟區具有獨佔存取權。其他任何程序、軟體、腳本或人員都不應對提供給 MinIO 的磁碟或磁碟區,或 MinIO 放置在它們上面的物件或檔案執行任何直接操作。

除非 MinIO 工程部門指示,否則請勿使用腳本或工具直接修改、刪除或移動所提供磁碟上的任何資料分片、同位分片或元數據檔案,包括從一個磁碟或節點移動到另一個磁碟或節點。此類操作很可能導致廣泛的損毀和資料遺失,超出 MinIO 的修復能力。

記憶體需求

在版本 RELEASE.2024-01-28T22-35-53Z 中變更:MinIO 在啟動時會預先配置 2GiB 的系統記憶體。

MinIO 建議每個主機至少配置 32GiB 的記憶體。有關 MinIO 中記憶體分配的更多指南,請參閱記憶體

部署單節點單磁碟 MinIO

以下程序部署由單個 MinIO 伺服器和單個磁碟或儲存磁碟區組成的 MinIO。

網路檔案系統磁碟區會破壞一致性保證

MinIO 嚴格的 讀後寫寫後列表 一致性模型需要本地磁碟檔案系統。

如果底層儲存磁碟區是 NFS 或類似的網路附加儲存磁碟區,MinIO 無法提供一致性保證。

1) 下載 MinIO 伺服器

以下索引標籤提供了使用 RPM、DEB 或二進位檔案將 MinIO 安裝到 64 位元 Linux 作業系統上的範例。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 的手冊頁面

[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/data

此範例中的磁碟路徑由 MINIO_VOLUMES 環境變數指定。在此處和環境變數檔案中變更值,以符合 MinIO 預定使用的磁碟路徑。

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

MinIO 在 github.com/minio/minio-service 上發佈其他啟動腳本範例。

若要更新使用 systemctl 管理的部署,請參閱更新 systemctl 管理的 MinIO 部署

3) 建立環境變數檔案

/etc/default/minio 建立一個環境變數檔案。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 volume or path to use for the MinIO server.

MINIO_VOLUMES="/mnt/data"

# 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 版本 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 服務不會在主機重新啟動時自動啟動。您必須使用 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 或主機名稱存取主控台。

您可以使用終端機或 Shell,透過 MinIO 用戶端mc)來存取 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 部署。