部署 MinIO:單節點單硬碟
本頁上的程序涵蓋在單節點單硬碟 (SNSD) 配置中部署 MinIO,以進行早期開發和評估。SNSD 部署使用零同位刪除碼後端,除了底層儲存磁碟區實施的功能之外,不提供任何額外的可靠性或可用性。這些部署最適合用於本機測試和評估,或用於沒有可用性或效能要求的小規模資料工作負載。
對於擴展的開發或生產環境,請在多節點多硬碟(分散式)拓撲中部署 MinIO
重要
RELEASE.2022-10-29T06-21-33Z 完全移除已棄用的閘道/檔案系統後端。如果 MinIO 啟動並偵測到現有的檔案系統後端檔案,則會傳回錯誤。
若要從 FS 後端部署遷移,請使用mc mirror
或mc 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) 比網路儲存 (NAS、SAN、NFS) 具有顯著的效能和一致性優勢。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"
其他架構
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
使用者和群組身分執行。您可以使用 groupadd
和 useradd
指令建立使用者和群組。以下範例會建立使用者和群組,並設定存取 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 預定使用的磁碟路徑。
或者,將 User
和 Group
值變更為系統主機上具有必要存取權限的其他使用者和群組。
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
變數
有:
使用支援的 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 服務不會在主機重新啟動時自動啟動。您必須使用 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 或主機名稱存取主控台。
您可以使用終端機或 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 部署。