文件

部署 MinIO:單節點單硬碟

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

對於協調環境中的擴充開發或生產環境,請使用 MinIO Kubernetes Operator 在多個工作節點上部署租戶。

重要

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) 比網路儲存 (網路附加儲存 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 變數

  • :

當啟動時滿足這些條件時,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 建立並啟動容器作為分離的 (-d) 背景處理程序,並具有虛擬 TTY (-t)。這允許容器在背景中執行,並開啟 TTY 以進行類似 bash 的存取。

-p 9000:9000 -p 9001:9001

將本機上的連接埠 90009090 繫結到容器上的相同連接埠。這允許透過本機存取容器。

-v PATH:/data/minio

將本機上的儲存磁碟區 PATH 繫結到容器上的 /data 路徑。使用本機上儲存磁碟區或資料夾的完整路徑取代此值。例如

Linux 或 macOS

~/minio/data/

Windows

C:\minio\data

-v /etc/default/minio:/etc/config.env

將上一步中建立的環境檔案掛載到容器上的 /etc/config.env 路徑。對於 Windows 主機,請指定 Windows 樣式路徑 -v C:\minio\config:/etc/config.env

MinIO Server 使用此環境檔案進行組態。

-e "MINIO_CONFIG_ENV_FILE=/etc/config.env"

設定一個 MinIO 環境變數,指向容器掛載的環境檔案路徑。

--name "minio_local"

設定容器的自訂名稱。省略此值以允許 Podman/Docker 自動產生容器名稱。您可以取代此值以最好地反映您的需求。

minio server --console-address ":9001"

使用從先前步驟中拉取的 minio:minio 映像啟動 MinIO 伺服器。minio server --console-address ":9001"選項指示伺服器為 MinIO 主控台 Web 介面設定靜態連接埠。此選項對於容器化環境是*必要*的。

如果您修改此值,請確保使用 Podman/Docker 的 -p 旗標設定適當的連接埠對應,以確保本機主機與容器之間的流量轉送。

將任何進一步的自訂設定套用至命令後,請在您慣用的終端機或 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

容器網路可能無法在主機外部存取

APICONSOLE 區塊可能包含容器的網路介面。容器網路外部的用戶端無法使用這些位址存取 MinIO API 或主控台。

外部存取需要使用容器主機的網路位址,並假設主機防火牆允許存取相關的連接埠 (範例中的 90009090)。

5) 連線到 MinIO 服務

您可以透過在您慣用的瀏覽器中輸入 https://127.0.0.1:9001 來存取 MinIO Web 主控台。本機上 MinIO 主控台連接埠的任何流量都會重新導向至容器。

使用在容器環境檔案中設定的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登入。

MinIO Console displaying Buckets view in a fresh installation.

您可以使用 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 替換為要為此部署建立的別名名稱。

  • myminioadminminio-secret-key-change-me 替換為在容器環境檔案中指定的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 值。

如果容器正在運行並且可以通過指定的連接埠存取,則該命令應返回成功。

然後,您可以使用任何 mc 命令與容器互動。如果您的本機主機防火牆允許外部存取 MinIO S3 API 連接埠,則同一網路上的其他主機可以使用您本機主機的 IP 或主機名稱來存取 MinIO 部署。