Skip to main content
StorageGRID solutions and resources
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

StorageGRID 中的儲存桶生命週期

貢獻者 netapp-aronk

您可以建立S3生命週期組態、以控制何時從StorageGRID 作業系統刪除特定物件。

什麼是生命週期配置

生命週期組態是套用至特定S3儲存區中物件的一組規則。每個規則都會指定受影響的物件、以及這些物件何時到期(在特定日期或幾天之後)。

每個物件都遵循 S3 儲存區生命週期或 ILM 原則的保留設定。當 S3 貯體生命週期設定完成時、生命週期到期動作會覆寫符合貯體生命週期篩選器之物件的 ILM 原則。不符合貯體生命週期篩選器的物件、會使用 ILM 原則的保留設定。如果物件符合貯體生命週期篩選器、且未明確指定到期動作、則不會使用 ILM 原則的保留設定、而且會暗示物件版本會永遠保留。

因此、即使ILM規則中的放置指示仍套用至物件、也可能從網格中移除物件。或者,即使物件的任何 ILM 放置指令已經失效,物件仍可能保留在網格上

在生命週期組態中、支援多達1、000個生命週期規則。StorageGRID每個規則可包含下列XML元素:

  • 過期:在達到指定日期或達到指定天數時刪除物件、從擷取物件開始算起。

  • 非目前版本過期:在達到指定天數時刪除物件、從物件變成非目前的開始算起。

  • 篩選器(前置、標記)

  • 狀態 *ID

支援使用下列庫位作業來管理生命週期組態:StorageGRID

  • 刪除 BucketLifecycle

  • GetBucketLifecycleConfiguration

  • PuttBucketLifecycleConfiguration

生命週期策略的結構

建立生命週期組態的第一步、就是建立一個包含一或多個規則的Json檔案。例如、此Json檔案包含三個規則、如下所示:

  1. 規則 1 僅適用於與前綴 category1/ 相符且 key2 值為 tag2 的物件。 Expiration參數指定與該篩選條件相符的物件將於 2020 年 8 月 22 日午夜到期。

  2. 規則 2 僅適用於與前綴 category2/ 相符的物件。 Expiration參數指定與篩選器相符的物件將在提取後 100 天過期。

    警告 指定天數的規則是相對於擷取物件的時間。如果目前日期超過擷取日期加上天數、則在套用生命週期組態後、部分物件可能會立即從儲存庫中移除。
  3. 規則 3 僅適用於與前綴 category3/ 相符的物件。 Expiration參數指定符合物件的任何非目前版本將在變為非目前版本後 50 天過期。

{
	"Rules": [
        {
		    "ID": "rule1",
			"Filter": {
                "And": {
                    "Prefix": "category1/",
                    "Tags": [
                        {
                            "Key": "key2",
							"Value": "tag2"
                        }
                    ]
                }
            },
			"Expiration": {
                "Date": "2020-08-22T00:00:00Z"
            },
            "Status": "Enabled"
        },
		{
            "ID": "rule2",
			"Filter": {
                "Prefix": "category2/"
            },
			"Expiration": {
                "Days": 100
            },
            "Status": "Enabled"
        },
		{
            "ID": "rule3",
			"Filter": {
                "Prefix": "category3/"
            },
			"NoncurrentVersionExpiration": {
                "NoncurrentDays": 50
            },
            "Status": "Enabled"
        }
    ]
}

將生命週期組態套用至貯體

建立生命週期組態檔案之後、您可以發出 PuttBucketLifecycleConfiguration 要求、將其套用至儲存庫。

此要求會將範例檔案中的生命週期組態套用至名為的貯體中的物件 testbucket

aws s3api --endpoint-url <StorageGRID endpoint> put-bucket-lifecycle-configuration
--bucket testbucket --lifecycle-configuration file://bktjson.json

若要驗證已成功將生命週期組態套用至貯體、請發出 GetBucketLifecycleConfiguration 要求。例如:

aws s3api --endpoint-url <StorageGRID endpoint> get-bucket-lifecycle-configuration
 --bucket testbucket

標準(非版本化)儲存桶的生命週期策略範例

90 天後刪除對象

