文件

將物件從 MinIO 轉移到 GCS

此頁面上的程序會建立新的物件生命週期管理規則,該規則會將物件從 MinIO 儲存貯體轉移到 Google Cloud Storage 後端的遠端儲存層。此程序支援諸如在特定時間段或日曆日期後將過時的資料移動到低成本公有雲儲存解決方案等用例。

需求

安裝和設定 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"
      }
   ]
}

所需的 GCS 權限

物件轉換生命週期管理規則需要在遠端儲存層上具有額外的權限。具體而言,MinIO 需要 GCS 憑證為遠端儲存桶提供讀取、寫入、列出和刪除權限。

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

遠端儲存桶必須存在

在使用該儲存桶作為目標來設定生命週期管理層或規則 _之前_,先建立遠端 GCS 儲存桶。

如果您設定預設的 GCS 儲存類別,則在您未指定定義遠端層時,MinIO 會使用該預設值 storage class。請務必記錄您的 GCS 儲存桶和 MinIO 分層設定,以避免任何潛在的混淆、錯誤設定或其他意外的結果。

注意事項

生命週期管理物件掃描器

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

遠端資料的獨佔存取權

MinIO _需要_ 獨佔存取權限才能存取遠端儲存層上轉換的資料。「熱」MinIO 來源上的物件中繼資料與「暖/冷」遠端層上的物件資料緊密連結。MinIO 無法在沒有遠端存取權的情況下擷取物件資料,也無法使用遠端還原來源上遺失的中繼資料。

所有對轉換物件的存取 _必須_ 僅通過 MinIO 透過 S3 API 操作進行。手動修改轉換的物件 - 無論是「熱」MinIO 層上的中繼資料 _或_ 遠端「暖/冷」層上的物件資料 - 都可能導致該物件資料遺失。

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

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

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

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

MinIO 建議為包含其他資料的遠端儲存層指定此可選前置詞,包括來自其他 MinIO 部署的轉換物件。本教學包含設定此前置詞的必要語法。

遠端資料的可用性

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

MinIO 會為每個轉換的物件建立中繼資料,以識別其在遠端儲存裝置上的位置。應用程式無法輕易地獨立於 MinIO 識別和存取轉換的物件。因此,轉換資料的可用性取決於 抹除編碼 和分散式部署拓樸為 MinIO 部署上的所有物件提供的相同核心保護。使用物件轉換不會提供任何額外的業務持續性或災難復原優勢。

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

程序

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

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

以下範例使用 Alpha 作為 MinIO 部署的佔位符 alias。將此值替換為您正在設定生命週期管理規則的 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 指令將新的 Google Cloud Storage 服務新增為遠端儲存層

mc ilm tier add gcs TARGET TIER_NAME \
   --bucket BUCKET \
   --prefix PREFIX \
   --credentials-file CREDENTIALS \
   --storage-class STORAGE_CLASS

上面的範例使用以下引數

引數

描述

TARGET

要設定 GCS 遠端層的 MinIO 部署的 alias

TIER_NAME

與新的 GCS 遠端儲存層相關聯的名稱。以全大寫指定名稱,例如 GCS_TIER。此值在下一步中為必要值。

BUCKET

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

PREFIX

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

MinIO 會將所有轉換的物件儲存在指定的 BUCKET 下,使用每個部署獨特的前置詞值。省略此引數以僅使用該值來隔離和整理遠端儲存裝置中的資料。

MinIO 建議為包含其他資料的遠端儲存層指定此可選前置詞,包括來自其他 MinIO 部署的轉換物件。此前置詞應提供對來源 MinIO 部署的明確參考,以方便與診斷、維護或災難復原相關的操作。

CREDENTIALS

遠端 GCS 層上使用者的 憑證檔案。指定的用戶憑證 _必須_ 對應於具有所需權限的 GCS 使用者。

STORAGE_CLASS

MinIO 套用至轉換到 GCS 儲存桶的物件的 GCS 儲存類別。

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

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

  • STANDARD

  • NEARLINE

  • COLDLINE

如需更多資訊,請參閱 GCS 儲存類別

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 部署的 alias

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 部署的 alias

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