文件

將物件從 MinIO 轉移到 S3

此頁面上的程序會建立一個新的物件生命週期管理規則,該規則會將物件從 MinIO 儲存貯體轉移到 Amazon Web Services S3 儲存後端的遠端儲存層,與 S3 相容的服務。此程序支援使用案例,例如在特定時間段或日曆日期之後將物件分層到低成本或封存儲存。

需求

安裝和設定 mc

此程序使用 mc 來對 MinIO 叢集執行操作。在可以網路存取來源和目的地叢集的機器上安裝 mc。如需下載和安裝 mc 的說明,請參閱 mc 安裝快速入門

使用 mc alias set 命令,為來源 MinIO 叢集建立別名。建立別名需要指定來源和目的地叢集上使用者的存取金鑰。指定的使用者必須具有設定和套用轉移操作的權限

所需的 MinIO 權限

MinIO 需要將以下權限設定在您要建立生命週期管理規則的儲存貯體或多個儲存貯體的範圍內。

MinIO 還需要在您要建立物件轉移生命週期管理規則的遠端層的叢集上具有下列管理權限

例如,以下原則提供在叢集中任何儲存貯體上設定物件轉移生命週期管理規則的權限:。

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "admin:SetTier",
               "admin:ListTier"
            ],
            "Effect": "Allow",
            "Sid": "EnableRemoteTierManagement"
      },
      {
            "Action": [
               "s3:PutLifecycleConfiguration",
               "s3:GetLifecycleConfiguration"
            ],
            "Resource": [
                        "arn:aws:s3:::*"
            ],
            "Effect": "Allow",
            "Sid": "EnableLifecycleManagementRules"
      }
   ]
}

所需的 S3 權限

物件轉移生命週期管理規則需要在遠端儲存層上具有其他權限。具體而言,MinIO 需要遠端層認證提供對遠端儲存貯體的讀取、寫入、列出和刪除權限。

例如,以下原則提供將物件轉移到遠端層和從遠端層轉移物件的必要權限

{
   "Version": "2012-10-17",
   "Statement": [
      {
            "Action": [
               "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::MyDestinationBucket"
            ],
            "Sid": ""
      },
      {
            "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::MyDestinationBucket/*"
            ],
            "Sid": ""
      }
   ]
}

修改 MinIO 將物件分層到的儲存貯體的 Resource

請參閱 Amazon S3 權限文件,以取得有關設定所需權限的更完整指南。

遠端儲存貯體必須存在

在設定生命週期管理層或使用該儲存貯體作為目標的規則之前,先建立遠端 S3 儲存貯體。

考量

生命週期管理物件掃描器

MinIO 使用掃描器程序來檢查物件是否符合所有已設定的生命週期管理規則。由於高 IO 工作負載或系統資源有限而導致掃描速度緩慢,可能會延遲生命週期管理規則的應用。請參閱生命週期管理物件掃描器以獲取更多資訊。

遠端資料的獨佔存取權

MinIO *要求* 獨佔存取權以存取遠端儲存層上已轉換的資料。在「熱」MinIO 來源上的物件元資料與在「溫/冷」遠端層上的物件資料緊密連結。MinIO 無法在沒有遠端存取權的情況下檢索物件資料,遠端也不能用於還原來源上遺失的元資料。

所有對已轉換物件的存取*必須*僅透過 S3 API 操作經由 MinIO 發生。手動修改已轉換的物件 (無論是「熱」MinIO 層上的元資料*或*遠端「溫/冷」層上的物件資料) 都可能導致該物件資料遺失。

MinIO 會忽略遠端儲存桶或儲存桶前綴中任何未由 MinIO 部署明確管理的物件。自動轉換和透明物件檢索取決於以下假設

  • 遠端儲存上的物件沒有外部變更、遷移或刪除。

  • 遠端儲存桶上沒有生命週期管理規則 (例如轉換或過期)。

MinIO 將所有已轉換的物件儲存在遠端儲存桶或資源中,並使用每個部署獨有的前綴值。此值並非旨在支援從後端識別來源部署。MinIO 在設定遠端目標時支援額外的可選的人工可讀前綴,這有助於進行與診斷、維護或災難復原相關的操作。

MinIO 建議為包含其他資料 (包括來自其他 MinIO 部署的已轉換物件) 的遠端儲存層指定此可選前綴。本教學包含設定此前綴所需的語法。

遠端資料的可用性

MinIO 的分層行為取決於遠端儲存在收到請求後立即(毫秒到秒)傳回物件。因此,MinIO *無法*支援需要重新水合、等待時間或人工干預的遠端儲存。

MinIO 會為每個已轉換的物件建立元資料,以識別其在遠端儲存上的位置。應用程式無法在獨立於 MinIO 的情況下輕鬆識別和存取已轉換的物件。因此,已轉換資料的可用性取決於與糾刪碼和分散式部署拓撲為 MinIO 部署上的所有物件提供的相同的核心保護。使用物件轉換並不會提供任何額外的業務連續性或災難復原好處。

需要BC/DR保護的工作負載應實作 MinIO 伺服器端複寫。複寫可確保物件保留在遠端複寫站點上,以便在發生部分或全部資料遺失時可以從遠端重新同步。請參閱重新同步 (災難復原),以取得關於使用複寫在部分或全部資料遺失後進行復原的更完整文件。

