部署 MinIO:單節點單硬碟
本頁的程序涵蓋在單節點單硬碟 (SNSD) 配置中部署 MinIO,以進行早期開發和評估。SNSD 部署使用零同位元抹除編碼後端,除了底層儲存磁碟區所實作的功能外,不提供額外的可靠性或可用性。這些部署最適合用於本機測試和評估,或用於沒有可用性或效能要求的小規模資料工作負載。
對於協調環境中的擴充開發或生產環境,請使用 MinIO Kubernetes Operator 在多個工作節點上部署租戶。
重要
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 的最新穩定映像
選取 Podman 或 Docker 的索引標籤,以查看拉取 MinIO 容器映像的說明。這些說明包括 quay.io 和 DockerHub 的範例
- quay.io
podman pull quay.io/minio/minio
- DockerHub
podman pull docker://minio/minio
- quay.io
docker pull quay.io/minio/minio
- DockerHub
docker pull docker://minio/minio
2) 建立環境變數檔案
在 /etc/default/minio
建立環境變數檔案。對於 Windows 主機,指定類似於 C:\minio\config
的 Windows 樣式路徑。MinIO Server 容器可以使用此檔案作為所有環境變數的來源。
以下範例提供了一個起始環境檔案
# 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
的值。
3) 建立並執行容器
選取您選擇的容器管理介面,以取得相關的命令語法。
將命令複製到文字檔案以供進一步修改。
podman run -dt \
-p 9000:9000 -p 9001:9001 \
-v PATH:/mnt/data \
-v /etc/default/minio:/etc/config.env \
-e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
--name "minio_local" \
minio server --console-address ":9001"
根據您的本機環境需要,指定任何其他 選項到 podman run
。
將命令複製到文字檔案以供進一步修改。
docker run -dt \
-p 9000:9000 -p 9001:9001 \
-v PATH:/mnt/data \
-v /etc/default/minio:/etc/config.env \
-e "MINIO_CONFIG_ENV_FILE=/etc/config.env" \
--name "minio_local" \
minio server --console-address ":9001"
根據您的本機環境需要,指定任何其他 選項到 docker run
。
若要在無根模式下執行 Docker,您可能需要設定以下額外的 Docker CLI 選項
- Linux
--user $(id -u):$(id -g)
- 指示容器以目前登入的使用者身分執行。- Windows
--security-opt "credentialspec=file://path/to/file.json"
- 指示容器使用 Windows 群組管理服務帳戶執行。
下表描述命令的每一行,並提供其他組態說明
行 |
描述 |
---|---|
podman run -dt docker run -dt |
指示 Podman/Docker 建立並啟動容器作為分離的 ( |
|
將本機上的連接埠 |
|
將本機上的儲存磁碟區
|
|
將上一步中建立的環境檔案掛載到容器上的 MinIO Server 使用此環境檔案進行組態。 |
|
設定一個 MinIO 環境變數,指向容器掛載的環境檔案路徑。 |
|
設定容器的自訂名稱。省略此值以允許 Podman/Docker 自動產生容器名稱。您可以取代此值以最好地反映您的需求。 |
|
使用從先前步驟中拉取的 如果您修改此值,請確保使用 Podman/Docker 的 |
將任何進一步的自訂設定套用至命令後,請在您慣用的終端機或 Shell 環境中執行它。該命令應傳回所建立容器的唯一 ID。
4) 驗證容器狀態
執行以下命令,以從容器擷取記錄。使用上一步中指定給 --name
的值取代容器名稱。
podman logs minio
該命令應傳回類似以下的輸出
執行以下命令,以從容器擷取記錄。使用上一步中指定給 --name
的值取代容器名稱。
docker logs minio
該命令應傳回類似以下的輸出
Status: 1 Online, 0 Offline.
API: http://10.0.2.100:9000 http://127.0.0.1:9000
RootUser: myminioadmin
RootPass: minio-secret-key-change-me
Console: http://10.0.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/container/index.html
容器網路可能無法在主機外部存取
API
和 CONSOLE
區塊可能包含容器的網路介面。容器網路外部的用戶端無法使用這些位址存取 MinIO API 或主控台。
外部存取需要使用容器主機的網路位址,並假設主機防火牆允許存取相關的連接埠 (範例中的 9000
和 9090
)。
5) 連線到 MinIO 服務
您可以透過在您慣用的瀏覽器中輸入 https://127.0.0.1:9001 來存取 MinIO Web 主控台。本機上 MinIO 主控台連接埠的任何流量都會重新導向至容器。
使用在容器環境檔案中設定的 MINIO_ROOT_USER
和 MINIO_ROOT_PASSWORD
登入。

您可以使用 MinIO Console 進行一般管理任務,例如身份和存取管理、指標和日誌監控或伺服器設定。每個 MinIO 伺服器都包含自己的內嵌 MinIO Console。
如果您的本機主機防火牆允許外部存取 Console 連接埠,則同一網路上的其他主機可以使用您本機主機的 IP 或主機名稱來存取 Console。
您可以使用 MinIO 用戶端 (mc
) 通過終端機或 Shell 存取 MinIO 部署。有關安裝 mc
的說明,請參閱 MinIO 用戶端安裝快速入門。
建立一個與 MinIO 部署對應的新 alias
。使用您本機的主機名稱或 IP 位址以及 S3 API 連接埠 9000
來存取 MinIO 部署。本機主機上對該連接埠的所有流量都會重新導向到容器。
mc alias set minio-alias https://127.0.0.1:9000 myminioadmin minio-secret-key-change-me
將
minio-alias
替換為要為此部署建立的別名名稱。將
myminioadmin
和minio-secret-key-change-me
替換為在容器環境檔案中指定的MINIO_ROOT_USER
和MINIO_ROOT_PASSWORD
值。
如果容器正在運行並且可以通過指定的連接埠存取,則該命令應返回成功。
然後,您可以使用任何 mc
命令與容器互動。如果您的本機主機防火牆允許外部存取 MinIO S3 API 連接埠,則同一網路上的其他主機可以使用您本機主機的 IP 或主機名稱來存取 MinIO 部署。