文件

將物件從 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 儲存貯體,才能設定生命週期管理層或規則。

如果您設定了預設的 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 部署的佔位符 別名。請將此值替換為您正在設定生命週期管理規則的 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 部署的 別名

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 部署的 別名

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 替換為要檢索已設定生命週期管理規則的儲存桶名稱。