程序

1) 設定用於生命週期管理的使用者帳戶和原則

此步驟會在 MinIO 部署上建立使用者和原則,以支援生命週期管理操作。如果部署已經有具有必要權限的使用者,則可以跳過此步驟。

以下範例使用 Alpha 作為 MinIO 部署的別名的預留位置。請將此值替換為您正在設定生命週期管理規則的 MinIO 部署的適當別名。請將密碼 LongRandomSecretKey 替換為符合貴組織密碼產生最佳實務的長、隨機且安全的密碼金鑰。

wget -O - https://minio.dev.org.tw/docs/minio/linux/examples/LifecycleManagementAdmin.json | \
mc admin policy create Alpha LifecycleAdminPolicy /dev/stdin
mc admin user add Alpha alphaLifecycleAdmin LongRandomSecretKey
mc admin policy attach Alpha LifecycleAdminPolicy --user=alphaLifecycleAdmin

此範例假設指定的別名在部署上具有建立原則和使用者的必要權限。請參閱使用者管理MinIO 基於原則的存取控制,以取得有關 MinIO 使用者和原則的更完整文件。

2) 設定遠端儲存層

使用mc ilm tier add指令將 Amazon S3 服務新增為新的遠端儲存層

mc ilm tier add s3 TARGET TIER_NAME  \
   --endpoint https://HOSTNAME       \
   --access-key ACCESS_KEY           \
   --secret-key SECRET_KEY           \
   --bucket BUCKET                   \
   --prefix PREFIX                   \
   --storage-class STORAGE_CLASS     \
   --region REGION

以上範例使用以下引數

引數

描述

TARGET

要設定 S3 遠端層的 MinIO 部署的別名

TIER_NAME

與新的 S3 遠端儲存層相關聯的名稱。以全部大寫的方式指定名稱,例如 S3_TIER。下一步需要此值。

HOSTNAME

S3 儲存後端的 URL 端點。

ACCESS_KEY

MinIO 用於存取儲存桶的 S3 存取金鑰。存取金鑰*必須*對應於具有必要權限的 IAM 使用者。

SECRET_KEY

指定 ACCESS_KEY 的對應密碼金鑰。

BUCKET

MinIO 將物件轉換到的 S3 儲存後端的儲存桶名稱。

PREFIX

MinIO 在其中轉換物件的可選儲存桶前綴。

MinIO 將所有已轉換的物件儲存在指定的 BUCKET 中,並使用每個部署獨有的前綴值。省略此引數以僅使用該值來隔離和組織遠端儲存中的資料。

MinIO 建議為包含其他資料 (包括來自其他 MinIO 部署的已轉換物件) 的遠端儲存層指定此可選前綴。此前綴應提供回溯至來源 MinIO 部署的清晰參考,以促進與診斷、維護或災難復原相關的操作。

STORAGE_CLASS

MinIO 將物件轉換到的 S3 儲存類別。

MinIO 的分層行為取決於遠端儲存在收到請求後立即(毫秒到秒)傳回物件。因此,MinIO *無法*支援需要重新水合、等待時間或人工干預的遠端儲存。

以下 S3 儲存類別符合 MinIO 作為遠端層的要求

  • STANDARD

  • STANDARD-IA

  • STANDARD-ONEZONE

省略此值以使用儲存桶的預設儲存類別。指定此值會覆寫儲存桶儲存類別。

如需更多資訊,請參閱使用 Amazon S3 儲存類別

REGION

指定 BUCKET 的 AWS S3 區域。如果 HOSTNAME 包含該區域,則可以安全地省略此選項。

3) 建立和套用轉換規則

使用mc ilm rule add指令來為儲存桶建立新的轉換規則。以下範例設定在指定日曆天數後進行轉換

mc ilm rule add ALIAS/BUCKET \
--transition-tier TIERNAME \
--transition-days DAYS \
--noncurrent-transition-days NONCURRENT_DAYS
--noncurrent-transition-tier TIERNAME

以上範例指定以下引數

引數

描述

ALIAS

指定您要為其建立生命週期管理規則的 MinIO 部署的別名

BUCKET

指定您要為其建立生命週期管理規則的儲存桶的完整路徑。

TIERNAME

MinIO 將物件轉換到的遠端儲存層。指定在上一步中建立的遠端儲存層名稱。

如果您想要將非當前物件版本轉換到不同的遠端層,請為--noncurrent-transition-tier指定不同的層名稱。

DAYS

MinIO 將物件標記為符合轉換資格的日曆天數。將天數指定為整數,例如 30 表示 30 天。

NONCURRENT_DAYS

MinIO 將非當前物件版本標記為符合轉換資格的日曆天數。MinIO 專門測量物件 *變成* 非當前之後的時間,而不是物件建立時間。將天數指定為整數,例如 90 表示 90 天。

省略此值以忽略非當前物件版本。

此選項對未版本化的儲存桶沒有影響。

4) 驗證轉換規則

使用mc ilm rule ls指令來檢閱已設定的轉換規則

mc ilm rule ls ALIAS/PATH --transition
  • ALIAS替換為 MinIO 部署的別名

  • PATH替換為要擷取已設定生命週期管理規則的儲存桶名稱。