用例:此策略非常適合管理僅在有限時間內相關的數據,例如臨時文件、日誌或中間處理數據。優點:降低儲存成本並確保儲存桶整潔有序。

{
	"Rules": [
	  {
		"ID": "Delete after 90 day rule",
		"Filter": {},
		"Status": "Enabled",
		  "Expiration": {
			  "Days": 90
	    }
	  }
	]
}

版本控制儲存桶的生命週期策略範例

10 天後刪除非目前版本

使用案例:此策略有助於管理非當前版本物件的存儲,這些物件會隨著時間的推移而累積並佔用大量空間。優勢:透過僅保留最新版本來優化儲存空間利用率。

{
	"Rules": [
	        {
		"ID": "NoncurrentVersionExpiration 10 day rule",
		"Filter": {},
		"Status": "Enabled",
		  "NoncurrentVersionExpiration": {
			  "NoncurrentDays": 10
	   	}
    }
	]
}

保留 5 個非目前版本

使用案例:當您想要保留有限數量的先前版本以用於恢復或審計目的時很有用。好處:保留足夠的非當前版本以確保足夠的歷史記錄和復原點。

{
	"Rules": [
	  {
		"ID": "NewerNoncurrentVersions 5 version rule",
		"Filter": {},
		"Status": "Enabled",
		"NoncurrentVersionExpiration": {
		  	"NewerNoncurrentVersions": 5
	    }
    }
	]
}

當不存在其他版本時移除刪除標記

使用案例:此策略有助於管理所有非目前版本刪除後留下的刪除標記,這些標記會隨著時間的推移而累積。好處:減少不必要的混亂。

{
	"Rules": [
    {
		"ID": "Delete marker cleanup rule",
		"Filter": {},
		"Status": "Enabled",
		"Expiration": {
        "ExpiredObjectDeleteMarker": true
	  	}
    }
	]
}

30 天後刪除目前版本,60 天後刪除非目前版本,一旦不存在其他版本,則刪除目前版本所建立的刪除標記。

使用案例:為目前版本和非目前版本提供完整的生命週期,包括刪除標記。優點:降低儲存成本,確保儲存桶整潔有序,同時保留足夠的恢復點和歷史記錄。

{
  "Rules": [
    {
      "ID": "Delete current version",
      "Status": "Enabled",
      "Expiration": {
        "Days": 30
      },
    },
    {
      "ID": "noncurrent version retention",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 60
      }
    },
    {
      "ID": "Markers",
      "Status": "Enabled",
      "Expiration": {
        "ExpiredObjectDeleteMarker": true
      }
    }
  ]
}

刪除沒有其他版本並且已經存在 5 天的標記,為帶有「accounts_ 前綴」的物件保留 4 個非當前版本和至少 30 天的歷史記錄,為所有其他物件版本保留 2 個版本和至少 10 天的歷史記錄。

使用案例:為特定物件以及其他物件提供獨特的規則,以管理目前版本和非目前版本(包括刪除標記)的完整生命週期。優點:降低儲存成本,確保儲存桶整潔有序,同時保留足夠的恢復點和歷史記錄,以滿足各種客戶需求。

{
  "Rules": [
    {
      "ID": "Markers",
      "Status": "Enabled",
      "Expiration": {
        "Days": 5,
        "ExpiredObjectDeleteMarker": true
      },
    },
    {
      "ID": "accounts version retention",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NewerNoncurrentVersions": 4,
        "NoncurrentDays": 30
      },
      "Filter": {
          "Prefix":"account_"
      }
    },
    {
      "ID": "noncurrent version retention",
      "Status": "Enabled",
      "NoncurrentVersionExpiration": {
        "NewerNoncurrentVersions": 2,
        "NoncurrentDays": 10
      }
    }
  ]
}

結論

  • 定期檢視和更新生命週期政策,並使其與 ILM 和資料管理目標保持一致。

  • 在廣泛應用策略之前,先在非生產環境或儲存桶中測試策略,以確保其按預期工作

  • 使用描述性 ID 作為規則使其更直觀,因為邏輯結構可能變得複雜

  • 監控這些儲存桶生命週期策略對儲存使用情況和效能的影響,以做出必要的調整。